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).

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