
On Thu, May 09, 2024 at 02:28:15PM GMT, Peter Krempa wrote:
On Thu, May 02, 2024 at 19:39:41 +0200, Andrea Bolognani wrote:
+static bool +virFileIsSharedFSOverride(const char *path, + char *const *overrides) +{ + g_autofree char *dirpath = NULL; + char *p = NULL; + + if (!path || path[0] != '/' || !overrides) + return false;
Per my comment on canonicalizing paths only when they're about to be used.
Gotcha.
I think you can also modify the algorithm to avoid the truncate&compare operations to:
foreach override in overrides:
pc = canonicalize(path); po = canonicalize(override);
if (STRPREFIX(pc, po)) return true;
I'll give it a try.
Checking the full prefix on canonicalized paths is IIUC equivalent to what you do below. (Okay perhaps except the case when user declares a full to a single file as an exported override).
That isn't supposed to work anyway... If the current code allows it then it will need to be fixed. -- Andrea Bolognani / Red Hat / Virtualization