diff mbox

[1/6] Revert "policycoreutils: let output of `fixfiles` be redirected (as normal)"

Message ID 20170504170122.26882-1-alan.christopher.jenkins@gmail.com (mailing list archive)
State Not Applicable
Headers show

Commit Message

Alan Jenkins May 4, 2017, 5:01 p.m. UTC
This reverts commit ac7899fc3ad6221e195dd13cdf14b346897314ae,
which is not yet part of an officially tagged release
(or release candidate).

`LOGFILE=/proc/self/fd/1` was wrong.

`LOGFILE=$(tty)` was being relied on in one case (exclude_dirs),
to log messages from a function run specifically with stdout redirected
(captured into a variable).

Having `logit "message"` break inside redirected functions
is a nasty leaky abstraction.

This caused e.g. `fixfiles restore` to terminate early with the error

    skipping: No such file or directory

if the user had configured any excluded paths in
/etc/selinux/fixfiles_exclude_dirs
---
 policycoreutils/scripts/fixfiles | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

Comments

Dac Override May 4, 2017, 5:28 p.m. UTC | #1
On Thu, May 04, 2017 at 06:01:17PM +0100, Alan Jenkins wrote:
> This reverts commit ac7899fc3ad6221e195dd13cdf14b346897314ae,
> which is not yet part of an officially tagged release
> (or release candidate).
> 
> `LOGFILE=/proc/self/fd/1` was wrong.
> 
> `LOGFILE=$(tty)` was being relied on in one case (exclude_dirs),
> to log messages from a function run specifically with stdout redirected
> (captured into a variable).
> 
> Having `logit "message"` break inside redirected functions
> is a nasty leaky abstraction.
> 
> This caused e.g. `fixfiles restore` to terminate early with the error
> 
>     skipping: No such file or directory
> 
> if the user had configured any excluded paths in
> /etc/selinux/fixfiles_exclude_dirs
> ---
>  policycoreutils/scripts/fixfiles | 10 +++++++---
>  1 file changed, 7 insertions(+), 3 deletions(-)
> 
> diff --git a/policycoreutils/scripts/fixfiles b/policycoreutils/scripts/fixfiles
> index bc74d69..75d7762 100755
> --- a/policycoreutils/scripts/fixfiles
> +++ b/policycoreutils/scripts/fixfiles
> @@ -119,7 +119,11 @@ VERBOSE="-p"
>  FORCEFLAG=""
>  DIRS=""
>  RPMILES=""
> -LOGFILE=/proc/self/fd/1
> +LOGFILE=`tty`
> +if [ $? != 0 ]; then
> +    LOGFILE="/dev/null"
> +fi
> +LOGGER=/usr/sbin/logger

$ ls /usr/bin/logger
/usr/bin/logger
$ ls /usr/sbin/logger
ls: cannot access '/usr/sbin/logger': No such file or directory

>  SETFILES=/sbin/setfiles
>  RESTORECON=/sbin/restorecon
>  FILESYSTEMSRW=`get_rw_labeled_mounts`
> @@ -134,11 +138,11 @@ else
>  fi
>  
>  #
> -# Write to LOGFILE
> +# Log to either syslog or a LOGFILE
>  #
>  logit () {
>  if [ -n $LOGFILE ]; then
> -    echo $1 >> "$LOGFILE"
> +    echo $1 >> $LOGFILE
>  fi
>  }
>  #
> -- 
> 2.9.3
>
Dac Override May 4, 2017, 5:32 p.m. UTC | #2
On Thu, May 04, 2017 at 07:28:19PM +0200, Dominick Grift wrote:
> On Thu, May 04, 2017 at 06:01:17PM +0100, Alan Jenkins wrote:
> > This reverts commit ac7899fc3ad6221e195dd13cdf14b346897314ae,
> > which is not yet part of an officially tagged release
> > (or release candidate).
> > 
> > `LOGFILE=/proc/self/fd/1` was wrong.
> > 
> > `LOGFILE=$(tty)` was being relied on in one case (exclude_dirs),
> > to log messages from a function run specifically with stdout redirected
> > (captured into a variable).
> > 
> > Having `logit "message"` break inside redirected functions
> > is a nasty leaky abstraction.
> > 
> > This caused e.g. `fixfiles restore` to terminate early with the error
> > 
> >     skipping: No such file or directory
> > 
> > if the user had configured any excluded paths in
> > /etc/selinux/fixfiles_exclude_dirs
> > ---
> >  policycoreutils/scripts/fixfiles | 10 +++++++---
> >  1 file changed, 7 insertions(+), 3 deletions(-)
> > 
> > diff --git a/policycoreutils/scripts/fixfiles b/policycoreutils/scripts/fixfiles
> > index bc74d69..75d7762 100755
> > --- a/policycoreutils/scripts/fixfiles
> > +++ b/policycoreutils/scripts/fixfiles
> > @@ -119,7 +119,11 @@ VERBOSE="-p"
> >  FORCEFLAG=""
> >  DIRS=""
> >  RPMILES=""
> > -LOGFILE=/proc/self/fd/1
> > +LOGFILE=`tty`
> > +if [ $? != 0 ]; then
> > +    LOGFILE="/dev/null"
> > +fi
> > +LOGGER=/usr/sbin/logger
> 
> $ ls /usr/bin/logger
> /usr/bin/logger
> $ ls /usr/sbin/logger
> ls: cannot access '/usr/sbin/logger': No such file or directory

