@dmnks commented on this pull request.


> @@ -633,7 +633,17 @@ assert(otherFi != NULL);
                rConflicts = handleColorConflict(ts, fs, fi, i,
                                                otherFs, otherFi, otherFileNum);
 
-               if (rConflicts && reportConflicts) {
+               /*
+                * This may be a false positive (two separate files) if a
+                * symlink is being replaced by a directory in one of these two
+                * paths.  This check extends the one for removal conflicts in
+                * handleInstInstalledFile().
+                */
+               int reportThis = !(p == otherTe &&
+                                  rpmtsFlags(ts) & RPMTRANS_FLAG_TEST &&
+                                  rpmteHaveTransScript(p, RPMTAG_PRETRANS));

Unfortunately, that's the case, yes. I contemplated adding a specific check for 
the link -> dir case, but I thought it would be a bit more complicated, since 
you would have to iterate through each path component and check what its 
original vs. new status is. It could certainly be done and might not even be 
that difficult after all, but there's one catch that immediately comes to mind, 
which is - what happens if there are multiple such symlink replacements in the 
path? Stuff like that...

Basically what this patch does is it effectively *disables* the check for all 
self-conflicts within the same package, during test transactions (provided that 
there also is a %pretrans, but still). So, the worst that can happen if the 
check detects a valid conflict is that the test transaction passes silently and 
we only fail before the real one. Given that such self-conflicts are *probably* 
(I've got no hard data for that claim) pretty rare, it doesn't seem too 
dangerous. But sure, there is certain risk...

-- 
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/rpm-software-management/rpm/pull/1684#discussion_r634396082
_______________________________________________
Rpm-maint mailing list
Rpm-maint@lists.rpm.org
http://lists.rpm.org/mailman/listinfo/rpm-maint

Reply via email to