On Mon, Nov 7, 2022 at 2:34 PM James Carter <jwcart2@xxxxxxxxx> wrote: > > 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> > Merged. Thanks, Jim > > --- > > 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 > >