[Bug 289198] inet_net_pton is broken with AF_INET6

[email protected]
Newsgroups gmane.os.freebsd.devel.net
Message-ID <[email protected]/bugzilla/>
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=289198

--- Comment #7 from [email protected] ---
A commit in branch stable/14 references this bug:

URL:
https://cgit.FreeBSD.org/src/commit/?id=b4871be3490de56975777079c1767d1fd346ac7a

commit b4871be3490de56975777079c1767d1fd346ac7a
Author:     Lexi Winter <[email protected]>
AuthorDate: 2025-10-18 14:18:40 +0000
Commit:     Lexi Winter <[email protected]>
CommitDate: 2025-10-25 04:29:04 +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 <[email protected]>
    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)

 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.
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.