teknoraver / rpms / rpm

Forked from rpms/rpm 4 months ago
Clone

Blame rpm-4.11.90-expand-load-arg.patch

Panu Matilainen 7674f0
commit d4ab1d82d7888f41b866751d0ef340a82be7cff2
Panu Matilainen 7674f0
Author: Panu Matilainen <pmatilai@redhat.com>
Panu Matilainen 7674f0
Date:   Tue Jul 1 12:04:40 2014 +0300
Panu Matilainen 7674f0
Panu Matilainen 7674f0
    Macro-expand %{load:...} argument to make the thing more useful...
Panu Matilainen 7674f0
Panu Matilainen 7674f0
diff --git a/rpmio/macro.c b/rpmio/macro.c
Panu Matilainen 7674f0
index b00155c..1d9bd1c 100644
Panu Matilainen 7674f0
--- a/rpmio/macro.c
Panu Matilainen 7674f0
+++ b/rpmio/macro.c
Panu Matilainen 7674f0
@@ -1093,16 +1093,15 @@ expandMacro(MacroBuf mb, const char *src, size_t slen)
Panu Matilainen 7674f0
 
Panu Matilainen 7674f0
 	/* Expand builtin macros */
Panu Matilainen 7674f0
 	if (STREQ("load", f, fn)) {
Panu Matilainen 7674f0
-		if (g && gn > 0) {
Panu Matilainen 7674f0
-			char arg[gn + 1];
Panu Matilainen 7674f0
-			strncpy(arg, g, gn);
Panu Matilainen 7674f0
-			arg[gn] = '\0';
Panu Matilainen 7674f0
+		char *arg = NULL;
Panu Matilainen 7674f0
+		if (g && gn > 0 && expandThis(mb, g, gn, &arg) == 0) {
Panu Matilainen 7674f0
 			/* Print failure iff %{load:...} or %{!?load:...} */
Panu Matilainen 7674f0
 			if (loadMacroFile(mb->mc, arg) && chkexist == negate) {
Panu Matilainen 7674f0
 				rpmlog(RPMLOG_ERR,
Panu Matilainen 7674f0
 				       _("failed to load macro file %s"), arg);
Panu Matilainen 7674f0
 			}
Panu Matilainen 7674f0
 		}
Panu Matilainen 7674f0
+		free(arg);
Panu Matilainen 7674f0
 		s = se;
Panu Matilainen 7674f0
 		continue;
Panu Matilainen 7674f0
 	}