diff options
| -rw-r--r-- | net/ipv4/netfilter/ip_conntrack_helper_h323_asn1.c | 34 | 
1 files changed, 19 insertions, 15 deletions
diff --git a/net/ipv4/netfilter/ip_conntrack_helper_h323_asn1.c b/net/ipv4/netfilter/ip_conntrack_helper_h323_asn1.c index 355a53a5b6cd..5d04438dda4b 100644 --- a/net/ipv4/netfilter/ip_conntrack_helper_h323_asn1.c +++ b/net/ipv4/netfilter/ip_conntrack_helper_h323_asn1.c  | |||
| @@ -528,14 +528,15 @@ int decode_seq(bitstr_t * bs, field_t * f, char *base, int level) | |||
| 528 | 528 | ||
| 529 | /* Decode */ | 529 | /* Decode */ | 
| 530 | if ((err = (Decoders[son->type]) (bs, son, base, | 530 | if ((err = (Decoders[son->type]) (bs, son, base, | 
| 531 | level + 1)) > | 531 | level + 1)) < | 
| 532 | H323_ERROR_STOP) | 532 | H323_ERROR_NONE) | 
| 533 | return err; | 533 | return err; | 
| 534 | 534 | ||
| 535 | bs->cur = beg + len; | 535 | bs->cur = beg + len; | 
| 536 | bs->bit = 0; | 536 | bs->bit = 0; | 
| 537 | } else if ((err = (Decoders[son->type]) (bs, son, base, | 537 | } else if ((err = (Decoders[son->type]) (bs, son, base, | 
| 538 | level + 1))) | 538 | level + 1)) < | 
| 539 | H323_ERROR_NONE) | ||
| 539 | return err; | 540 | return err; | 
| 540 | } | 541 | } | 
| 541 | 542 | ||
| @@ -584,8 +585,8 @@ int decode_seq(bitstr_t * bs, field_t * f, char *base, int level) | |||
| 584 | beg = bs->cur; | 585 | beg = bs->cur; | 
| 585 | 586 | ||
| 586 | if ((err = (Decoders[son->type]) (bs, son, base, | 587 | if ((err = (Decoders[son->type]) (bs, son, base, | 
| 587 | level + 1)) > | 588 | level + 1)) < | 
| 588 | H323_ERROR_STOP) | 589 | H323_ERROR_NONE) | 
| 589 | return err; | 590 | return err; | 
| 590 | 591 | ||
| 591 | bs->cur = beg + len; | 592 | bs->cur = beg + len; | 
| @@ -660,18 +661,20 @@ int decode_seqof(bitstr_t * bs, field_t * f, char *base, int level) | |||
| 660 | i < | 661 | i < | 
| 661 | effective_count ? | 662 | effective_count ? | 
| 662 | base : NULL, | 663 | base : NULL, | 
| 663 | level + 1)) > | 664 | level + 1)) < | 
| 664 | H323_ERROR_STOP) | 665 | H323_ERROR_NONE) | 
| 665 | return err; | 666 | return err; | 
| 666 | 667 | ||
| 667 | bs->cur = beg + len; | 668 | bs->cur = beg + len; | 
| 668 | bs->bit = 0; | 669 | bs->bit = 0; | 
| 669 | } else | 670 | } else | 
| 670 | if ((err = (Decoders[son->type]) (bs, son, | 671 | if ((err = (Decoders[son->type]) (bs, son, | 
| 671 | i < effective_count ? | 672 | i < | 
| 672 | base : NULL, | 673 | effective_count ? | 
| 673 | level + 1))) | 674 | base : NULL, | 
| 674 | return err; | 675 | level + 1)) < | 
| 676 | H323_ERROR_NONE) | ||
| 677 | return err; | ||
| 675 | 678 | ||
| 676 | if (base) | 679 | if (base) | 
| 677 | base += son->offset; | 680 | base += son->offset; | 
| @@ -735,13 +738,14 @@ int decode_choice(bitstr_t * bs, field_t * f, char *base, int level) | |||
| 735 | } | 738 | } | 
| 736 | beg = bs->cur; | 739 | beg = bs->cur; | 
| 737 | 740 | ||
| 738 | if ((err = (Decoders[son->type]) (bs, son, base, level + 1)) > | 741 | if ((err = (Decoders[son->type]) (bs, son, base, level + 1)) < | 
| 739 | H323_ERROR_STOP) | 742 | H323_ERROR_NONE) | 
| 740 | return err; | 743 | return err; | 
| 741 | 744 | ||
| 742 | bs->cur = beg + len; | 745 | bs->cur = beg + len; | 
| 743 | bs->bit = 0; | 746 | bs->bit = 0; | 
| 744 | } else if ((err = (Decoders[son->type]) (bs, son, base, level + 1))) | 747 | } else if ((err = (Decoders[son->type]) (bs, son, base, level + 1)) < | 
| 748 | H323_ERROR_NONE) | ||
| 745 | return err; | 749 | return err; | 
| 746 | 750 | ||
| 747 | return H323_ERROR_NONE; | 751 | return H323_ERROR_NONE; | 
