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.
This commit is contained in:
jperkin 2023-09-04 19:51:19 +00:00
parent 3acd254c04
commit def71d1c1f
3 changed files with 17 additions and 8 deletions

View file

@ -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

View file

@ -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 <jperkin@pkgsrc.org>
SunOS-5.11-i386 <jperkin@pkgsrc.org>
SunOS-5.11-x86_64 <jperkin@pkgsrc.org>
libnbcompat-20230609 has been tested to build and install correctly
on the following operating systems:

View file

@ -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);