From: "Kelleter, Günther" <GKelleter@datus.com>
To: Andrew Hendry <andrew.hendry@gmail.com>,
David Laight <David.Laight@aculab.com>
Cc: Joe Perches <joe@perches.com>, David Miller <davem@davemloft.net>,
"linux-x25@vger.kernel.org" <linux-x25@vger.kernel.org>,
"netdev@vger.kernel.org" <netdev@vger.kernel.org>,
"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH] X.25: Fix address field length calculation
Date: Thu, 17 Oct 2013 12:09:33 +0000 [thread overview]
Message-ID: <525FD37C.50003@datus.com> (raw)
In-Reply-To: <CADo0ohh7jZhc_WJFkrYYxoYza8ZeSEadzwgwabJWwQ1TucdCcg@mail.gmail.com>
E.g. called address 7 digits and caller address 3 digits. Called DCE
answering without facilities
gives us this packet (hex):
37 12 34 56 71 23 00
then x25_parse_address_block() tries to pull 1+7+3 = 11 bytes from the
packet (with pskb_may_pull())
which only has 7 bytes.
When facilities are included the wrong calculated length has no effect
since the facilities make this packet long enough to make pskb_may_pull
with wrong number
of bytes succeed. later x25_addr_ntoa() correctly pulls 6 bytes for
addresses from the packet.
Am 17.10.2013 13:02, schrieb Andrew Hendry:
> Sorry for the previous html mail.
> This appears to be correct, what length addresses are you getting back
> in the call accept when this happens?
>
> On Wed, Oct 16, 2013 at 7:56 PM, David Laight <David.Laight@aculab.com> wrote:
>>> 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
>>
>>
>>
--
next prev parent reply other threads:[~2013-10-17 12:09 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-15 14:29 [PATCH] X.25: Fix address field length calculation Kelleter, Günther
2013-10-15 17:29 ` Joe Perches
2013-10-16 6:58 ` Kelleter, Günther
2013-10-16 8:56 ` David Laight
2013-10-17 11:02 ` Andrew Hendry
2013-10-17 12:09 ` Kelleter, Günther [this message]
2013-10-17 20:04 ` David Miller
-- strict thread matches above, loose matches on Subject: below --
2013-10-18 12:03 Guenther Kelleter
2013-10-02 11:21 Kelleter, Günther
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=525FD37C.50003@datus.com \
--to=gkelleter@datus.com \
--cc=David.Laight@aculab.com \
--cc=andrew.hendry@gmail.com \
--cc=davem@davemloft.net \
--cc=joe@perches.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-x25@vger.kernel.org \
--cc=netdev@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox