From def71d1c1f988e3a2cf3bb86716a2937ce6f48fc Mon Sep 17 00:00:00 2001 From: jperkin Date: Mon, 4 Sep 2023 19:51:19 +0000 Subject: [PATCH] libnbcompat: Update to 20230904. Pull in changes from revision 1.13 of NetBSD sha2.c from 14 years ago to fix type punning issues seen with newer GCCs. Fixes "pkg_admin digest" on SmartOS with GCC 12, where the output was completely wrong, causing bulk builds to rebuild every package every time now that USE_PKG_ADMIN_DIGEST=yes is the default. --- pkgtools/libnbcompat/Makefile | 5 ++--- pkgtools/libnbcompat/files/README | 9 ++++++++- pkgtools/libnbcompat/files/sha2.c | 11 +++++++---- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/pkgtools/libnbcompat/Makefile b/pkgtools/libnbcompat/Makefile index 73470ad86a96..a4592249c39a 100644 --- a/pkgtools/libnbcompat/Makefile +++ b/pkgtools/libnbcompat/Makefile @@ -1,12 +1,11 @@ -# $NetBSD: Makefile,v 1.90 2023/06/27 09:31:09 riastradh Exp $ +# $NetBSD: Makefile,v 1.91 2023/09/04 19:51:19 jperkin Exp $ # # NOTE: If you update this package, it is *mandatory* that you update # pkgsrc/pkgtools/libnbcompat/files/README to reflect the actual # list of tested and supported platforms. # -PKGNAME= libnbcompat-20230609 -PKGREVISION= 1 +PKGNAME= libnbcompat-20230904 CATEGORIES= pkgtools devel MAINTAINER= pkgsrc-users@NetBSD.org diff --git a/pkgtools/libnbcompat/files/README b/pkgtools/libnbcompat/files/README index e02284425b1a..c2dc02fb05ad 100644 --- a/pkgtools/libnbcompat/files/README +++ b/pkgtools/libnbcompat/files/README @@ -1,4 +1,4 @@ -$NetBSD: README,v 1.27 2023/06/27 09:31:09 riastradh Exp $ +$NetBSD: README,v 1.28 2023/09/04 19:51:19 jperkin Exp $ 0 Introduction ============== @@ -44,6 +44,13 @@ breakage seep in. Proper methodology for updating this package is: *NOTE* the most recent libnbcompat. *NOTE* +libnbcompat-20230904 has been tested to build and install correctly +on the following operating systems: + + Darwin-22.6.0-aarch64 + SunOS-5.11-i386 + SunOS-5.11-x86_64 + libnbcompat-20230609 has been tested to build and install correctly on the following operating systems: diff --git a/pkgtools/libnbcompat/files/sha2.c b/pkgtools/libnbcompat/files/sha2.c index f48407f0d95b..06f128096d8b 100644 --- a/pkgtools/libnbcompat/files/sha2.c +++ b/pkgtools/libnbcompat/files/sha2.c @@ -1,4 +1,4 @@ -/* $NetBSD: sha2.c,v 1.8 2011/11/08 18:20:03 joerg Exp $ */ +/* $NetBSD: sha2.c,v 1.9 2023/09/04 19:51:19 jperkin Exp $ */ /* $KAME: sha2.c,v 1.9 2003/07/20 00:28:38 itojun Exp $ */ /* @@ -568,7 +568,8 @@ void SHA256_Final(sha2_byte digest[], SHA256_CTX* context) { *context->buffer = 0x80; } /* Set the bit count: */ - *(sha2_word64*)(void *)&context->buffer[SHA256_SHORT_BLOCK_LENGTH] = context->bitcount; + memcpy(&context->buffer[SHA256_SHORT_BLOCK_LENGTH], + &context->bitcount, sizeof(context->bitcount)); /* Final transform: */ SHA256_Transform(context, (sha2_word32*)(void *)context->buffer); @@ -871,8 +872,10 @@ static void SHA512_Last(SHA512_CTX* context) { *context->buffer = 0x80; } /* Store the length of input data (in bits): */ - *(sha2_word64*)(void *)&context->buffer[SHA512_SHORT_BLOCK_LENGTH] = context->bitcount[1]; - *(sha2_word64*)(void *)&context->buffer[SHA512_SHORT_BLOCK_LENGTH+8] = context->bitcount[0]; + memcpy(&context->buffer[SHA512_SHORT_BLOCK_LENGTH], + &context->bitcount[1], sizeof(context->bitcount[1])); + memcpy(&context->buffer[SHA512_SHORT_BLOCK_LENGTH + 8], + &context->bitcount[0], sizeof(context->bitcount[0])); /* Final transform: */ SHA512_Transform(context, (sha2_word64*)(void *)context->buffer);