2012/7/12 Pascal Quantin <pascal.quan...@gmail.com>

> 2012/7/10 Pascal Quantin <pascal.quan...@gmail.com>
>
>> 2012/7/10 Anders Broman <a.bro...@bredband.net>
>>
>>> Guy Harris skrev 2012-07-10 01:34:
>>>
>>>  On Jul 9, 2012, at 2:41 PM, 
>>> buildbot-no-reply@wireshark.**org<buildbot-no-re...@wireshark.org>wrote:
>>>>
>>>>  The Buildbot has detected a new failure on builder OSX-10.5-x86 while
>>>>> building Wireshark (development).
>>>>> Full details are available at:
>>>>> http://buildbot.wireshark.org/**trunk/builders/OSX-10.5-x86/**
>>>>> builds/1821<http://buildbot.wireshark.org/trunk/builders/OSX-10.5-x86/builds/1821>
>>>>>
>>>>> Buildbot URL: 
>>>>> http://buildbot.wireshark.org/**trunk/<http://buildbot.wireshark.org/trunk/>
>>>>>
>>>>> Buildslave for this Build: osx-10.5-x86
>>>>>
>>>>> Build Reason: scheduler
>>>>> Build Source Stamp: 43629
>>>>> Blamelist: pascal
>>>>>
>>>>> BUILD FAILED: failed compile
>>>>>
>>>> /bin/sh ../../libtool --tag=CC   --mode=compile ccache gcc
>>>> -DHAVE_CONFIG_H -I. -I../.. -I./../.. -I./.. -I/usr/local/include
>>>> -I/usr/local/include  -DINET6 -DG_DISABLE_DEPRECATED
>>>> -DG_DISABLE_SINGLE_INCLUDES -DGTK_DISABLE_DEPRECATED -DGTK_DISAB
>>>> LE_SINGLE_INCLUDES -D_U_="__attribute__((unused))**"
>>>>  -D_FORTIFY_SOURCE=2 -I/usr/local/include  '-DPLUGIN_DIR="/usr/local/lib/
>>>> **wireshark/plugins/1.9.0-SVN-**43629"' -Werror -no-cpp-precomp -g -O2
>>>> -Wall -W -Wextra -Wdeclaration-after-statement -Wendif-labels
>>>> -Wpointer-arith -Wno-pointer-sign -Wcast-align -Wformat-security
>>>> -Wold-style-definition -I/usr/X11/include/freetype2 -I/usr/X11/include
>>>> -I/usr/X11/include/libpng12 -I/usr/X11/include/pixman-1
>>>> -I/usr/local/include/gtk-2.0 -I/usr/local/lib/gtk-2.0/**include
>>>> -I/usr/local/include/atk-1.0 -I/usr/local/include/cairo
>>>> -I/usr/local/include/pango-1.0 -I/usr/local/include/glib-2.0
>>>> -I/usr/local/lib/glib-2.0/**include   -MT libdissectors_la-packet-mpeg-
>>>> **audio.lo -MD -MP -MF .deps/libdissectors_la-packet-**mpeg-audio.Tpo
>>>> -c -o libdissectors_la-packet-mpeg-**audio.lo `test -f
>>>> 'packet-mpeg-audio.c' || echo './'`packet-mpeg-audio.c
>>>> cc1: warnings being treated as errors
>>>> ../../asn1/lpp/lpp.cnf: In function 'dissect_lpp_INTEGER_**M2147483648_
>>>> 2147483647':
>>>> ../../asn1/lpp/lpp.cnf:1328: warning: this decimal constant is unsigned
>>>> only in ISO C90
>>>>
>>>> The offending code is
>>>>
>>>> static int
>>>> dissect_lpp_INTEGER_**M2147483648_2147483647(tvbuff_t *tvb _U_, int
>>>> offset _U_, asn1_ctx_t *actx _U_, proto_tree *tree _U_, int hf_index _U_) {
>>>>    offset = dissect_per_constrained_**integer(tvb, offset, actx, tree,
>>>> hf_index,
>>>>                                                              -
>>>> 2147483648, 2147483647U, NULL, FALSE);
>>>>
>>>>    return offset;
>>>> }
>>>>
>>>> The two integral constants in that call correspond to guint32
>>>> arguments; the first of those is, obviously, negative.
>>>>
>>>> ITU-T Recommendation X.680 says
>>>>
>>>>         3.8.40  integer type: A simple type with distinguished values
>>>> which are the positive and negative whole numbers, including zero (as a
>>>> single value).
>>>>
>>>>                 NOTE – Particular encoding rules limit the range of an
>>>> integer, but such limitations are chosen so as not to affect any user of
>>>> ASN.1.
>>>>
>>>> and I don't see anything about a type that includes only the positive
>>>> whole numbers, including zero - i.e., no unsigned type - so perhaps, if
>>>> we're to strictly interpret ASN.1, either all integral types should be
>>>> signed, and any integral type with values>  2147483647 should be
>>>> 64-bit (or we should introduce bignums so that we don't have to bail out on
>>>> *any* ASN.1 number) or, at least, all *unconstrained* integral types should
>>>> be signed and 64-bit (or, if we introduce bignums, bignum), with only
>>>> integral types constrained to a minimum value>= 0 unsigned, and with the
>>>> width of the type chosen based on the constraints.
>>>>
>>>> The right short-term fix might be to make the arguments to
>>>> dissect_per_constrained_**integer() be gint64 rather than guint32 -
>>>> and perhaps have the pointer for the returned value be a gint64 * rather
>>>> than a guint32 *.
>>>>
>>> Yes I vote for that.
>>
>>
>> Hi Guy and Anders,
>>
>> sorry for the breakage, it was compiling fine with both my Ubuntu and
>> Windows boxes :/
>>
>> By modifying a bit asn2wrs.py so as to add G_GINT64_CONSTANT for -2^31
>> also fixes the compilation but I'm not sure this is the best idea...
>> Index: tools/asn2wrs.py
>> ===================================================================
>> --- tools/asn2wrs.py    (revision 43636)
>> +++ tools/asn2wrs.py    (working copy)
>> @@ -3225,7 +3225,7 @@
>>      if str(minv).isdigit():
>>        minv += 'U'
>>      elif (str(minv)[0] == "-") and str(minv)[1:].isdigit():
>> -      if (long(minv) < -(2**31)):
>> +      if (long(minv) <= -(2**31)):
>>          minv = "G_GINT64_CONSTANT(%s)" % (str(minv))
>>      if str(maxv).isdigit():
>>        if (long(maxv) >= 2**32):
>>
>
> Hi,
>
> According to
> http://stackoverflow.com/questions/9941261/warning-this-decimal-constant-is-unsigned-only-in-iso-c90the
>  warning we see is expected (that's why INT32_MIN is defined as
> (-INT32_MAX - 1L) for example).
> Does the use of the G_GINT64_CONSTANT macro for this specific value (as
> done in the patch above) seems an acceptable workaround for everybody?
> Alternatively we could change asn2wrs.py so as to replace -2^31 by
> G_MININT32 (that also removes the warning).
>

Unless anyone objects in the next few days, I intend to replace -2^31 by
G_MININT32 and move the impacted ASN.1 dissectors from dirty to clean
library.

Regards,
Pascal.
___________________________________________________________________________
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-requ...@wireshark.org?subject=unsubscribe

Reply via email to