Use of initialized variable in strtod.c
Craig Howland
howland@LGSInnovations.com
Wed Mar 15 18:34:00 GMT 2017
On 03/15/2017 02:16 PM, Joel Sherrill wrote:
> Hi
>
> I have looked at this one enough to believe it is
> a real issue but have no idea what the proper
> solution is. Maybe someone is more familiar with
> this routine can help.
>
> This looks like it was introduced in 2006 by Jeff
> Johnston but I don't expect him to remember it. :)
>
> https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;a=commit;f=newlib/libc/stdlib/strtod.c;h=f489b5943c8f8655b0a3caddd38114111576ab35
>
>
> 2006-06-22 Jeff Johnston <jjohnstn@redhat.com>
>
> * libc/stdlib/Makefile.am: Add new gdtoa routines.
> * libc/stdlib/Makefile.in: Regenerated.
> * libc/stdlib/gd_qnan.h: New file.
> * libc/stdlib/gdtoa-gethex.c: Ditto.
> * libc/stdlib/gdtoa-hexnan.c: Ditto.
> * libc/stdlib/gdtoa.h: Ditto.
> * libc/stdlib/mprec.c: Add new helper routines needed by
> the new gdtoa code.
> * libc/stdlib/mprec.h: Integrate some defines and prototypes
> used by gdtoa routines here.
> * libc/stdlib/strtod.c: Rebased on David M. Gay's gdtoa-strtod.c
> which adds C99 support such as nan, inf, and hexadecimal input
> format.
>
> Basically if (bb) is false, then bits is not set
> and it is used as input to ULtod.
>
> 334 if (bb) {
> 335 copybits(bits, fpi.nbits, bb);
> 336 Bfree(ptr,bb);
> 337 }
>
> CID 175379 (#1 of 1): Uninitialized scalar variable (UNINIT)
> 10. uninit_use_in_call: Using uninitialized element of array bits when calling
> ULtod. [show details]
> 338 ULtod(rv.i, bits, exp, i);
>
> Hopefully someone has some insight on how to fix this.
>
> Thanks.
>
I took a quick look, and I think (it's been ages since I had to do some editing
in strtod.c) it is OK. Specifically, it does appear that bb is only ever
returned as 0 in a case when ULtod does not need the value of bits. So while
Coverity it right that it could be a problem, it is not really.
Craig
More information about the Newlib
mailing list