From 13369a562f5cba34779e238b2d6ae0b683ff3b1e Mon Sep 17 00:00:00 2001 From: Mark Wielaard Date: Thu, 29 Jun 2017 13:26:26 +0200 Subject: [PATCH 53/54] Change mkattr to always create a %defattr with explicitly set modes. mkattr used "-" as default mode which would pick up the mode for files as they were on disk. This could cause files generated by rpmbuild to use a "non-standard" mode if umask was set by the user. Explitictly use 755 for directories and 644 for files to make builds independent of any umask settings. This works as is for both files and directories, so no file argument is necessary anymore. https://bugzilla.redhat.com/show_bug.cgi?id=1452893 https://bugzilla.redhat.com/show_bug.cgi?id=1458839 Signed-off-by: Mark Wielaard (cherry picked from commit 261ba91172ca1536eaa1d76e9cde58643b66c8f3) --- build/files.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/build/files.c b/build/files.c index e88a5d24d..29274926c 100644 --- a/build/files.c +++ b/build/files.c @@ -193,13 +193,12 @@ static void dupAttrRec(const AttrRec oar, AttrRec nar) *nar = *oar; /* struct assignment */ } -static char *mkattr(const char *fn) +/* Creates a default $defattr string. Can be used with argvAdd(). + Caller owns the new string which needs to be freed when done. */ +static char *mkattr(void) { char *s = NULL; - if (fn) - rasprintf(&s, "%s(-,%s,%s) %s", "%attr", "root", "root", fn); - else - rasprintf(&s, "%s(-,%s,%s)", "%defattr", "root", "root"); + rasprintf(&s, "%s(644,%s,%s,755)", "%defattr", "root", "root"); return s; } @@ -1829,7 +1828,7 @@ static int generateBuildIDs(FileList fl, ARGV_t *files) debugiddir = rpmGetPath(fl->buildRoot, DEBUG_ID_DIR, NULL); /* Make sure to reset all file flags to defaults. */ - attrstr = mkattr(NULL); + attrstr = mkattr(); argvAdd(files, attrstr); free (attrstr); @@ -2783,7 +2782,7 @@ static void filterDebuginfoPackage(rpmSpec spec, Package pkg, if (access(path, F_OK) == 0) { /* Append the file list preamble */ if (!files) { - char *attr = mkattr(NULL); + char *attr = mkattr(); argvAdd(&files, attr); argvAddDir(&files, DEBUG_LIB_DIR); free(attr); @@ -2843,7 +2842,7 @@ static int addDebugDwz(Package pkg, char *buildroot) rasprintf(&path, "%s%s", buildroot, DEBUG_DWZ_DIR); if (lstat(path, &sbuf) == 0 && S_ISDIR(sbuf.st_mode)) { if (!pkg->fileList) { - char *attr = mkattr(NULL); + char *attr = mkattr(); argvAdd(&pkg->fileList, attr); argvAddDir(&pkg->fileList, DEBUG_LIB_DIR); free(attr); @@ -2877,7 +2876,7 @@ static int addDebugSrc(Package pkg, char *buildroot) continue; rasprintf(&path, "%s/%s", DEBUG_SRC_DIR, de->d_name); if (!pkg->fileList) { - char *attr = mkattr(NULL); + char *attr = mkattr(); argvAdd(&pkg->fileList, attr); free(attr); } -- 2.13.2