File safesymlinks.diff of Package python-rpm.13383

--- ./lib/fsm.c.orig	2018-06-15 11:15:50.320133057 +0000
+++ ./lib/fsm.c	2018-06-15 11:15:56.240118124 +0000
@@ -653,7 +653,7 @@ static int fsmUtime(const char *path, mo
     return rc;
 }
 
-static int fsmVerify(const char *path, rpmfi fi, const struct stat *fsb)
+static int fsmVerify(const char *path, rpmfi fi)
 {
     int rc;
     int saveerrno = errno;
@@ -684,7 +684,7 @@ static int fsmVerify(const char *path, r
             if (rc) return rc;
             errno = saveerrno;
 	    /* Only permit directory symlinks by target owner and root */
-            if (S_ISDIR(dsb.st_mode) && (luid == 0 || luid == fsb->st_uid))
+            if (S_ISDIR(dsb.st_mode) && (luid == 0 || luid == dsb.st_uid))
 		    return 0;
         }
     } else if (S_ISLNK(mode)) {
@@ -928,7 +928,7 @@ int rpmPackageFilesInstall(rpmts ts, rpm
 	    }
 	    /* Assume file does't exist when tmp suffix is in use */
 	    if (!suffix) {
-		rc = fsmVerify(fpath, fi, &sb);
+		rc = fsmVerify(fpath, fi);
 	    } else {
 		rc = (action == FA_TOUCH) ? 0 : RPMERR_ENOENT;
 	    }
--- ./lib/verify.c.orig	2018-06-15 11:16:03.904098773 +0000
+++ ./lib/verify.c	2018-06-15 11:23:42.842941766 +0000
@@ -98,11 +98,8 @@ rpmVerifyAttrs rpmfilesVerify(rpmfiles f
 	struct stat dsb;
 	/* ...if it actually points to a directory  */
 	if (stat(fn, &dsb) == 0 && S_ISDIR(dsb.st_mode)) {
-	    uid_t fuid;
 	    /* ...and is by a legit user, to match fsmVerify() behavior */
-	    if (sb.st_uid == 0 ||
-			(rpmugUid(rpmfilesFUser(fi, ix), &fuid) == 0 &&
-			 sb.st_uid == fuid)) {
+	    if (sb.st_uid == 0 || sb.st_uid == dsb.st_uid) {
 		sb = dsb; /* struct assignment */
 	    }
 	}
openSUSE Build Service is sponsored by