[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <AE90C24D6B3A694183C094C60CF0A2F6026B738F@saturn3.aculab.com>
Date: Wed, 16 Oct 2013 09:56:18 +0100
From: "David Laight" <David.Laight@...LAB.COM>
To: "Joe Perches" <joe@...ches.com>,
Kelleter," Günther <GKelleter@...us.com>
Cc: <andrew.hendry@...il.com>, <davem@...emloft.net>,
<linux-x25@...r.kernel.org>, <netdev@...r.kernel.org>,
<linux-kernel@...r.kernel.org>
Subject: RE: [PATCH] X.25: Fix address field length calculation
> On Tue, 2013-10-15 at 14:29 +0000, Kelleter, Günther wrote:
> > Addresses are BCD encoded, not ASCII. x25_addr_ntoa got it right.
> []
> > Wrong length calculation leads to rejection of CALL ACCEPT packets.
> []
> > diff --git a/net/x25/af_x25.c b/net/x25/af_x25.c
> []
> > @@ -98,7 +98,7 @@ int x25_parse_address_block(struct sk_buff *skb,
> > }
> > len = *skb->data;
> > - needed = 1 + (len >> 4) + (len & 0x0f);
> > + needed = 1 + ((len >> 4) + (len & 0x0f) + 1) / 2;
>
> This calculation looks odd.
Looks correct to me...
In X.25 the lengths (in digits) of the called and calling addresses
are encoded in the high and low nibbles of one byte and then
followed by both addresses with a digit in each nibble.
If the length of the first address is odd, the second one
isn't byte aligned.
David
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
Powered by blists - more mailing lists