On 04/16/2015 11:22 AM, Petr Lautrbach wrote: > A spec file was incorrectly stored as rootpath when -r option was used > > Fixes: > /sbin/setfiles: /tmp/install_root is not located in /etc/selinux/targeted/contexts/files/file_contexts > > Signed-off-by: Petr Lautrbach <plautrba@xxxxxxxxxx> Thanks, applied. > --- > > This patch is based on the patch from Dan Walsh [1]. Furthermore it fixes problem with using argv[optind] and use > optarg instead. It was discovered in Fedora bug #1211721 [2] > > [1] https://github.com/fedora-selinux/selinux/commit/f907db936ed038bf794a0145fed05cf3f828f1a1 > [2] https://bugzilla.redhat.com/show_bug.cgi?id=1211721 > > policycoreutils/setfiles/setfiles.c | 14 +++++++------- > 1 file changed, 7 insertions(+), 7 deletions(-) > > diff --git a/policycoreutils/setfiles/setfiles.c b/policycoreutils/setfiles/setfiles.c > index 86d3f28..9ac3ebd 100644 > --- a/policycoreutils/setfiles/setfiles.c > +++ b/policycoreutils/setfiles/setfiles.c > @@ -153,6 +153,9 @@ int main(int argc, char **argv) > int recurse; /* Recursive descent. */ > const char *base; > int mass_relabel = 0, errors = 0; > + const char *ropts = "e:f:hilno:pqrsvFRW0"; > + const char *sopts = "c:de:f:hilno:pqr:svFR:W0"; > + const char *opts; > > memset(&r_opts, 0, sizeof(r_opts)); > > @@ -196,6 +199,7 @@ int main(int argc, char **argv) > r_opts.add_assoc = 1; > r_opts.fts_flags = FTS_PHYSICAL | FTS_XDEV; > ctx_validate = 1; > + opts = sopts; > } else { > /* > * restorecon: > @@ -215,6 +219,7 @@ int main(int argc, char **argv) > r_opts.add_assoc = 0; > r_opts.fts_flags = FTS_PHYSICAL; > ctx_validate = 0; > + opts = ropts; > > /* restorecon only: silent exit if no SELinux. > Allows unconditional execution by scripts. */ > @@ -226,7 +231,7 @@ int main(int argc, char **argv) > r_opts.nfile = exclude_non_seclabel_mounts(); > > /* Process any options. */ > - while ((opt = getopt(argc, argv, "c:de:f:hilno:pqrsvFRW0")) > 0) { > + while ((opt = getopt(argc, argv, opts)) > 0) { > switch (opt) { > case 'c': > { > @@ -315,18 +320,13 @@ int main(int argc, char **argv) > recurse = 1; > break; > } > - if (optind + 1 >= argc) { > - fprintf(stderr, "usage: %s -r rootpath\n", > - argv[0]); > - exit(-1); > - } > if (NULL != r_opts.rootpath) { > fprintf(stderr, > "%s: only one -r can be specified\n", > argv[0]); > exit(-1); > } > - set_rootpath(argv[optind++]); > + set_rootpath(optarg); > break; > case 's': > use_input_file = 1; > _______________________________________________ Selinux mailing list Selinux@xxxxxxxxxxxxx To unsubscribe, send email to Selinux-leave@xxxxxxxxxxxxx. To get help, send an email containing "help" to Selinux-request@xxxxxxxxxxxxx.