[Oisf-devel] [PATCH] Checksum match: fix logic problem
Victor Julien
victor at inliniac.net
Thu Dec 30 18:48:10 UTC 2010
Good catch Eric!
Applied, thanks a lot.
Cheers,
Victor
On 12/29/2010 10:42 PM, Eric Leblond wrote:
> This patch fixes a logic error in the checksum matches. In
> case the protocol is not the one tested, the test must return
> 0 and not 1 (test matched).
>
> Signed-off-by: Eric Leblond <eric at regit.org>
> ---
> src/detect-csum.c | 14 +++++++-------
> 1 files changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/src/detect-csum.c b/src/detect-csum.c
> index 652afc4..febb8c7 100644
> --- a/src/detect-csum.c
> +++ b/src/detect-csum.c
> @@ -231,7 +231,7 @@ int DetectIPV4CsumMatch(ThreadVars *t, DetectEngineThreadCtx *det_ctx,
> DetectCsumData *cd = (DetectCsumData *)m->ctx;
>
> if (p->ip4h == NULL)
> - return 1;
> + return 0;
>
> if (p->ip4c.comp_csum == -1)
> p->ip4c.comp_csum = IPV4CalculateChecksum((uint16_t *)p->ip4h,
> @@ -321,7 +321,7 @@ int DetectTCPV4CsumMatch(ThreadVars *t, DetectEngineThreadCtx *det_ctx,
> DetectCsumData *cd = (DetectCsumData *)m->ctx;
>
> if (p->ip4h == NULL || p->proto != IPPROTO_TCP)
> - return 1;
> + return 0;
>
> if (p->tcpc.comp_csum == -1)
> p->tcpc.comp_csum = TCPCalculateChecksum((uint16_t *)&(p->ip4h->ip_src),
> @@ -413,7 +413,7 @@ int DetectTCPV6CsumMatch(ThreadVars *t, DetectEngineThreadCtx *det_ctx,
> DetectCsumData *cd = (DetectCsumData *)m->ctx;
>
> if (p->ip6h == NULL || p->proto != IPPROTO_TCP)
> - return 1;
> + return 0;
>
> if (p->tcpc.comp_csum == -1)
> p->tcpc.comp_csum = TCPV6CalculateChecksum((uint16_t *)&(p->ip6h->ip6_src),
> @@ -505,7 +505,7 @@ int DetectUDPV4CsumMatch(ThreadVars *t, DetectEngineThreadCtx *det_ctx,
> DetectCsumData *cd = (DetectCsumData *)m->ctx;
>
> if (p->ip4h == NULL || p->proto != IPPROTO_UDP)
> - return 1;
> + return 0;
>
> if (p->udpc.comp_csum == -1)
> p->udpc.comp_csum = UDPV4CalculateChecksum((uint16_t *)&(p->ip4h->ip_src),
> @@ -597,7 +597,7 @@ int DetectUDPV6CsumMatch(ThreadVars *t, DetectEngineThreadCtx *det_ctx,
> DetectCsumData *cd = (DetectCsumData *)m->ctx;
>
> if (p->ip6h == NULL || p->proto != IPPROTO_UDP)
> - return 1;
> + return 0;
>
> if (p->udpc.comp_csum == -1)
> p->udpc.comp_csum = UDPV6CalculateChecksum((uint16_t *)&(p->ip6h->ip6_src),
> @@ -689,7 +689,7 @@ int DetectICMPV4CsumMatch(ThreadVars *t, DetectEngineThreadCtx *det_ctx,
> DetectCsumData *cd = (DetectCsumData *)m->ctx;
>
> if (p->ip4h == NULL || p->proto != IPPROTO_ICMP)
> - return 1;
> + return 0;
>
> if (p->icmpv4c.comp_csum == -1)
> p->icmpv4c.comp_csum = ICMPV4CalculateChecksum((uint16_t *)p->icmpv4h,
> @@ -780,7 +780,7 @@ int DetectICMPV6CsumMatch(ThreadVars *t, DetectEngineThreadCtx *det_ctx,
> DetectCsumData *cd = (DetectCsumData *)m->ctx;
>
> if (p->ip6h == NULL || p->proto != IPPROTO_ICMPV6)
> - return 1;
> + return 0;
>
> if (p->icmpv6c.comp_csum == -1)
> p->icmpv6c.comp_csum = ICMPV6CalculateChecksum((uint16_t *)&(p->ip6h->ip6_src),
--
---------------------------------------------
Victor Julien
http://www.inliniac.net/
PGP: http://www.inliniac.net/victorjulien.asc
---------------------------------------------
More information about the Oisf-devel
mailing list