[Bug 289198] inet_net_pton is broken with AF_INET6

From: <bugzilla-noreply_at_freebsd.org>
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.