From 0d156d385e1e9c31bd5fb3652cf620a1f51c9b19 Mon Sep 17 00:00:00 2001 From: "dtucker@openbsd.org" Date: Tue, 16 Jun 2026 22:27:10 +0000 Subject: [PATCH] upstream: Factor out hex2bin into a shared helper function. Replace sscanf %hhx (which is C99) with plain %x for better compatibility in -portable. ok djm@ OpenBSD-Regress-ID: 4d30bb27ffdf2154f1a9f2317df18d256717b300 --- regress/unittests/crypto/test_ed25519.c | 10 +--------- regress/unittests/crypto/test_mldsa.c | 10 +--------- regress/unittests/crypto/test_mlkem.c | 10 +--------- regress/unittests/test_helper/test_helper.c | 16 +++++++++++++++- regress/unittests/test_helper/test_helper.h | 4 +++- 5 files changed, 21 insertions(+), 29 deletions(-) diff --git a/regress/unittests/crypto/test_ed25519.c b/regress/unittests/crypto/test_ed25519.c index 3f6a8196c..14d123832 100644 --- a/regress/unittests/crypto/test_ed25519.c +++ b/regress/unittests/crypto/test_ed25519.c @@ -1,4 +1,4 @@ -/* $OpenBSD: test_ed25519.c,v 1.2 2026/06/16 09:00:47 dtucker Exp $ */ +/* $OpenBSD: test_ed25519.c,v 1.3 2026/06/16 22:27:10 dtucker Exp $ */ /* * Regress test for Ed25519 keypair from seed * @@ -63,14 +63,6 @@ static const struct ed25519_kat ed25519_kats[] = { void ed25519_tests(void); -static void -hex2bin(uint8_t *bin, const char *hex, size_t len) -{ - size_t i; - for (i = 0; i < len; i++) - sscanf(hex + i * 2, "%02hhx", &bin[i]); -} - void ed25519_tests(void) { diff --git a/regress/unittests/crypto/test_mldsa.c b/regress/unittests/crypto/test_mldsa.c index d845c49d4..4cbe8d5f8 100644 --- a/regress/unittests/crypto/test_mldsa.c +++ b/regress/unittests/crypto/test_mldsa.c @@ -1,4 +1,4 @@ -/* $OpenBSD: test_mldsa.c,v 1.1 2026/06/14 04:08:06 djm Exp $ */ +/* $OpenBSD: test_mldsa.c,v 1.3 2026/06/16 22:27:10 dtucker Exp $ */ /* * Regress test for ML-DSA * @@ -82,14 +82,6 @@ free_kats(struct kat **kats, size_t nkats) free(kats); } -static void -hex2bin(uint8_t *bin, const char *hex, size_t len) -{ - size_t i; - for (i = 0; i < len; i++) - sscanf(hex + i * 2, "%02hhx", &bin[i]); -} - void mldsa_tests(void) { diff --git a/regress/unittests/crypto/test_mlkem.c b/regress/unittests/crypto/test_mlkem.c index 5d1b421f7..e9c41dc4f 100644 --- a/regress/unittests/crypto/test_mlkem.c +++ b/regress/unittests/crypto/test_mlkem.c @@ -1,4 +1,4 @@ -/* $OpenBSD: test_mlkem.c,v 1.1 2026/06/14 04:08:06 djm Exp $ */ +/* $OpenBSD: test_mlkem.c,v 1.2 2026/06/16 22:27:10 dtucker Exp $ */ /* * Regress test for ML-KEM * @@ -112,14 +112,6 @@ static const struct mlkem768_kat mlkem768_kats[] = { void mlkem_tests(void); -static void -hex2bin(uint8_t *bin, const char *hex, size_t len) -{ - size_t i; - for (i = 0; i < len; i++) - sscanf(hex + i * 2, "%02hhx", &bin[i]); -} - void mlkem_tests(void) { diff --git a/regress/unittests/test_helper/test_helper.c b/regress/unittests/test_helper/test_helper.c index 525a82b1f..f734b8f48 100644 --- a/regress/unittests/test_helper/test_helper.c +++ b/regress/unittests/test_helper/test_helper.c @@ -1,4 +1,4 @@ -/* $OpenBSD: test_helper.c,v 1.16 2026/03/06 06:57:33 dtucker Exp $ */ +/* $OpenBSD: test_helper.c,v 1.17 2026/06/16 22:27:10 dtucker Exp $ */ /* * Copyright (c) 2011 Damien Miller * @@ -662,6 +662,20 @@ tstod(const struct timespec *ts) return (double)ts->tv_sec + ((double)ts->tv_nsec / 1000000000.0); } +void +hex2bin(uint8_t *bin, const char *hex, size_t len) +{ + size_t i; + unsigned int v; + + /* Don't use %hhx since it's C99 and older platforms don't have it. */ + for (i = 0; i < len; i++) { + sscanf(hex + i * 2, "%02x", &v); + ASSERT_U_INT_LE(v, 256); + bin[i] = (uint8_t)v; + } +} + void bench_start(const char *file, int line, const char *name) { diff --git a/regress/unittests/test_helper/test_helper.h b/regress/unittests/test_helper/test_helper.h index 91fdca435..9cfc41553 100644 --- a/regress/unittests/test_helper/test_helper.h +++ b/regress/unittests/test_helper/test_helper.h @@ -1,4 +1,4 @@ -/* $OpenBSD: test_helper.h,v 1.12 2026/03/06 06:57:33 dtucker Exp $ */ +/* $OpenBSD: test_helper.h,v 1.13 2026/06/16 22:27:10 dtucker Exp $ */ /* * Copyright (c) 2011 Damien Miller * @@ -39,6 +39,8 @@ typedef void (test_onerror_func_t)(void *); void tests(void); void benchmarks(void); +void hex2bin(uint8_t *, const char *, size_t); + const char *test_data_file(const char *name); void test_start(const char *n); void test_info(char *s, size_t len); -- 2.47.3