From 7cb9122d67353d6f8458792eeb187f01e96a967d Mon Sep 17 00:00:00 2001 From: Victor Julien Date: Fri, 25 Jan 2019 12:00:13 +0100 Subject: [PATCH] dcerpc/udp: fix int mishandling in opnum parsing For Big Endian support in the protocol, the opnum would not be set correctly. Found using undefined sanitizer. --- src/app-layer-dcerpc-udp.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app-layer-dcerpc-udp.c b/src/app-layer-dcerpc-udp.c index e891c3eeeb..8a2c8bad9e 100644 --- a/src/app-layer-dcerpc-udp.c +++ b/src/app-layer-dcerpc-udp.c @@ -242,8 +242,8 @@ static int DCERPCUDPParseHeader(Flow *f, void *dcerpcudp_state, sstate->dcerpc.dcerpchdrudp.seqnum |= (uint32_t) *(p + 65) << 16; sstate->dcerpc.dcerpchdrudp.seqnum |= (uint32_t) *(p + 66) << 8; sstate->dcerpc.dcerpchdrudp.seqnum |= (uint32_t) *(p + 67); - sstate->dcerpc.dcerpchdrudp.opnum = *(p + 68) << 24; - sstate->dcerpc.dcerpchdrudp.opnum |= *(p + 69) << 16; + sstate->dcerpc.dcerpchdrudp.opnum = *(p + 68) << 8; + sstate->dcerpc.dcerpchdrudp.opnum |= *(p + 69); sstate->dcerpc.dcerpchdrudp.ihint = *(p + 70) << 8; sstate->dcerpc.dcerpchdrudp.ihint |= *(p + 71); sstate->dcerpc.dcerpchdrudp.ahint = *(p + 72) << 8; -- 2.47.2