Re: [PATCH] libselinux/utils: update getdefaultcon

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

 



On Thu, Nov 2, 2023 at 11:42 AM James Carter <jwcart2@xxxxxxxxx> wrote:
>
> On Wed, Nov 1, 2023 at 12:38 PM Christian Göttsche
> <cgzones@xxxxxxxxxxxxxx> wrote:
> >
> > * mention -r <role> and -v command line options in usage string
> > * use distinct error messages on getseuser(3) and
> >   get_default_context_with_[role]level(3) failure
> > * always print program name on error
> > * drop unnecessary double parenthesis
> >
> > Signed-off-by: Christian Göttsche <cgzones@xxxxxxxxxxxxxx>
>
> Acked-by: James Carter <jwcart2@xxxxxxxxx>
>

Merged.
Thanks,
Jim

> > ---
> >  libselinux/utils/getdefaultcon.c | 40 ++++++++++++++++++--------------
> >  1 file changed, 23 insertions(+), 17 deletions(-)
> >
> > diff --git a/libselinux/utils/getdefaultcon.c b/libselinux/utils/getdefaultcon.c
> > index 93102e5e..50f1ea91 100644
> > --- a/libselinux/utils/getdefaultcon.c
> > +++ b/libselinux/utils/getdefaultcon.c
> > @@ -11,7 +11,7 @@
> >
> >  static __attribute__ ((__noreturn__)) void usage(const char *name, const char *detail, int rc)
> >  {
> > -       fprintf(stderr, "usage:  %s [-l level] [-s service] user [fromcon]\n", name);
> > +       fprintf(stderr, "usage:  %s [-r role] [-l level] [-s service] [-v] user [fromcon]\n", name);
> >         if (detail)
> >                 fprintf(stderr, "%s:  %s\n", name, detail);
> >         exit(rc);
> > @@ -60,9 +60,9 @@ int main(int argc, char **argv)
> >         user = argv[optind];
> >
> >         /* If a context wasn't passed, use the current context. */
> > -       if (((argc - optind) < 2)) {
> > +       if ((argc - optind) < 2) {
> >                 if (getcon(&cur_context) < 0) {
> > -                       fprintf(stderr, "Couldn't get current context:  %s\n", strerror(errno));
> > +                       fprintf(stderr, "%s:  couldn't get current context:  %s\n", argv[0], strerror(errno));
> >                         return 2;
> >                 }
> >         } else
> > @@ -73,23 +73,29 @@ int main(int argc, char **argv)
> >                 return 3;
> >         }
> >
> > -       if ((ret = getseuser(user, service, &seuser, &dlevel)) == 0) {
> > -               if (! level) level=dlevel;
> > -               if (role != NULL && role[0])
> > -                       ret=get_default_context_with_rolelevel(seuser, role, level,cur_context,&usercon);
> > -               else
> > -                       ret=get_default_context_with_level(seuser, level, cur_context,&usercon);
> > +       ret = getseuser(user, service, &seuser, &dlevel);
> > +       if (ret) {
> > +               fprintf(stderr, "%s:  failed to get seuser:  %s\n", argv[0], strerror(errno));
> > +               goto out;
> >         }
> > -       if (ret < 0)
> > -               perror(argv[0]);
> > -       else {
> > -               if (verbose) {
> > -                       printf("%s: %s from %s %s %s %s -> %s\n", argv[0], user, cur_context, seuser, role, level, usercon);
> > -               } else {
> > -                       printf("%s\n", usercon);
> > -               }
> > +
> > +       if (! level) level=dlevel;
> > +       if (role != NULL && role[0])
> > +               ret = get_default_context_with_rolelevel(seuser, role, level, cur_context, &usercon);
> > +       else
> > +               ret = get_default_context_with_level(seuser, level, cur_context, &usercon);
> > +       if (ret) {
> > +               fprintf(stderr, "%s:  failed to get default context:  %s\n", argv[0], strerror(errno));
> > +               goto out;
> > +       }
> > +
> > +       if (verbose) {
> > +               printf("%s: %s from %s %s %s %s -> %s\n", argv[0], user, cur_context, seuser, role, level, usercon);
> > +       } else {
> > +               printf("%s\n", usercon);
> >         }
> >
> > +out:
> >         free(role);
> >         free(seuser);
> >         if (level != dlevel) free(level);
> > --
> > 2.42.0
> >




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

  Powered by Linux