Fix potential buffer overflow in macro findEntry()
authorPanu Matilainen <pmatilai@redhat.com>
Mon, 27 Aug 2007 06:51:52 +0000 (09:51 +0300)
committerPanu Matilainen <pmatilai@redhat.com>
Mon, 27 Aug 2007 06:51:52 +0000 (09:51 +0300)
Avoid static buffer, we know the size...
(transplanted from 8f1561181ab7e3570e2bc05a8741ae13c74b18df)

rpmio/macro.c

index 3c2070d..6dc173f 100644 (file)
@@ -253,7 +253,7 @@ findEntry(MacroContext mc, const char * name, size_t namelen)
 {
     MacroEntry key, *ret;
     struct MacroEntry_s keybuf;
-    char namebuf[1024];
+    char *namebuf = NULL;
 
 /*@-globs@*/
     if (mc == NULL) mc = rpmGlobalMacroContext;
@@ -263,6 +263,8 @@ findEntry(MacroContext mc, const char * name, size_t namelen)
 
 /*@-branchstate@*/
     if (namelen > 0) {
+       namebuf = alloca(namelen + 1);
+       memset(namebuf, 0, (namelen + 1));
        strncpy(namebuf, name, namelen);
        namebuf[namelen] = '\0';
        name = namebuf;