NetBSD-Bugs archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: lib/58453: endptr can be unitialized if an invalid base is passed to strto*(3)
What exactly is this bug report about?
The referenced message from Alejandro Colomar is about about
just strtoi() (which used strtoimax() incorrectly) and which
you fixed.
That the other strto*() functions don't leave any defined value
in *endptr when an invalid base is provided (which is really just
a bug in the application) isn't unexpected, as Alejandro's 2nd
message indicates, and POSIX makes expicit:
APPLICATION USAGE
Since the value of *endptr is unspecified if the value of base
is not supported, applications should either ensure that base
has a supported value (0 or between 2 and 36) before the call,
or check for an [EINVAL] error before examining *endptr.
The test program provided in this PR is incorrect, as it fails to make that
check (especially as it is explicitly providing an invalid base).
kre
ps: Note that this doesn't mean that we couldn't put something specific
in *endptr in the case of an invalid base, but anything which ends up
relying upon that would be broken. Perhaps we could set it to NULL or
(void *)-1 so any attempt to dereference it would fault, though technically
simply referencing it is UB.
Home |
Main Index |
Thread Index |
Old Index