On Mon, Oct 31, 2022 at 12:51 PM Vit Mojzis <vmojzis@xxxxxxxxxx> wrote: > > Currently "-i" only ignores a file whose parent directory exists. Start also > ignoring paths with missing components. > > Fixes: > # restorecon -i -v -R /var/log/missingdir/missingfile; echo $? > 255 > restorecon: SELinux: Could not get canonical path for /var/log/missingdir/missingfile restorecon: No such file or directory. > > Signed-off-by: Vit Mojzis <vmojzis@xxxxxxxxxx> Acked-by: James Carter <jwcart2@xxxxxxxxx> > --- > libselinux/src/selinux_restorecon.c | 7 +++++++ > 1 file changed, 7 insertions(+) > > diff --git a/libselinux/src/selinux_restorecon.c b/libselinux/src/selinux_restorecon.c > index 2d24559f..6b5f6921 100644 > --- a/libselinux/src/selinux_restorecon.c > +++ b/libselinux/src/selinux_restorecon.c > @@ -1108,6 +1108,10 @@ static int selinux_restorecon_common(const char *pathname_orig, > pathname = realpath(pathname_orig, NULL); > if (!pathname) { > free(basename_cpy); > + /* missing parent directory */ > + if (state.flags.ignore_noent && errno == ENOENT) { > + return 0; > + } > goto realpatherr; > } > } else { > @@ -1121,6 +1125,9 @@ static int selinux_restorecon_common(const char *pathname_orig, > free(dirname_cpy); > if (!pathdnamer) { > free(basename_cpy); > + if (state.flags.ignore_noent && errno == ENOENT) { > + return 0; > + } > goto realpatherr; > } > if (!strcmp(pathdnamer, "/")) > -- > 2.37.3 >