On Tue, Apr 29, 2014 at 10:57:50 +0200, Martin Kletzander wrote:
On Tue, Apr 29, 2014 at 10:45:56AM +0200, Jiri Denemark wrote:
>On Tue, Apr 29, 2014 at 10:36:51 +0200, Michal Privoznik wrote:
>> Currently, there's an issue with virStrToLong_* APIs that they turn
>> "-1" into UINT_MAX. While this is not acceptable, it works on 64 bit
>> architectures and doesn't work on 32 bit ones. I know that much
>> cleaner solution is required, but given that we are in the freeze we
>> may as well just skip the test on 32 bits.
>
>I think a workaround using strtoull instead of stroul in virStrToLong_ui
>would be better, even though I don't like that solution either. Your
>workaround disables the check but keeps the functionality which is
>tested here broken.
>
Moreover, Pavel found out that strtoul should set errno to ERANGE in
case of the problem described here. The only problem is that we *are*
checking for errno there and it just passes :(
But only in case the non-negative value does not fit in. If it fits, no
error is reported even though negative number is parsed. The API is just
insane.
Jirka