Re: [PATCH] policycoreutils/setfiles: fix -f handling
Stephen Smalley <[email protected]> Tue, 21 Jul 2026 08:53:04 -0400
| Newsgroups | org.kernel.vger.selinux |
|---|---|
| Message-ID | <CAEjxPJ4HcF9N25u4i=hYzZND2DWmdS7RqWeF8h-WCZepH1oOUQ@mail.gmail.com> |
On Thu, Jul 16, 2026 at 3:11 PM Stephen Smalley <[email protected]> wrote: > > Only trim a delimiter if we are consuming it; otherwise we may > truncate the last character of a file name being read if it is on the > final input line with no trailing newline. > > Since the -f processing occurs after restore_init() has already > converted the r_opts flags to restorecon flags, we need to explicitly > set the restorecon flag when a mass relabel is triggered via a "/" > line. > > Initialize buf_len for good measure; glibc ignores it when the line > pointer is NULL but we shouldn't rely on this. > > Signed-off-by: Stephen Smalley <[email protected]> Merged. > --- > policycoreutils/setfiles/setfiles.c | 10 +++++++--- > 1 file changed, 7 insertions(+), 3 deletions(-) > > diff --git a/policycoreutils/setfiles/setfiles.c b/policycoreutils/setfiles/setfiles.c > index 2d38ea8f..e0953708 100644 > --- a/policycoreutils/setfiles/setfiles.c > +++ b/policycoreutils/setfiles/setfiles.c > @@ -142,7 +142,7 @@ int main(int argc, char **argv) > const char *input_filename = NULL; > int use_input_file = 0; > char *buf = NULL, *endptr; > - size_t buf_len, nthreads = 1; > + size_t buf_len = 0, nthreads = 1; > const char *base; > int errors = 0; > const char *ropts = "ce:f:hiIDlmno:pqrsvFURW0xT:"; > @@ -455,10 +455,14 @@ int main(int argc, char **argv) > > delim = (null_terminated != 0) ? '\0' : '\n'; > while ((len = getdelim(&buf, &buf_len, delim, f)) > 0) { > - buf[len - 1] = '\0'; > - if (!strcmp(buf, "/")) > + if (buf[len - 1] == delim) > + buf[len - 1] = '\0'; > + if (!strcmp(buf, "/")) { > r_opts.mass_relabel = > SELINUX_RESTORECON_MASS_RELABEL; > + r_opts.restorecon_flags |= > + SELINUX_RESTORECON_MASS_RELABEL; > + } > errors |= process_glob(buf, &r_opts, nthreads, > &skipped_errors, > &relabeled_files) < 0; > -- > 2.55.0 >