Re: [PATCH nft] scanner: treat invalid octal strings as strings

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 2022-12-22, at 11:52:49 +0100, Pablo Neira Ayuso wrote:
> On Thu, Dec 22, 2022 at 11:38:39AM +0100, Pablo Neira Ayuso wrote:
> > On Fri, Dec 16, 2022 at 08:27:14PM +0000, Jeremy Sowden wrote:
> [...]
> > > We get:
> > > 
> > >   $ sudo ./src/nft -f - <<<'
> > >   > table x {
> > >   >   chain y {
> > >   >     ip saddr 0308 continue comment "error"
> > >   >   }
> > >   > }
> > >   > '
> > >   /dev/stdin:4:14-17: Error: Could not resolve hostname: Name or service not known
> > >       ip saddr 0308 continue comment "error"
> > >                ^^^^
> > > 
> > > Add a test-case.
> > 
> > Applied, thanks.
> > 
> > I am sorry I missed this patch before the release.
> 
> Hm. I thought this patch just fixes the parsing of octals.
>
> iptables and iproute seem to support for octals?

So does nft.  However, 0308 is not valid octal, and nft was silently
truncating it to 030.

For hex and decimal, we know that the entire number string is valid in
the base and only have to worry whether it is too long and may result in
a out-of-range error.  For octal, there is also the possibility that the
string may contain 8 or 9.  This patch adds a check for this and if the
check fails the failure is handled as an error in the same way it would
be if strtoull had reported `ERANGE`.

I did consider adding an `{octalstring}` match to handle octal
separately from decimal, but in the end the solution in this patch
seemed simpler.

J.

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Netfitler Users]     [Berkeley Packet Filter]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux