[PATCH] util: avoid overflow in hextable buffer

Daniel P. Berrangé posted 1 patch 15 hours ago
src/util/virsystemd.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
[PATCH] util: avoid overflow in hextable buffer
Posted by Daniel P. Berrangé 15 hours ago
The assigned string is 17 chars long once the trailing nul is taken
into account. This triggers a warning with GCC 15

 src/util/virsystemd.c: In function ‘virSystemdEscapeName’:
 src/util/virsystemd.c:59:38: error: initializer-string for array of ‘char’ is too long [-Werror=unterminated-string-initialization]
    59 |     static const char hextable[16] = "0123456789abcdef";
       |                                      ^~~~~~~~~~~~~~~~~~

Switch to a dynamically sized array as used in all the other places
we have a hextable array.

See also: https://gcc.gnu.org/PR115185
Reported-by: Yaakov Selkowitz <yselkowi@redhat.com>
Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
---
 src/util/virsystemd.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/util/virsystemd.c b/src/util/virsystemd.c
index 5b772e29dd..d46e5f74fc 100644
--- a/src/util/virsystemd.c
+++ b/src/util/virsystemd.c
@@ -56,7 +56,7 @@ struct _virSystemdActivationEntry {
 static void virSystemdEscapeName(virBuffer *buf,
                                  const char *name)
 {
-    static const char hextable[16] = "0123456789abcdef";
+    static const char hextable[] = "0123456789abcdef";
 
 #define ESCAPE(c) \
     do { \
-- 
2.47.1
Re: [PATCH] util: avoid overflow in hextable buffer
Posted by Pavel Hrdina 15 hours ago
On Mon, Jan 20, 2025 at 10:09:24AM +0000, Daniel P. Berrangé wrote:
> The assigned string is 17 chars long once the trailing nul is taken
> into account. This triggers a warning with GCC 15
> 
>  src/util/virsystemd.c: In function ‘virSystemdEscapeName’:
>  src/util/virsystemd.c:59:38: error: initializer-string for array of ‘char’ is too long [-Werror=unterminated-string-initialization]
>     59 |     static const char hextable[16] = "0123456789abcdef";
>        |                                      ^~~~~~~~~~~~~~~~~~
> 
> Switch to a dynamically sized array as used in all the other places
> we have a hextable array.
> 
> See also: https://gcc.gnu.org/PR115185
> Reported-by: Yaakov Selkowitz <yselkowi@redhat.com>
> Signed-off-by: Daniel P. Berrangé <berrange@redhat.com>
> ---
>  src/util/virsystemd.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)

Reviewed-by: Pavel Hrdina <phrdina@redhat.com>