In a testdir of all crypto modules:
CC gc-gnulib.o
gc-gnulib.c: In function ‘gc_cipher_setkey’:
gc-gnulib.c:293:45: warning: format ‘%x’ expects argument of type ‘unsigned
int’, but argument 3 has type ‘int’ [-Wformat=]
293 | sprintf (&keyMaterial[2 * i], "%02x", key[i] & 0xFF);
| ~~~^ ~~~~~~~~~~~~~
| | |
| | int
| unsigned int
| %02x
gc-gnulib.c: In function ‘gc_cipher_setiv’:
gc-gnulib.c:351:48: warning: format ‘%x’ expects argument of type ‘unsigned
int’, but argument 3 has type ‘int’ [-Wformat=]
351 | sprintf (&ivMaterial[2 * i], "%02x", iv[i] & 0xFF);
| ~~~^ ~~~~~~~~~~~~
| | |
| | int
| unsigned int
| %02x
This is harmless, but I like having -Wformat enabled sometimes.
Therefore I have pushed the attached patch to add casts to silence this.
Collin
>From f02f52cac5699af5e996034bcc40b1e5944ecf94 Mon Sep 17 00:00:00 2001
Message-ID: <f02f52cac5699af5e996034bcc40b1e5944ecf94.1748284664.git.collin.fu...@gmail.com>
From: Collin Funk <[email protected]>
Date: Mon, 26 May 2025 11:27:34 -0700
Subject: [PATCH] crypto/gc: Pacify -Wformat warnings.
* lib/gc-gnulib.c (gc_cipher_setkey, gc_cipher_setiv): Cast the argument
since "%02x" expects the argument to be unsigned.
---
ChangeLog | 6 ++++++
lib/gc-gnulib.c | 6 ++++--
2 files changed, 10 insertions(+), 2 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index bf5b782640..f90d007c30 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2025-05-26 Collin Funk <[email protected]>
+
+ crypto/gc: Pacify -Wformat warnings.
+ * lib/gc-gnulib.c (gc_cipher_setkey, gc_cipher_setiv): Cast the argument
+ since "%02x" expects the argument to be unsigned.
+
2025-05-25 Bruno Haible <[email protected]>
stddef-h tests: Add more C++ tests.
diff --git a/lib/gc-gnulib.c b/lib/gc-gnulib.c
index 4eaf9a7656..85b7a62b74 100644
--- a/lib/gc-gnulib.c
+++ b/lib/gc-gnulib.c
@@ -290,7 +290,8 @@ gc_cipher_setkey (gc_cipher_handle handle, size_t keylen, const char *key)
char keyMaterial[RIJNDAEL_MAX_KEY_SIZE + 1];
for (i = 0; i < keylen; i++)
- sprintf (&keyMaterial[2 * i], "%02x", key[i] & 0xFF);
+ sprintf (&keyMaterial[2 * i], "%02x",
+ (unsigned int) (key[i] & 0xFF));
rc = rijndaelMakeKey (&ctx->aesEncKey, RIJNDAEL_DIR_ENCRYPT,
keylen * 8, keyMaterial);
@@ -348,7 +349,8 @@ gc_cipher_setiv (gc_cipher_handle handle, size_t ivlen, const char *iv)
char ivMaterial[2 * RIJNDAEL_MAX_IV_SIZE + 1];
for (i = 0; i < ivlen; i++)
- sprintf (&ivMaterial[2 * i], "%02x", iv[i] & 0xFF);
+ sprintf (&ivMaterial[2 * i], "%02x",
+ (unsigned int) (iv[i] & 0xFF));
rc = rijndaelCipherInit (&ctx->aesContext, RIJNDAEL_MODE_CBC,
ivMaterial);
--
2.49.0