[Bug 289198] inet_net_pton is broken with AF_INET6
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Sat, 25 Oct 2025 04:42:41 UTC
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=289198
--- Comment #8 from commit-hook@FreeBSD.org ---
A commit in branch stable/13 references this bug:
URL:
https://cgit.FreeBSD.org/src/commit/?id=857897013b01818814c1019a1b47164dfeb7951f
commit 857897013b01818814c1019a1b47164dfeb7951f
Author: Lexi Winter <ivy@FreeBSD.org>
AuthorDate: 2025-10-25 04:41:37 +0000
Commit: Lexi Winter <ivy@FreeBSD.org>
CommitDate: 2025-10-25 04:41:37 +0000
libc: Import OpenBSD's inet_net_{ntop,pton}
Our versions of these functions (originally taken from BIND) simply
don't work correctly for AF_INET6. These were removed from BIND itself
quite a while ago, but OpenBSD has made several fixes in the mean time,
so import their code.
Add tests for both functions.
PR: 289198
Reported by: Nico Sonack <nsonack@herrhotzenplotz.de>
MFC after: 1 week
Reviewed by: des
Obtained from: OpenBSD (lib/libc/net)
Sponsored by: https://www.patreon.com/bsdivy
Differential Revision: https://reviews.freebsd.org/D52629
(cherry picked from commit 8f4a0d2f7b96099001dbc51e06114df1a0e6d291)
inet_net_test: Compare pointers against nullptr
GCC does not like passing NULL (__null) to std::ostringstream::operator<<
inside of ATF_REQUIRE_EQ:
lib/libc/tests/net/inet_net_test.cc: In member function 'virtual void
{anonymous}::atfu_tc_inet_net_ntop_invalid::body() const':
lib/libc/tests/net/inet_net_test.cc:306:9: error: passing NULL to
non-pointer argument 1 of 'std::__1::basic_ostream<_CharT, _Traits>&
std::__1::basic_ostream<_CharT, _Traits>::operator<<(long int) [with _CharT =
char; _Traits = std::__1::char_traits<char>]' [-Werror=conversion-null]
306 | ATF_REQUIRE_EQ(ret, NULL);
| ^~~~~~~~~~~~~~
In file included from
/usr/obj/.../amd64.amd64/tmp/usr/include/c++/v1/sstream:317,
from
/usr/obj/.../amd64.amd64/tmp/usr/include/atf-c++/macros.hpp:29,
from
/usr/obj/.../amd64.amd64/tmp/usr/include/atf-c++.hpp:29,
from lib/libc/tests/net/inet_net_test.cc:33:
/usr/obj/.../amd64.amd64/tmp/usr/include/c++/v1/__ostream/basic_ostream.h:338:81:
note: declared here
338 | basic_ostream<_CharT, _Traits>& basic_ostream<_CharT,
_Traits>::operator<<(long __n) {
|
~~~~~^~~
...
Fixes: 8f4a0d2f7b96 ("libc: Import OpenBSD's
inet_net_{ntop,pton}")
(cherry picked from commit aa358ce3ca8e1fcfb305025fd00beb2a119c7c77)
inet_net_test: Use int to hold expected return values from inet_net_pton
GCC warns about the sign mismatch in comparisons:
lib/libc/tests/net/inet_net_test.cc: In member function 'virtual void
{anonymous}::atfu_tc_inet_net_inet4::body() const':
lib/libc/tests/net/inet_net_test.cc:86:17: error: comparison of integer
expressions of different signedness: 'int' and 'const unsigned int'
[-Werror=sign-compare]
86 | ATF_REQUIRE_EQ(bits, addr.bits);
| ^~~~~~~~~~~~~~
lib/libc/tests/net/inet_net_test.cc: In member function 'virtual void
{anonymous}::atfu_tc_inet_net_inet6::body() const':
lib/libc/tests/net/inet_net_test.cc:205:17: error: comparison of integer
expressions of different signedness: 'int' and 'const unsigned int'
[-Werror=sign-compare]
205 | ATF_REQUIRE_EQ(bits, addr.bits);
| ^~~~~~~~~~~~~~
Fixes: 8f4a0d2f7b96 ("libc: Import OpenBSD's
inet_net_{ntop,pton}")
(cherry picked from commit e1aeb58cbbc3839db93ec38ce491b7b9383d5649)
(cherry picked from commit b4871be3490de56975777079c1767d1fd346ac7a)
lib/libc/inet/inet_net_ntop.c | 206 +++++------------
lib/libc/inet/inet_net_pton.c | 363 +++++++++---------------------
lib/libc/tests/net/Makefile | 2 +
lib/libc/tests/net/inet_net_test.cc (new) | 333 +++++++++++++++++++++++++++
4 files changed, 492 insertions(+), 412 deletions(-)
--
You are receiving this mail because:
You are on the CC list for the bug.