Re: [PATCH] libselinux: Ignore missing directories when -i is used

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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
>



[Index of Archives]     [Selinux Refpolicy]     [Linux SGX]     [Fedora Users]     [Fedora Desktop]     [Yosemite Photos]     [Yosemite Camping]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux