Wireshark mailing list archives

Re: Netflow dissector bug-to-be


From: Hadriel Kaplan <HKaplan () acmepacket com>
Date: Sun, 7 Nov 2010 17:15:15 -0500


On Nov 7, 2010, at 4:13 PM, Jakub Zawadzki wrote:

On Sun, Nov 07, 2010 at 03:37:36PM -0500, Hadriel Kaplan wrote:

I really don't want to force it bigger than int, I just want to make it unsigned.

cause:
      (gdb) call /x (unsigned long long) (0xdead << 16)
      $1 = 0xffffffffdead0000
      (gdb) call /x (unsigned long long) (0xdeadU << 16)
      $2 = 0xdead0000

and I'm afraid in your case (VENDOR_FOO << 16) is sign extended to uint64_t.
(btw. you can check it using disassembly)

Ahhh - yup, you're right!  That did the trick.

gcc errors that the switch's case statement is not an integer... and apparently ISO C agrees with it: switch/case is 
defined to use an int size

Well mine[1] version of C99 standard speaks only about *integer constants*, and unsigned long long constant is still 
integer one.
Can't find information about int size.

gcc-4.4.4 compiles & run attached test without problem (both on -m32 -m64)
Can you try it?

Yup, worked.

[1] http://www.open-std.org/jtc1/sc22/WG14/www/docs/n1256.pdf

Right, but doesn't section 6.8.4.2 say it?  Oh wait, you mean it says integer but it's a long long integer so it's ok.  
Weird... I know I got a compiler warning when I tried forcing it originally.  Maybe I was using a variable after all 
instead of a constant.  I'm usually good about not doing that, but I must've 'cause it's compiling fine now... spent 
too long pulling my hair out trying to figure out why my code wasn't working when I copied Cace Technology's example, 
to remember all the things I tried.

Thanks!

So maybe a comment should be added to sminmpec.h to do that for anyone adding VENDOR_xxx to the list?

-hadriel

___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <wireshark-dev () wireshark org>
Archives:    http://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-request () wireshark org?subject=unsubscribe


Current thread: