]> git.itanic.dy.fi Git - linux-stable/commitdiff
netfilter: h323: bug in parsing of ASN1 SEQOF field
authorDavid Sterba <dsterba@suse.cz>
Mon, 4 Apr 2011 13:21:02 +0000 (15:21 +0200)
committerGreg Kroah-Hartman <gregkh@suse.de>
Thu, 14 Apr 2011 23:53:08 +0000 (16:53 -0700)
commit b4232a22776aa5d063f890d21ca69870dbbe431b upstream.

Static analyzer of clang found a dead store which appears to be a bug in
reading count of items in SEQOF field, only the lower byte of word is
stored. This may lead to corrupted read and communication shutdown.

The bug has been in the module since it's first inclusion into linux
kernel.

[Patrick: the bug is real, but without practical consequence since the
 largest amount of sequence-of members we parse is 30.]

Signed-off-by: David Sterba <dsterba@suse.cz>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
net/netfilter/nf_conntrack_h323_asn1.c

index 867882313e499931b9e89416326937398a655ccb..bcd5ed6b713048e781f73f91e80a0e055eafb6d5 100644 (file)
@@ -631,7 +631,7 @@ static int decode_seqof(bitstr_t *bs, const struct field_t *f,
                CHECK_BOUND(bs, 2);
                count = *bs->cur++;
                count <<= 8;
-               count = *bs->cur++;
+               count += *bs->cur++;
                break;
        case SEMI:
                BYTE_ALIGN(bs);