From 36d99b08a5d196236821a4fd869d1c7d615ffa5d Mon Sep 17 00:00:00 2001 From: Xin LI Date: Fri, 10 Apr 2015 17:21:47 +0000 Subject: [PATCH] For reasons that I am not understand yet, using the libmd version of SHA256 would make libarchive based application to give: archive_read_extract(): Lzma library error: Corrupted input data (Internally this is LZMA_DATA_ERR) However, the libmd version of SHA256 is supposed to give same result as the bundled version do, and xz(1) is not affected. As a precaution, revert the SHA256 portion of r281316 for now until we figure out why it breaks libarchive interoperability as we can't yet rule out this change have introduced an ABI breakage. --- lib/liblzma/Makefile | 5 +++-- lib/liblzma/Symbol.map | 3 +++ lib/liblzma/config.h | 9 ++++++--- 3 files changed, 12 insertions(+), 5 deletions(-) diff --git a/lib/liblzma/Makefile b/lib/liblzma/Makefile index 9c4b1d8abcc5..39b929fd1f80 100644 --- a/lib/liblzma/Makefile +++ b/lib/liblzma/Makefile @@ -77,7 +77,8 @@ SRCS+= common.c \ .PATH: ${LZMADIR}/check SRCS+= check.c \ crc32_table.c \ - crc64_table.c + crc64_table.c \ + sha256.c .if defined(MACHINE_ARCH) && ${MACHINE_ARCH} == "i386" SRCS+= crc32_x86.S \ crc64_x86.S @@ -145,7 +146,7 @@ CFLAGS+= -DHAVE_CONFIG_H \ -I${LZMADIR}/simple \ -I${LZMADIR}/../common -LIBADD+= md pthread +LIBADD+= pthread VERSION_DEF= ${.CURDIR}/Versions.def SYMBOL_MAPS= ${.CURDIR}/Symbol.map diff --git a/lib/liblzma/Symbol.map b/lib/liblzma/Symbol.map index f49f29f24987..c2976253b979 100644 --- a/lib/liblzma/Symbol.map +++ b/lib/liblzma/Symbol.map @@ -180,6 +180,9 @@ XZprivate_1.0 { lzma_raw_coder_memusage; lzma_raw_decoder_init; lzma_raw_encoder_init; + lzma_sha256_finish; + lzma_sha256_init; + lzma_sha256_update; lzma_simple_arm_decoder_init; lzma_simple_arm_encoder_init; lzma_simple_armthumb_decoder_init; diff --git a/lib/liblzma/config.h b/lib/liblzma/config.h index 44bc02c45b24..1d0f0bc7a692 100644 --- a/lib/liblzma/config.h +++ b/lib/liblzma/config.h @@ -203,13 +203,16 @@ /* #undef HAVE_SHA256INIT */ /* Define to 1 if the system has the type `SHA256_CTX'. */ -#define HAVE_SHA256_CTX 1 +/* FreeBSD - disabled libmd SHA256 for now */ +/* #undef HAVE_SHA256_CTX */ /* Define to 1 if you have the header file. */ -#define HAVE_SHA256_H 1 +/* FreeBSD - disabled libmd SHA256 for now */ +/* #undef HAVE_SHA256_H */ /* Define to 1 if you have the `SHA256_Init' function. */ -#define HAVE_SHA256_INIT 1 +/* FreeBSD - disabled libmd SHA256 for now */ +/* #undef HAVE_SHA256_INIT */ /* Define to 1 if the system has the type `SHA2_CTX'. */ /* #undef HAVE_SHA2_CTX */