Whoops, please ignore. This was removed anyway

> 
> >  SETFILES=/sbin/setfiles
> >  RESTORECON=/sbin/restorecon
> >  FILESYSTEMSRW=`get_rw_labeled_mounts`
> > @@ -134,11 +138,11 @@ else
> >  fi
> >  
> >  #
> > -# Write to LOGFILE
> > +# Log to either syslog or a LOGFILE
> >  #
> >  logit () {
> >  if [ -n $LOGFILE ]; then
> > -    echo $1 >> "$LOGFILE"
> > +    echo $1 >> $LOGFILE
> >  fi
> >  }
> >  #
> > -- 
> > 2.9.3
> > 
> 
> -- 
> Key fingerprint = 5F4D 3CDB D3F8 3652 FBD8  02D5 3B6C 5F1D 2C7B 6B02
> https://sks-keyservers.net/pks/lookup?op=get&search=0x3B6C5F1D2C7B6B02
> Dominick Grift
James Carter May 5, 2017, 5:31 p.m. UTC | #3
On 05/04/2017 01:01 PM, Alan Jenkins wrote:
> This reverts commit ac7899fc3ad6221e195dd13cdf14b346897314ae,
> which is not yet part of an officially tagged release
> (or release candidate).
> 
> `LOGFILE=/proc/self/fd/1` was wrong.
> 
> `LOGFILE=$(tty)` was being relied on in one case (exclude_dirs),
> to log messages from a function run specifically with stdout redirected
> (captured into a variable).
> 
> Having `logit "message"` break inside redirected functions
> is a nasty leaky abstraction.
> 
> This caused e.g. `fixfiles restore` to terminate early with the error
> 
>      skipping: No such file or directory
> 
> if the user had configured any excluded paths in
> /etc/selinux/fixfiles_exclude_dirs

These six patches have been applied.

Thanks,
Jim

> ---
>   policycoreutils/scripts/fixfiles | 10 +++++++---
>   1 file changed, 7 insertions(+), 3 deletions(-)
> 
> diff --git a/policycoreutils/scripts/fixfiles b/policycoreutils/scripts/fixfiles
> index bc74d69..75d7762 100755
> --- a/policycoreutils/scripts/fixfiles
> +++ b/policycoreutils/scripts/fixfiles
> @@ -119,7 +119,11 @@ VERBOSE="-p"
>   FORCEFLAG=""
>   DIRS=""
>   RPMILES=""
> -LOGFILE=/proc/self/fd/1
> +LOGFILE=`tty`
> +if [ $? != 0 ]; then
> +    LOGFILE="/dev/null"
> +fi
> +LOGGER=/usr/sbin/logger
>   SETFILES=/sbin/setfiles
>   RESTORECON=/sbin/restorecon
>   FILESYSTEMSRW=`get_rw_labeled_mounts`
> @@ -134,11 +138,11 @@ else
>   fi
>   
>   #
> -# Write to LOGFILE
> +# Log to either syslog or a LOGFILE
>   #
>   logit () {
>   if [ -n $LOGFILE ]; then
> -    echo $1 >> "$LOGFILE"
> +    echo $1 >> $LOGFILE
>   fi
>   }
>   #
>
diff mbox

Patch

diff --git a/policycoreutils/scripts/fixfiles b/policycoreutils/scripts/fixfiles
index bc74d69..75d7762 100755
--- a/policycoreutils/scripts/fixfiles
+++ b/policycoreutils/scripts/fixfiles
@@ -119,7 +119,11 @@  VERBOSE="-p"
 FORCEFLAG=""
 DIRS=""
 RPMILES=""
-LOGFILE=/proc/self/fd/1
+LOGFILE=`tty`
+if [ $? != 0 ]; then
+    LOGFILE="/dev/null"
+fi
+LOGGER=/usr/sbin/logger
 SETFILES=/sbin/setfiles
 RESTORECON=/sbin/restorecon
 FILESYSTEMSRW=`get_rw_labeled_mounts`
@@ -134,11 +138,11 @@  else
 fi
 
 #
-# Write to LOGFILE
+# Log to either syslog or a LOGFILE
 #
 logit () {
 if [ -n $LOGFILE ]; then
-    echo $1 >> "$LOGFILE"
+    echo $1 >> $LOGFILE
 fi
 }
 #