--- rpm-4.4.8/rpmio/macro.c.orig 2007-01-21 21:37:58.000000000 +0100 +++ rpm-4.4.8/rpmio/macro.c 2007-04-08 19:50:49.214644921 +0200 @@ -942,7 +942,8 @@ /*@globals rpmGlobalMacroContext @*/ /*@modifies mb, rpmGlobalMacroContext @*/ { - char buf[BUFSIZ], *b, *be; + static char buf[BUFSIZ]; + char *b, *be; char aname[16]; const char *opts, *o; int argc = 0; @@ -1850,7 +1851,7 @@ return 0; if (mc == NULL) mc = rpmGlobalMacroContext; - tbuf = alloca(slen + 1); + tbuf = xmalloc(slen + 1); memset(tbuf, 0, (slen + 1)); mb->s = sbuf; @@ -1870,6 +1871,7 @@ rpmError(RPMERR_BADSPEC, _("Macro expansion too big for target buffer\n")); else strncpy(sbuf, tbuf, (slen - mb->nb + 1)); + free(tbuf); return rc; } @@ -2308,7 +2310,7 @@ const char * rpmGetPath(const char *path, ...) { - char buf[BUFSIZ]; + static char buf[BUFSIZ]; const char * s; char * t, * te; va_list ap;