Your message dated Fri, 19 Dec 2014 17:40:50 -0500
with message-id <[email protected]>
and subject line Re: [Pkg-gnupg-maint] Bug#773468: Fwd: missing check
has caused the Debian Bug report #773468,
regarding Fwd: missing check
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact [email protected]
immediately.)


-- 
773468: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=773468
Debian Bug Tracking System
Contact [email protected] with problems
--- Begin Message ---
Package: gnupg2
Version: 2.1.1
Severity: normal



in signal.c on line 105, 'raise(sig);' is run, but later on, on line 127, sig 
is checked to be within 0-99999. either it should be checked on 105, or the 
check at 127 for < 0 should be removed.


Thanks,

-- 
-- Joshua Rogers <https://internot.info/>

--- End Message ---
--- Begin Message ---
Control: notfound 773468 2.1.1

On Thu 2014-12-18 13:31:41 -0500, Joshua Rogers wrote:
> Package: gnupg2
> Version: 2.1.1
>
> in signal.c on line 105, 'raise(sig);' is run, but later on, on line
> 127, sig is checked to be within 0-99999. either it should be checked
> on 105, or the check at 127 for < 0 should be removed.

What makes you say that the check for < 0 has anything to do with the
(conditional) raise() on line 105?

The test for the range of 0-99999 is to protect the attempt to print the
signal number to stderr which follows.

The code you're referring to is:

    99  static RETSIGTYPE
   100  got_fatal_signal (int sig)
   101  {
   102    const char *s;
   103  
   104    if (caught_fatal_sig)
   105      raise (sig);
   106    caught_fatal_sig = 1;
   107  
   108    if (cleanup_fnc)
   109      cleanup_fnc ();
   110    /* Better don't translate these messages. */
   111    (void)write (2, "\n", 1 );
   112    s = log_get_prefix (NULL);
   113    if (s)
   114      (void)write(2, s, strlen (s));
   115    (void)write (2, ": signal ", 9 );
   116    s = get_signal_name(sig);
   117    if (s)
   118      (void) write (2, s, strlen(s) );
   119    else
   120      {
   121        /* We are in a signal handler so we can't use any kind of printf
   122           even not sprintf.  So we use a straightforward algorithm.  We
   123           got a report that on one particular system, raising a signal
   124           while in this handler, the parameter SIG get sclobbered and
   125           things are messed up because we modify its value.  Although
   126           this is a bug in that system, we will protect against it.  */
   127        if (sig < 0 || sig >= 100000)
   128          (void)write (2, "?", 1);
   129        else
   130          {
   131            int i, value, any=0;
   132  
   133            for (value=sig,i=10000; i; i /= 10)

I'm closing this report because it does not seem to be a bug.

If i've missed something, feel free to reopen it with a clearer
explanation.

Regards,

        --dkg

Attachment: signature.asc
Description: PGP signature


--- End Message ---

Reply via email to