public inbox for libc-alpha@sourceware.org
 help / color / mirror / Atom feed
* [patch] Use unsigned constants for ICMP6 filters [BZ #22489]
@ 2020-04-24 21:35 DJ Delorie
  2020-04-25  8:53 ` Andreas Schwab
  2020-04-26  8:03 ` Florian Weimer
  0 siblings, 2 replies; 16+ messages in thread
From: DJ Delorie @ 2020-04-24 21:35 UTC (permalink / raw)
  To: libc-alpha


https://sourceware.org/bugzilla/show_bug.cgi?id=22489

The patch in the bz applies and builds without change.  I added my
analysis of the failure (newer gcc's give a much more useful message
;) although it's pretty obvious in retrospect.

Only four lines changed, well under the assignment threshold.

From: Sergey <s.korolev@ndmsystems.com>
Date: Fri, 24 Apr 2020 17:18:41 -0400
Subject: Use unsigned constants for ICMP6 filters [BZ #22489]

The core problem here is that the bitfields are unsigned but
the computed constants are signed.  This patch forces the computed
constants to be unsigned. - DJ

diff --git a/inet/netinet/icmp6.h b/inet/netinet/icmp6.h
index a75722887d..5fed0fbca1 100644
--- a/inet/netinet/icmp6.h
+++ b/inet/netinet/icmp6.h
@@ -85,16 +85,16 @@ struct icmp6_hdr
 #define ICMP6_PARAMPROB_OPTION        2 /* unrecognized IPv6 option */
 
 #define ICMP6_FILTER_WILLPASS(type, filterp) \
-	((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) == 0)
+	((((filterp)->icmp6_filt[(type) >> 5]) & (1U << ((type) & 31))) == 0)
 
 #define ICMP6_FILTER_WILLBLOCK(type, filterp) \
-	((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) != 0)
+	((((filterp)->icmp6_filt[(type) >> 5]) & (1U << ((type) & 31))) != 0)
 
 #define ICMP6_FILTER_SETPASS(type, filterp) \
-	((((filterp)->icmp6_filt[(type) >> 5]) &= ~(1 << ((type) & 31))))
+	((((filterp)->icmp6_filt[(type) >> 5]) &= ~(1U << ((type) & 31))))
 
 #define ICMP6_FILTER_SETBLOCK(type, filterp) \
-	((((filterp)->icmp6_filt[(type) >> 5]) |=  (1 << ((type) & 31))))
+	((((filterp)->icmp6_filt[(type) >> 5]) |=  (1U << ((type) & 31))))
 
 #define ICMP6_FILTER_SETPASSALL(filterp) \
 	memset (filterp, 0, sizeof (struct icmp6_filter));


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [patch] Use unsigned constants for ICMP6 filters [BZ #22489]
  2020-04-24 21:35 [patch] Use unsigned constants for ICMP6 filters [BZ #22489] DJ Delorie
@ 2020-04-25  8:53 ` Andreas Schwab
  2020-04-25 17:15   ` DJ Delorie
  2020-04-26  8:03 ` Florian Weimer
  1 sibling, 1 reply; 16+ messages in thread
From: Andreas Schwab @ 2020-04-25  8:53 UTC (permalink / raw)
  To: DJ Delorie via Libc-alpha

On Apr 24 2020, DJ Delorie via Libc-alpha wrote:

> The core problem here is that the bitfields are unsigned but
> the computed constants are signed.  This patch forces the computed
> constants to be unsigned. - DJ

That explanation doesn't make sense.  This has nothing to do with
signedness of bitfields, it is about shifting a value out of its range.

Andreas.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
"And now for something completely different."

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [patch] Use unsigned constants for ICMP6 filters [BZ #22489]
  2020-04-25  8:53 ` Andreas Schwab
@ 2020-04-25 17:15   ` DJ Delorie
  2020-04-25 17:48     ` Andreas Schwab
  0 siblings, 1 reply; 16+ messages in thread
From: DJ Delorie @ 2020-04-25 17:15 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: libc-alpha

Andreas Schwab <schwab@linux-m68k.org> writes:
> That explanation doesn't make sense.  This has nothing to do with
> signedness of bitfields, it is about shifting a value out of its range.

The struct has this:

    uint32_t icmp6_filt[8];

It's not a "gcc bitfield" it's an "icmp filter bitfield"

The logic in the test case boils down to:

  (uint32_t) icmp6_filt[]  &=  (int) -65

GCC complains that -65 doesn't fit in "uint32_t" and was converted to
(unsigned) 0xffffffbf.


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [patch] Use unsigned constants for ICMP6 filters [BZ #22489]
  2020-04-25 17:15   ` DJ Delorie
@ 2020-04-25 17:48     ` Andreas Schwab
  2020-04-25 21:23       ` DJ Delorie
  0 siblings, 1 reply; 16+ messages in thread
From: Andreas Schwab @ 2020-04-25 17:48 UTC (permalink / raw)
  To: DJ Delorie; +Cc: libc-alpha

On Apr 25 2020, DJ Delorie wrote:

> GCC complains that -65 doesn't fit in "uint32_t" and was converted to
> (unsigned) 0xffffffbf.

-65 fits very well in uint32_t, this is a perfectly defined operation.
The bug is an undefined shift (which can produce an arbitrary value).

Andreas.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
"And now for something completely different."

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [patch] Use unsigned constants for ICMP6 filters [BZ #22489]
  2020-04-25 17:48     ` Andreas Schwab
@ 2020-04-25 21:23       ` DJ Delorie
  2020-04-25 21:30         ` Andreas Schwab
  0 siblings, 1 reply; 16+ messages in thread
From: DJ Delorie @ 2020-04-25 21:23 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: libc-alpha

Andreas Schwab <schwab@linux-m68k.org> writes:
>> GCC complains that -65 doesn't fit in "uint32_t" and was converted to
>> (unsigned) 0xffffffbf.
>
> -65 fits very well in uint32_t, this is a perfectly defined operation.
> The bug is an undefined shift (which can produce an arbitrary value).

The left shift is limited to "1" shifted by 0..31 bits, which is well
defined.  A shift of 31 bits doesn't result in a warning, either,
because the resulting ~bit pattern indicates a positive value.  The
right shift might produce an array overflow, but that would happen even
for unsigned values, and the warning happens for constants that are
known to fit.  GCC indicates the warning is with the &= operator:

$ gcc -c -Wsign-conversion icmp6_test.c
icmp6_test.c: In function ‘main’:
icmp6_test.c:14:7: warning: unsigned conversion from ‘int’ to ‘uint32_t’ {aka ‘unsigned int’} changes value from ‘-65’ to ‘4294967231’ [-Wsign-conversion]
   14 |       &= ~(1 <<
      |       ^~


#include <stdlib.h>                                                           
#include <netinet/icmp6.h>                                                    

#undef ICMP6_FILTER_SETPASS

#define ICMP6_FILTER_SETPASS(type, filterp) \
  ((((filterp)->icmp6_filt[(type) >> 5]) &= ~(1 << ((type) & 31))))
                                                                           
int main()                                                                    
{                                                                             
    struct icmp6_filter filter;                                               
                                                                              
    (((filter.icmp6_filt[(134) >> 5])
      &= ~(1 <<
	   ((134) & 31))));
                                                                              
    return EXIT_SUCCESS;                                                      
}


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [patch] Use unsigned constants for ICMP6 filters [BZ #22489]
  2020-04-25 21:23       ` DJ Delorie
@ 2020-04-25 21:30         ` Andreas Schwab
  2020-04-25 21:41           ` DJ Delorie
  0 siblings, 1 reply; 16+ messages in thread
From: Andreas Schwab @ 2020-04-25 21:30 UTC (permalink / raw)
  To: DJ Delorie; +Cc: libc-alpha

On Apr 25 2020, DJ Delorie wrote:

> The left shift is limited to "1" shifted by 0..31 bits, which is well
> defined.

Nope.

Andreas.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
"And now for something completely different."

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [patch] Use unsigned constants for ICMP6 filters [BZ #22489]
  2020-04-25 21:30         ` Andreas Schwab
@ 2020-04-25 21:41           ` DJ Delorie
  2020-04-26 11:25             ` Alexander Monakov
  0 siblings, 1 reply; 16+ messages in thread
From: DJ Delorie @ 2020-04-25 21:41 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: libc-alpha

Andreas Schwab <schwab@linux-m68k.org> writes:
> Nope.

Well, feel free to offer an alternate comment for the patch - preferably
something more convincing than "nope".  Do you have any argument against
the patch itself?


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [patch] Use unsigned constants for ICMP6 filters [BZ #22489]
  2020-04-24 21:35 [patch] Use unsigned constants for ICMP6 filters [BZ #22489] DJ Delorie
  2020-04-25  8:53 ` Andreas Schwab
@ 2020-04-26  8:03 ` Florian Weimer
  1 sibling, 0 replies; 16+ messages in thread
From: Florian Weimer @ 2020-04-26  8:03 UTC (permalink / raw)
  To: DJ Delorie via Libc-alpha

* DJ Delorie via Libc-alpha:

> From: Sergey <s.korolev@ndmsystems.com>
> Date: Fri, 24 Apr 2020 17:18:41 -0400
> Subject: Use unsigned constants for ICMP6 filters [BZ #22489]
>
> The core problem here is that the bitfields are unsigned but
> the computed constants are signed.  This patch forces the computed
> constants to be unsigned. - DJ

I suggest to write “the icmp6_filt array elements are unsigned”
instead of “the bitfields are unsigned”.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [patch] Use unsigned constants for ICMP6 filters [BZ #22489]
  2020-04-25 21:41           ` DJ Delorie
@ 2020-04-26 11:25             ` Alexander Monakov
  2020-04-26 11:56               ` Florian Weimer
  0 siblings, 1 reply; 16+ messages in thread
From: Alexander Monakov @ 2020-04-26 11:25 UTC (permalink / raw)
  To: DJ Delorie; +Cc: Andreas Schwab, libc-alpha

Computing 1<<31 causes undefined behavior (signed overflow), you get
a warning with -Wshift-overflow=2 and a runtime error with UBSan,
i.e. with -fsanitize=undefined.

I'd say the situation with -Wsign-conversion warning is more subtle
than your initial mail seemed to imply, normally gcc suppresses warnings
for code originating in system headers unless -Wsystem-headers is also
specified. Here the warning appears where user code expands a macro
defined in a system header, maybe this situation is not properly
handled for -Wsign-conversion in GCC.

In summary, you need 1u to avoid causing undefined behavior if
a shift left by 31 is possible in practice, and it also happens to
suppress GCC's -Wsign-conversion warning (while there's
nothing undefined about the conversion itself).

Alexander

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [patch] Use unsigned constants for ICMP6 filters [BZ #22489]
  2020-04-26 11:25             ` Alexander Monakov
@ 2020-04-26 11:56               ` Florian Weimer
  2020-04-30 20:47                 ` DJ Delorie
  0 siblings, 1 reply; 16+ messages in thread
From: Florian Weimer @ 2020-04-26 11:56 UTC (permalink / raw)
  To: Alexander Monakov via Libc-alpha
  Cc: DJ Delorie, Alexander Monakov, Andreas Schwab

* Alexander Monakov via Libc-alpha:

> Computing 1<<31 causes undefined behavior (signed overflow), you get
> a warning with -Wshift-overflow=2 and a runtime error with UBSan,
> i.e. with -fsanitize=undefined.
>
> I'd say the situation with -Wsign-conversion warning is more subtle
> than your initial mail seemed to imply, normally gcc suppresses warnings
> for code originating in system headers unless -Wsystem-headers is also
> specified. Here the warning appears where user code expands a macro
> defined in a system header, maybe this situation is not properly
> handled for -Wsign-conversion in GCC.
>
> In summary, you need 1u to avoid causing undefined behavior if
> a shift left by 31 is possible in practice, and it also happens to
> suppress GCC's -Wsign-conversion warning (while there's
> nothing undefined about the conversion itself).

I believe not of the bits in the array have index 31 at present, so
the undefined behavior cannot really occur in practice at this point.
Perhaps it makes sense to mention both aspects in the commit message,
though.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [patch] Use unsigned constants for ICMP6 filters [BZ #22489]
  2020-04-26 11:56               ` Florian Weimer
@ 2020-04-30 20:47                 ` DJ Delorie
  2020-05-03 20:23                   ` Florian Weimer
  0 siblings, 1 reply; 16+ messages in thread
From: DJ Delorie @ 2020-04-30 20:47 UTC (permalink / raw)
  To: Florian Weimer; +Cc: libc-alpha, amonakov, schwab


How's this?

From aa8ad2eacb64a5e0e81892b87665fa50f66ad87a Mon Sep 17 00:00:00 2001
From: Sergey <s.korolev@ndmsystems.com>
Date: Fri, 24 Apr 2020 17:18:41 -0400
Subject: Use unsigned constants for ICMP6 filters [BZ #22489]

The core problem here is that the filter array is unsigned but the
computed constants are signed.  This both causes a signededness
conversion at the &= step and may cause undefined behavior if the MSB
is being modified.  This patch uses unsigned constants to avoid both
cases. - DJ

diff --git a/inet/netinet/icmp6.h b/inet/netinet/icmp6.h
index a75722887d..5fed0fbca1 100644
--- a/inet/netinet/icmp6.h
+++ b/inet/netinet/icmp6.h
@@ -85,16 +85,16 @@ struct icmp6_hdr
 #define ICMP6_PARAMPROB_OPTION        2 /* unrecognized IPv6 option */
 
 #define ICMP6_FILTER_WILLPASS(type, filterp) \
-	((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) == 0)
+	((((filterp)->icmp6_filt[(type) >> 5]) & (1U << ((type) & 31))) == 0)
 
 #define ICMP6_FILTER_WILLBLOCK(type, filterp) \
-	((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) != 0)
+	((((filterp)->icmp6_filt[(type) >> 5]) & (1U << ((type) & 31))) != 0)
 
 #define ICMP6_FILTER_SETPASS(type, filterp) \
-	((((filterp)->icmp6_filt[(type) >> 5]) &= ~(1 << ((type) & 31))))
+	((((filterp)->icmp6_filt[(type) >> 5]) &= ~(1U << ((type) & 31))))
 
 #define ICMP6_FILTER_SETBLOCK(type, filterp) \
-	((((filterp)->icmp6_filt[(type) >> 5]) |=  (1 << ((type) & 31))))
+	((((filterp)->icmp6_filt[(type) >> 5]) |=  (1U << ((type) & 31))))
 
 #define ICMP6_FILTER_SETPASSALL(filterp) \
 	memset (filterp, 0, sizeof (struct icmp6_filter));


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [patch] Use unsigned constants for ICMP6 filters [BZ #22489]
  2020-04-30 20:47                 ` DJ Delorie
@ 2020-05-03 20:23                   ` Florian Weimer
  2020-05-08 20:10                     ` DJ Delorie
  0 siblings, 1 reply; 16+ messages in thread
From: Florian Weimer @ 2020-05-03 20:23 UTC (permalink / raw)
  To: DJ Delorie; +Cc: libc-alpha, amonakov, schwab

* DJ Delorie:

> The core problem here is that the filter array is unsigned but the
> computed constants are signed.  This both causes a signededness
> conversion at the &= step and may cause undefined behavior if the MSB
> is being modified.  This patch uses unsigned constants to avoid both
> cases. - DJ

I'd say that the filter array *elements* are unsigned, but I don't
feel strongly about that.

^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [patch] Use unsigned constants for ICMP6 filters [BZ #22489]
  2020-05-03 20:23                   ` Florian Weimer
@ 2020-05-08 20:10                     ` DJ Delorie
  2020-05-08 20:22                       ` Florian Weimer
  2020-05-12  7:35                       ` Andreas Schwab
  0 siblings, 2 replies; 16+ messages in thread
From: DJ Delorie @ 2020-05-08 20:10 UTC (permalink / raw)
  To: Florian Weimer; +Cc: libc-alpha, amonakov, schwab


Florian Weimer <fw@deneb.enyo.de> writes:
> I'd say that the filter array *elements* are unsigned, but I don't
> feel strongly about that.

Ok, hopefully one last version and then we can paint the bike shed ;-)

From 4ce3470246e0336e53010d66f30a1040a7e1f4bb Mon Sep 17 00:00:00 2001
From: Sergey <s.korolev@ndmsystems.com>
Date: Fri, 24 Apr 2020 17:18:41 -0400
Subject: Use unsigned constants for ICMP6 filters [BZ #22489]

The core problem here is that the filter array elements are unsigned
but the computed constants are signed.  This both causes a
signededness conversion at the &= step and may cause undefined
behavior if the MSB is being modified.  This patch uses unsigned
constants to avoid both cases. - DJ

diff --git a/inet/netinet/icmp6.h b/inet/netinet/icmp6.h
index a75722887d..5fed0fbca1 100644
--- a/inet/netinet/icmp6.h
+++ b/inet/netinet/icmp6.h
@@ -85,16 +85,16 @@ struct icmp6_hdr
 #define ICMP6_PARAMPROB_OPTION        2 /* unrecognized IPv6 option */
 
 #define ICMP6_FILTER_WILLPASS(type, filterp) \
-	((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) == 0)
+	((((filterp)->icmp6_filt[(type) >> 5]) & (1U << ((type) & 31))) == 0)
 
 #define ICMP6_FILTER_WILLBLOCK(type, filterp) \
-	((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) != 0)
+	((((filterp)->icmp6_filt[(type) >> 5]) & (1U << ((type) & 31))) != 0)
 
 #define ICMP6_FILTER_SETPASS(type, filterp) \
-	((((filterp)->icmp6_filt[(type) >> 5]) &= ~(1 << ((type) & 31))))
+	((((filterp)->icmp6_filt[(type) >> 5]) &= ~(1U << ((type) & 31))))
 
 #define ICMP6_FILTER_SETBLOCK(type, filterp) \
-	((((filterp)->icmp6_filt[(type) >> 5]) |=  (1 << ((type) & 31))))
+	((((filterp)->icmp6_filt[(type) >> 5]) |=  (1U << ((type) & 31))))
 
 #define ICMP6_FILTER_SETPASSALL(filterp) \
 	memset (filterp, 0, sizeof (struct icmp6_filter));


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [patch] Use unsigned constants for ICMP6 filters [BZ #22489]
  2020-05-08 20:10                     ` DJ Delorie
@ 2020-05-08 20:22                       ` Florian Weimer
  2020-05-11 21:09                         ` DJ Delorie
  2020-05-12  7:35                       ` Andreas Schwab
  1 sibling, 1 reply; 16+ messages in thread
From: Florian Weimer @ 2020-05-08 20:22 UTC (permalink / raw)
  To: DJ Delorie via Libc-alpha; +Cc: DJ Delorie, schwab

* DJ Delorie via Libc-alpha:

> Florian Weimer <fw@deneb.enyo.de> writes:
>> I'd say that the filter array *elements* are unsigned, but I don't
>> feel strongly about that.
>
> Ok, hopefully one last version and then we can paint the bike shed ;-)
>
> From 4ce3470246e0336e53010d66f30a1040a7e1f4bb Mon Sep 17 00:00:00 2001
> From: Sergey <s.korolev@ndmsystems.com>
> Date: Fri, 24 Apr 2020 17:18:41 -0400
> Subject: Use unsigned constants for ICMP6 filters [BZ #22489]
>
> The core problem here is that the filter array elements are unsigned
> but the computed constants are signed.  This both causes a
> signededness conversion at the &= step and may cause undefined
> behavior if the MSB is being modified.  This patch uses unsigned
> constants to avoid both cases. - DJ
>
> diff --git a/inet/netinet/icmp6.h b/inet/netinet/icmp6.h
> index a75722887d..5fed0fbca1 100644
> --- a/inet/netinet/icmp6.h
> +++ b/inet/netinet/icmp6.h
> @@ -85,16 +85,16 @@ struct icmp6_hdr
>  #define ICMP6_PARAMPROB_OPTION        2 /* unrecognized IPv6 option */
>  
>  #define ICMP6_FILTER_WILLPASS(type, filterp) \
> -	((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) == 0)
> +	((((filterp)->icmp6_filt[(type) >> 5]) & (1U << ((type) & 31))) == 0)
>  
>  #define ICMP6_FILTER_WILLBLOCK(type, filterp) \
> -	((((filterp)->icmp6_filt[(type) >> 5]) & (1 << ((type) & 31))) != 0)
> +	((((filterp)->icmp6_filt[(type) >> 5]) & (1U << ((type) & 31))) != 0)
>  
>  #define ICMP6_FILTER_SETPASS(type, filterp) \
> -	((((filterp)->icmp6_filt[(type) >> 5]) &= ~(1 << ((type) & 31))))
> +	((((filterp)->icmp6_filt[(type) >> 5]) &= ~(1U << ((type) & 31))))
>  
>  #define ICMP6_FILTER_SETBLOCK(type, filterp) \
> -	((((filterp)->icmp6_filt[(type) >> 5]) |=  (1 << ((type) & 31))))
> +	((((filterp)->icmp6_filt[(type) >> 5]) |=  (1U << ((type) & 31))))
>  
>  #define ICMP6_FILTER_SETPASSALL(filterp) \
>  	memset (filterp, 0, sizeof (struct icmp6_filter));

Looks good to me know.

Reviewed-by: Florian Weimer <fweimer@redhat.com>

Thanks,
Florian


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [patch] Use unsigned constants for ICMP6 filters [BZ #22489]
  2020-05-08 20:22                       ` Florian Weimer
@ 2020-05-11 21:09                         ` DJ Delorie
  0 siblings, 0 replies; 16+ messages in thread
From: DJ Delorie @ 2020-05-11 21:09 UTC (permalink / raw)
  To: Florian Weimer; +Cc: libc-alpha, schwab

Florian Weimer <fweimer@redhat.com> writes:
> Looks good to me know.
>
> Reviewed-by: Florian Weimer <fweimer@redhat.com>

Thanks, pushed!


^ permalink raw reply	[flat|nested] 16+ messages in thread

* Re: [patch] Use unsigned constants for ICMP6 filters [BZ #22489]
  2020-05-08 20:10                     ` DJ Delorie
  2020-05-08 20:22                       ` Florian Weimer
@ 2020-05-12  7:35                       ` Andreas Schwab
  1 sibling, 0 replies; 16+ messages in thread
From: Andreas Schwab @ 2020-05-12  7:35 UTC (permalink / raw)
  To: DJ Delorie; +Cc: Florian Weimer, libc-alpha, amonakov

On Mai 08 2020, DJ Delorie wrote:

> The core problem here is that the filter array elements are unsigned
> but the computed constants are signed.

This is of course bogus.

Andreas.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 7578 EB47 D4E5 4D69 2510  2552 DF73 E780 A9DA AEC1
"And now for something completely different."

^ permalink raw reply	[flat|nested] 16+ messages in thread

end of thread, other threads:[~2020-05-12  7:35 UTC | newest]

Thread overview: 16+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-24 21:35 [patch] Use unsigned constants for ICMP6 filters [BZ #22489] DJ Delorie
2020-04-25  8:53 ` Andreas Schwab
2020-04-25 17:15   ` DJ Delorie
2020-04-25 17:48     ` Andreas Schwab
2020-04-25 21:23       ` DJ Delorie
2020-04-25 21:30         ` Andreas Schwab
2020-04-25 21:41           ` DJ Delorie
2020-04-26 11:25             ` Alexander Monakov
2020-04-26 11:56               ` Florian Weimer
2020-04-30 20:47                 ` DJ Delorie
2020-05-03 20:23                   ` Florian Weimer
2020-05-08 20:10                     ` DJ Delorie
2020-05-08 20:22                       ` Florian Weimer
2020-05-11 21:09                         ` DJ Delorie
2020-05-12  7:35                       ` Andreas Schwab
2020-04-26  8:03 ` Florian Weimer

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).