GNU bug report logs - #68708
[PATCH] env,kill: Handle unnamed signals

Previous Next

Package: coreutils;

Reported by: Grisha Levit <grishalevit <at> gmail.com>

Date: Thu, 25 Jan 2024 04:35:02 UTC

Severity: normal

Tags: notabug, patch

Done: Grisha Levit <grishalevit <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


Message #12 received at 68708 <at> debbugs.gnu.org (full text, mbox):

From: Pádraig Brady <P <at> draigBrady.com>
To: Grisha Levit <grishalevit <at> gmail.com>, 68708 <at> debbugs.gnu.org
Subject: Re: bug#68708: [PATCH] env,kill: Handle unnamed signals
Date: Thu, 25 Jan 2024 14:50:07 +0000
On 24/01/2024 20:40, Grisha Levit wrote:
> Android reserves [1] some realtime signals and redefines [2] SIGRTMIN,
> leaving a gap between the signals that have SIG* constants defined in
> signal.h and SIGRTMIN.
> 
> When passed such a signal number, gnulib sig2str returns -1 and leaves
> its signame argument unchanged.
> 
> The signal listing in env ends up reusing the name of the last printed
> valid signal:
> 
>      $ env --list-signal-handling true
>      HUP        ( 1): IGNORE
>      HUP        (32): BLOCK
>      HUP        (38): IGNORE
> 
> ..and the corresponding signal numbers are rejected as operands for the
> env, kill, and timeout commands.
> 
> This patch removes the requirement that sig2str returns 0 for a signal
> number associated with an operand, and allows unnamed signals to be in
> the sets `env' attempts to manipulate when a --*-signal option is used
> with no argument.
> 
> This does leave the possibility of numbers lower than SIGNUM_BOUND that
> are not valid signals, but I'm not sure that's really a problem for the
> existing code paths (if it is, adding checks for sigset_t manipulations
> would probably be enough).
> 
> To be on the safe side, added a check to report kill(3) EINVAL as a bad
> signo (rather than always blaming the pid).
> 
> This does not change the default list printed with `kill -l'.  When a
> name is to be printed, the signal number associated with an unnamed
> signal is used.
> 
> [1]: https://cs.android.com/android/platform/superproject/main/+/main:bionic/libc/platform/bionic/reserved_signals.h
> [2]: https://cs.android.com/android/platform/superproject/main/+/main:bionic/libc/include/signal.h;l=51
> 

This mostly looks good, except:

- No need to clear the errno before kill(3).
- Better to use SIG%d rather than the bare %d for signal _names_, as we already parse this format

thanks!
Pádraig




This bug report was last modified 1 year and 69 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.