inet_pton: fix uninitialized memory use for IPv4-mapped IPv6 addresses
authorAlexey Izbyshev <izbyshev@ispras.ru>
Thu, 26 Jan 2023 11:47:39 +0000 (14:47 +0300)
committerRich Felker <dalias@aerifal.cx>
Sun, 12 Feb 2023 22:42:37 +0000 (17:42 -0500)
commit7e13e5ae69a243b90b90d2f4b79b2a150f806335
tree9ddb9075b4a043dabcdf556bc82ed2d144f898cf
parent7e6da7ac98efdc8167ed2d109298ba232a9a7ba3
inet_pton: fix uninitialized memory use for IPv4-mapped IPv6 addresses

When a dot is encountered, the loop counter is incremented before
exiting the loop, but the corresponding ip array element is left
uninitialized, so the subsequent memmove (if "::" was seen) and the
loop copying ip to the output buffer will operate on an uninitialized
uint16_t.

The uninitialized data never directly influences the control flow and
is overwritten on successful return by the second half of the parsed
IPv4 address. But it's better to fix this to avoid unexpected
transformations by a sufficiently smart compiler and reports from
UB-detection tools.
src/network/inet_pton.c