From 4201d351b44deea108bffa74ca61d4aa4c0a611e Mon Sep 17 00:00:00 2001 From: Panu Matilainen Date: Mon, 28 Apr 2008 21:58:26 +0300 Subject: [PATCH] Allocate buffer for %doc filenames dynamically --- build/files.c | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/build/files.c b/build/files.c index 10040c4..e6f5de0 100644 --- a/build/files.c +++ b/build/files.c @@ -837,10 +837,9 @@ static rpmRC parseForSimple(rpmSpec spec, Package pkg, char * buf, FileList fl, const char ** fileName) { char *s, *t; - int res, specialDoc = 0; - char specialDocBuf[BUFSIZ]; + int res; + char *specialDocBuf = NULL; - specialDocBuf[0] = '\0'; *fileName = NULL; res = RPMRC_OK; @@ -887,9 +886,7 @@ static rpmRC parseForSimple(rpmSpec spec, Package pkg, char * buf, if (*s != '/') { if (fl->currentFlags & RPMFILE_DOC) { - specialDoc = 1; - strcat(specialDocBuf, " "); - strcat(specialDocBuf, s); + rstrscat(&specialDocBuf, " ", s, NULL); } else if (fl->currentFlags & (RPMFILE_POLICY|RPMFILE_PUBKEY|RPMFILE_ICON)) { @@ -904,7 +901,7 @@ static rpmRC parseForSimple(rpmSpec spec, Package pkg, char * buf, } } - if (specialDoc) { + if (specialDocBuf) { if (*fileName || (fl->currentFlags & ~(RPMFILE_DOC))) { rpmlog(RPMLOG_ERR, _("Can't mix special %%doc with other forms: %s\n"), @@ -952,6 +949,7 @@ static rpmRC parseForSimple(rpmSpec spec, Package pkg, char * buf, appendStringBuf(pkg->specialDoc, specialDocBuf); appendLineStringBuf(pkg->specialDoc, " $DOCDIR"); } + free(specialDocBuf); } if (res != RPMRC_OK) { -- 2.7.4