[2/2] Add _FORTIFY_SOURCE support for inet_ntop
Checks
Commit Message
Add function __inet_pton_chk which calls __chk_fail when the size of
argument dst is too small. inet_pton is redirected to __inet_pton_chk
or __inet_pton_warn when _FORTIFY_SOURCE is > 0.
Also add tests to debug/tst-fortify.c, update the abilist with
__inet_pton_chk and mention inet_pton fortification in maint.texi.
Co-authored-by: Frédéric Bérat <fberat@redhat.com>
---
debug/Makefile | 1 +
debug/Versions | 1 +
debug/inet_pton_chk.c | 30 +++++++++++++++++++
debug/tst-fortify.c | 24 +++++++++++++++
include/arpa/inet.h | 2 ++
inet/bits/inet-fortified-decl.h | 7 +++++
inet/bits/inet-fortified.h | 20 +++++++++++++
manual/maint.texi | 2 ++
sysdeps/mach/hurd/i386/libc.abilist | 1 +
sysdeps/mach/hurd/x86_64/libc.abilist | 1 +
sysdeps/unix/sysv/linux/aarch64/libc.abilist | 1 +
sysdeps/unix/sysv/linux/alpha/libc.abilist | 1 +
sysdeps/unix/sysv/linux/arc/libc.abilist | 1 +
sysdeps/unix/sysv/linux/arm/be/libc.abilist | 1 +
sysdeps/unix/sysv/linux/arm/le/libc.abilist | 1 +
sysdeps/unix/sysv/linux/csky/libc.abilist | 1 +
sysdeps/unix/sysv/linux/hppa/libc.abilist | 1 +
sysdeps/unix/sysv/linux/i386/libc.abilist | 1 +
.../sysv/linux/loongarch/lp64/libc.abilist | 1 +
.../sysv/linux/m68k/coldfire/libc.abilist | 1 +
.../unix/sysv/linux/m68k/m680x0/libc.abilist | 1 +
.../sysv/linux/microblaze/be/libc.abilist | 1 +
.../sysv/linux/microblaze/le/libc.abilist | 1 +
.../sysv/linux/mips/mips32/fpu/libc.abilist | 1 +
.../sysv/linux/mips/mips32/nofpu/libc.abilist | 1 +
.../sysv/linux/mips/mips64/n32/libc.abilist | 1 +
.../sysv/linux/mips/mips64/n64/libc.abilist | 1 +
sysdeps/unix/sysv/linux/or1k/libc.abilist | 1 +
.../linux/powerpc/powerpc32/fpu/libc.abilist | 1 +
.../powerpc/powerpc32/nofpu/libc.abilist | 1 +
.../linux/powerpc/powerpc64/be/libc.abilist | 1 +
.../linux/powerpc/powerpc64/le/libc.abilist | 1 +
.../unix/sysv/linux/riscv/rv32/libc.abilist | 1 +
.../unix/sysv/linux/riscv/rv64/libc.abilist | 1 +
.../unix/sysv/linux/s390/s390-32/libc.abilist | 1 +
.../unix/sysv/linux/s390/s390-64/libc.abilist | 1 +
sysdeps/unix/sysv/linux/sh/be/libc.abilist | 1 +
sysdeps/unix/sysv/linux/sh/le/libc.abilist | 1 +
.../sysv/linux/sparc/sparc32/libc.abilist | 1 +
.../sysv/linux/sparc/sparc64/libc.abilist | 1 +
.../unix/sysv/linux/x86_64/64/libc.abilist | 1 +
.../unix/sysv/linux/x86_64/x32/libc.abilist | 1 +
42 files changed, 121 insertions(+)
create mode 100644 debug/inet_pton_chk.c
Comments
Apologies, the subject should refer to inet_pton, not inet_ntop.
Aaron
On Thu, Mar 20, 2025 at 1:29 PM Aaron Merey <amerey@redhat.com> wrote:
>
> Add function __inet_pton_chk which calls __chk_fail when the size of
> argument dst is too small. inet_pton is redirected to __inet_pton_chk
> or __inet_pton_warn when _FORTIFY_SOURCE is > 0.
>
> Also add tests to debug/tst-fortify.c, update the abilist with
> __inet_pton_chk and mention inet_pton fortification in maint.texi.
>
> Co-authored-by: Frédéric Bérat <fberat@redhat.com>
> ---
> debug/Makefile | 1 +
> debug/Versions | 1 +
> debug/inet_pton_chk.c | 30 +++++++++++++++++++
> debug/tst-fortify.c | 24 +++++++++++++++
> include/arpa/inet.h | 2 ++
> inet/bits/inet-fortified-decl.h | 7 +++++
> inet/bits/inet-fortified.h | 20 +++++++++++++
> manual/maint.texi | 2 ++
> sysdeps/mach/hurd/i386/libc.abilist | 1 +
> sysdeps/mach/hurd/x86_64/libc.abilist | 1 +
> sysdeps/unix/sysv/linux/aarch64/libc.abilist | 1 +
> sysdeps/unix/sysv/linux/alpha/libc.abilist | 1 +
> sysdeps/unix/sysv/linux/arc/libc.abilist | 1 +
> sysdeps/unix/sysv/linux/arm/be/libc.abilist | 1 +
> sysdeps/unix/sysv/linux/arm/le/libc.abilist | 1 +
> sysdeps/unix/sysv/linux/csky/libc.abilist | 1 +
> sysdeps/unix/sysv/linux/hppa/libc.abilist | 1 +
> sysdeps/unix/sysv/linux/i386/libc.abilist | 1 +
> .../sysv/linux/loongarch/lp64/libc.abilist | 1 +
> .../sysv/linux/m68k/coldfire/libc.abilist | 1 +
> .../unix/sysv/linux/m68k/m680x0/libc.abilist | 1 +
> .../sysv/linux/microblaze/be/libc.abilist | 1 +
> .../sysv/linux/microblaze/le/libc.abilist | 1 +
> .../sysv/linux/mips/mips32/fpu/libc.abilist | 1 +
> .../sysv/linux/mips/mips32/nofpu/libc.abilist | 1 +
> .../sysv/linux/mips/mips64/n32/libc.abilist | 1 +
> .../sysv/linux/mips/mips64/n64/libc.abilist | 1 +
> sysdeps/unix/sysv/linux/or1k/libc.abilist | 1 +
> .../linux/powerpc/powerpc32/fpu/libc.abilist | 1 +
> .../powerpc/powerpc32/nofpu/libc.abilist | 1 +
> .../linux/powerpc/powerpc64/be/libc.abilist | 1 +
> .../linux/powerpc/powerpc64/le/libc.abilist | 1 +
> .../unix/sysv/linux/riscv/rv32/libc.abilist | 1 +
> .../unix/sysv/linux/riscv/rv64/libc.abilist | 1 +
> .../unix/sysv/linux/s390/s390-32/libc.abilist | 1 +
> .../unix/sysv/linux/s390/s390-64/libc.abilist | 1 +
> sysdeps/unix/sysv/linux/sh/be/libc.abilist | 1 +
> sysdeps/unix/sysv/linux/sh/le/libc.abilist | 1 +
> .../sysv/linux/sparc/sparc32/libc.abilist | 1 +
> .../sysv/linux/sparc/sparc64/libc.abilist | 1 +
> .../unix/sysv/linux/x86_64/64/libc.abilist | 1 +
> .../unix/sysv/linux/x86_64/x32/libc.abilist | 1 +
> 42 files changed, 121 insertions(+)
> create mode 100644 debug/inet_pton_chk.c
>
> diff --git a/debug/Makefile b/debug/Makefile
> index 905f2bf7e0..dabeb6c375 100644
> --- a/debug/Makefile
> +++ b/debug/Makefile
> @@ -56,6 +56,7 @@ routines = \
> gets_chk \
> getwd_chk \
> inet_ntop_chk \
> + inet_pton_chk \
> longjmp_chk \
> mbsnrtowcs_chk \
> mbsrtowcs_chk \
> diff --git a/debug/Versions b/debug/Versions
> index 2ae5747f8d..6b9ec1eb46 100644
> --- a/debug/Versions
> +++ b/debug/Versions
> @@ -66,6 +66,7 @@ libc {
> }
> GLIBC_2.42 {
> __inet_ntop_chk;
> + __inet_pton_chk;
> }
> GLIBC_PRIVATE {
> __fortify_fail;
> diff --git a/debug/inet_pton_chk.c b/debug/inet_pton_chk.c
> new file mode 100644
> index 0000000000..965cf5e116
> --- /dev/null
> +++ b/debug/inet_pton_chk.c
> @@ -0,0 +1,30 @@
> +/* Copyright (C) 2025 Free Software Foundation, Inc.
> + This file is part of the GNU C Library.
> +
> + The GNU C Library is free software; you can redistribute it and/or
> + modify it under the terms of the GNU Lesser General Public
> + License as published by the Free Software Foundation; either
> + version 2.1 of the License, or (at your option) any later version.
> +
> + The GNU C Library is distributed in the hope that it will be useful,
> + but WITHOUT ANY WARRANTY; without even the implied warranty of
> + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
> + Lesser General Public License for more details.
> +
> + You should have received a copy of the GNU Lesser General Public
> + License along with the GNU C Library; if not, see
> + <https://www.gnu.org/licenses/>. */
> +
> +#include <arpa/inet.h>
> +#include <stdio.h>
> +
> +int
> +__inet_pton_chk (int af, const char *src, void *dst, size_t dst_size)
> +{
> + if ((af == AF_INET && dst_size < 4)
> + || (af == AF_INET6 && dst_size < 16))
> + __chk_fail ();
> +
> + return __inet_pton (af, src, dst);
> +}
> +libc_hidden_def (__inet_pton_chk)
> diff --git a/debug/tst-fortify.c b/debug/tst-fortify.c
> index cd649369d9..c4c28e6e13 100644
> --- a/debug/tst-fortify.c
> +++ b/debug/tst-fortify.c
> @@ -1853,6 +1853,30 @@ do_test (void)
> CHK_FAIL_END
> #endif
>
> + const char *ipv4str = "127.0.0.1";
> + const char *ipv6str = "::1";
> +
> + if (inet_pton (AF_INET, ipv4str, (void *) &addr) != 1)
> + FAIL ();
> + if (inet_pton (AF_INET6, ipv6str, (void *) &addr6) != 1)
> + FAIL ();
> +
> +#if __USE_FORTIFY_LEVEL >= 1
> + char smallbuf[2];
> +
> + CHK_FAIL_START
> + inet_pton (AF_INET, ipv4str, (void *) smallbuf);
> + CHK_FAIL_END
> +
> + CHK_FAIL_START
> + inet_pton (AF_INET6, ipv6str, (void *) smallbuf);
> + CHK_FAIL_END
> +
> + CHK_FAIL_START
> + inet_pton (AF_INET6, ipv6str, (void *) &addr);
> + CHK_FAIL_END
> +#endif
> +
> return ret;
> }
>
> diff --git a/include/arpa/inet.h b/include/arpa/inet.h
> index a02892f48a..3db8f1a96f 100644
> --- a/include/arpa/inet.h
> +++ b/include/arpa/inet.h
> @@ -19,6 +19,8 @@ libc_hidden_proto (__inet_ntop_chk)
> libc_hidden_proto (inet_pton)
> extern __typeof (inet_pton) __inet_pton;
> libc_hidden_proto (__inet_pton)
> +libc_hidden_proto (__inet_pton_chk)
> +
> extern __typeof (inet_makeaddr) __inet_makeaddr;
> libc_hidden_proto (__inet_makeaddr)
> libc_hidden_proto (inet_netof)
> diff --git a/inet/bits/inet-fortified-decl.h b/inet/bits/inet-fortified-decl.h
> index 23e3cf4b22..748a119f14 100644
> --- a/inet/bits/inet-fortified-decl.h
> +++ b/inet/bits/inet-fortified-decl.h
> @@ -32,4 +32,11 @@ extern const char *__REDIRECT_NTH (__inet_ntop_chk_warn,
> __warnattr ("inet_ntop called with bigger length than "
> "size of destination buffer");
>
> +extern int __inet_pton_chk (int, const char *, void *, size_t);
> +
> +extern int __REDIRECT_FORTIFY_NTH (__inet_pton_alias,
> + (int, const char *, void *), inet_pton);
> +extern int __REDIRECT_NTH (__inet_pton_chk_warn,
> + (int, const char *, void *, size_t), __inet_pton_chk)
> + __warnattr ("inet_pton called with a destination buffer size too small");
> #endif /* bits/inet-fortified-decl.h. */
> diff --git a/inet/bits/inet-fortified.h b/inet/bits/inet-fortified.h
> index 4f6bc34b0f..2f0e99d6a2 100644
> --- a/inet/bits/inet-fortified.h
> +++ b/inet/bits/inet-fortified.h
> @@ -38,4 +38,24 @@ __NTH (inet_ntop (int __af,
> __af, __src, __dst, __dst_size);
> };
>
> +__fortify_function __attribute_overloadable__ int
> +__NTH (inet_pton (int __af,
> + const char *__restrict __src,
> + __fortify_clang_overload_arg (void *, __restrict, __dst)))
> + __fortify_clang_warning_only_if_bos0_lt
> + (4, __dst, "inet_pton called with destination buffer size less than 4")
> +{
> + size_t scale = 0;
> + if (__af == AF_INET)
> + scale = 1;
> + else if (__af == AF_INET6)
> + scale = 4;
> + else
> + return __inet_pton_alias (__af, __src, __dst);
> +
> + return __glibc_fortify (inet_pton, 4, scale,
> + __glibc_objsize (__dst),
> + __af, __src, __dst);
> +};
> +
> #endif /* bits/inet-fortified.h. */
> diff --git a/manual/maint.texi b/manual/maint.texi
> index ce6a556c68..b6ee5b6e3b 100644
> --- a/manual/maint.texi
> +++ b/manual/maint.texi
> @@ -305,6 +305,8 @@ The following functions and macros are fortified in @theglibc{}:
>
> @item @code{inet_ntop}
>
> +@item @code{inet_pton}
> +
> @item @code{longjmp}
>
> @item @code{mbsnrtowcs}
> diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist
> index facb01bf8c..0b963dc890 100644
> --- a/sysdeps/mach/hurd/i386/libc.abilist
> +++ b/sysdeps/mach/hurd/i386/libc.abilist
> @@ -2585,6 +2585,7 @@ GLIBC_2.41 pthread_mutexattr_setrobust_np F
> GLIBC_2.41 pthread_mutexattr_settype F
> GLIBC_2.41 pthread_sigmask F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_barrier_destroy F
> GLIBC_2.42 pthread_barrier_init F
> GLIBC_2.42 pthread_barrier_wait F
> diff --git a/sysdeps/mach/hurd/x86_64/libc.abilist b/sysdeps/mach/hurd/x86_64/libc.abilist
> index 3c76f6ae52..b9e9349b9d 100644
> --- a/sysdeps/mach/hurd/x86_64/libc.abilist
> +++ b/sysdeps/mach/hurd/x86_64/libc.abilist
> @@ -2268,6 +2268,7 @@ GLIBC_2.41 pthread_mutexattr_setrobust_np F
> GLIBC_2.41 pthread_mutexattr_settype F
> GLIBC_2.41 pthread_sigmask F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_barrier_destroy F
> GLIBC_2.42 pthread_barrier_init F
> GLIBC_2.42 pthread_barrier_wait F
> diff --git a/sysdeps/unix/sysv/linux/aarch64/libc.abilist b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> index afbb38fb0e..41f8f39911 100644
> --- a/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/aarch64/libc.abilist
> @@ -2751,4 +2751,5 @@ GLIBC_2.39 stdc_trailing_zeros_us F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> diff --git a/sysdeps/unix/sysv/linux/alpha/libc.abilist b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> index ea11409903..34efc96781 100644
> --- a/sysdeps/unix/sysv/linux/alpha/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/alpha/libc.abilist
> @@ -3098,6 +3098,7 @@ GLIBC_2.4 wscanf F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> GLIBC_2.5 __readlinkat_chk F
> GLIBC_2.5 inet6_opt_append F
> diff --git a/sysdeps/unix/sysv/linux/arc/libc.abilist b/sysdeps/unix/sysv/linux/arc/libc.abilist
> index c6edd66fe4..de7c618d28 100644
> --- a/sysdeps/unix/sysv/linux/arc/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arc/libc.abilist
> @@ -2512,4 +2512,5 @@ GLIBC_2.39 stdc_trailing_zeros_us F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> diff --git a/sysdeps/unix/sysv/linux/arm/be/libc.abilist b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> index 00e46c2f7f..96f0314b16 100644
> --- a/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/be/libc.abilist
> @@ -2804,6 +2804,7 @@ GLIBC_2.4 xprt_unregister F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> GLIBC_2.5 __readlinkat_chk F
> GLIBC_2.5 inet6_opt_append F
> diff --git a/sysdeps/unix/sysv/linux/arm/le/libc.abilist b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> index 3a87471bfe..635468fa13 100644
> --- a/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/arm/le/libc.abilist
> @@ -2801,6 +2801,7 @@ GLIBC_2.4 xprt_unregister F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> GLIBC_2.5 __readlinkat_chk F
> GLIBC_2.5 inet6_opt_append F
> diff --git a/sysdeps/unix/sysv/linux/csky/libc.abilist b/sysdeps/unix/sysv/linux/csky/libc.abilist
> index b819f40f50..490694ddce 100644
> --- a/sysdeps/unix/sysv/linux/csky/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/csky/libc.abilist
> @@ -2788,4 +2788,5 @@ GLIBC_2.39 stdc_trailing_zeros_us F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> diff --git a/sysdeps/unix/sysv/linux/hppa/libc.abilist b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> index 5cb0987348..b1905da767 100644
> --- a/sysdeps/unix/sysv/linux/hppa/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/hppa/libc.abilist
> @@ -2825,6 +2825,7 @@ GLIBC_2.41 cacheflush F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> GLIBC_2.5 __readlinkat_chk F
> GLIBC_2.5 inet6_opt_append F
> diff --git a/sysdeps/unix/sysv/linux/i386/libc.abilist b/sysdeps/unix/sysv/linux/i386/libc.abilist
> index 1ec48127e1..424ef34a8b 100644
> --- a/sysdeps/unix/sysv/linux/i386/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/i386/libc.abilist
> @@ -3008,6 +3008,7 @@ GLIBC_2.4 unshare F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> GLIBC_2.5 __readlinkat_chk F
> GLIBC_2.5 inet6_opt_append F
> diff --git a/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist b/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist
> index 82b6b0d196..420471eb24 100644
> --- a/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/loongarch/lp64/libc.abilist
> @@ -2272,4 +2272,5 @@ GLIBC_2.39 stdc_trailing_zeros_us F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> diff --git a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> index 03818c428f..95a68c7cc1 100644
> --- a/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist
> @@ -2784,6 +2784,7 @@ GLIBC_2.4 xprt_unregister F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> GLIBC_2.5 __readlinkat_chk F
> GLIBC_2.5 inet6_opt_append F
> diff --git a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> index a2b3d25f48..442e82b6d2 100644
> --- a/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist
> @@ -2951,6 +2951,7 @@ GLIBC_2.4 unshare F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> GLIBC_2.5 __readlinkat_chk F
> GLIBC_2.5 inet6_opt_append F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> index bc00403c50..20f7712988 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/be/libc.abilist
> @@ -2837,4 +2837,5 @@ GLIBC_2.39 stdc_trailing_zeros_us F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> diff --git a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> index 5606a7027b..f61ed3bf26 100644
> --- a/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/microblaze/le/libc.abilist
> @@ -2834,4 +2834,5 @@ GLIBC_2.39 stdc_trailing_zeros_us F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> index 5fab619fd6..381120cc16 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist
> @@ -2912,6 +2912,7 @@ GLIBC_2.4 unshare F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> GLIBC_2.5 __readlinkat_chk F
> GLIBC_2.5 inet6_opt_append F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> index 5ba810d096..2f51146084 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist
> @@ -2910,6 +2910,7 @@ GLIBC_2.4 unshare F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> GLIBC_2.5 __readlinkat_chk F
> GLIBC_2.5 inet6_opt_append F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> index e1b8f13414..e6071be2ae 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist
> @@ -2918,6 +2918,7 @@ GLIBC_2.4 unshare F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> GLIBC_2.5 __readlinkat_chk F
> GLIBC_2.5 inet6_opt_append F
> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> index c0ee223f3f..f41e209a2b 100644
> --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist
> @@ -2820,6 +2820,7 @@ GLIBC_2.4 unshare F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> GLIBC_2.5 __readlinkat_chk F
> GLIBC_2.5 inet6_opt_append F
> diff --git a/sysdeps/unix/sysv/linux/or1k/libc.abilist b/sysdeps/unix/sysv/linux/or1k/libc.abilist
> index 227746ae57..bbcdb31f09 100644
> --- a/sysdeps/unix/sysv/linux/or1k/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/or1k/libc.abilist
> @@ -2262,4 +2262,5 @@ GLIBC_2.40 swapcontext F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> index 46fd69dc86..e0ea22b9c6 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist
> @@ -3141,6 +3141,7 @@ GLIBC_2.4 wscanf F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> GLIBC_2.5 __readlinkat_chk F
> GLIBC_2.5 inet6_opt_append F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> index 9887e117d8..16b9a771f1 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist
> @@ -3186,6 +3186,7 @@ GLIBC_2.4 wscanf F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> GLIBC_2.5 __readlinkat_chk F
> GLIBC_2.5 inet6_opt_append F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> index 2600dc2941..070f6f5a08 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libc.abilist
> @@ -2895,6 +2895,7 @@ GLIBC_2.4 wscanf F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> GLIBC_2.5 __readlinkat_chk F
> GLIBC_2.5 inet6_opt_append F
> diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> index d803fecff8..4378d1d922 100644
> --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libc.abilist
> @@ -2971,4 +2971,5 @@ GLIBC_2.39 stdc_trailing_zeros_us F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> index a2646bde63..48c6e269a5 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist
> @@ -2515,4 +2515,5 @@ GLIBC_2.40 __riscv_hwprobe F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> index ad18f29f40..a8b0c6aca7 100644
> --- a/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist
> @@ -2715,4 +2715,5 @@ GLIBC_2.40 __riscv_hwprobe F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> index 2f76c27fb9..6c00b8440b 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist
> @@ -3139,6 +3139,7 @@ GLIBC_2.4 wscanf F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> GLIBC_2.5 __readlinkat_chk F
> GLIBC_2.5 inet6_opt_append F
> diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> index 4ea336999c..f866e5d6f3 100644
> --- a/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
> @@ -2932,6 +2932,7 @@ GLIBC_2.4 wscanf F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> GLIBC_2.5 __readlinkat_chk F
> GLIBC_2.5 inet6_opt_append F
> diff --git a/sysdeps/unix/sysv/linux/sh/be/libc.abilist b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> index f245f8f755..4f2db8cb9b 100644
> --- a/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/be/libc.abilist
> @@ -2831,6 +2831,7 @@ GLIBC_2.4 unshare F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> GLIBC_2.5 __readlinkat_chk F
> GLIBC_2.5 inet6_opt_append F
> diff --git a/sysdeps/unix/sysv/linux/sh/le/libc.abilist b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> index 4c654a51a3..a73473ee32 100644
> --- a/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sh/le/libc.abilist
> @@ -2828,6 +2828,7 @@ GLIBC_2.4 unshare F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> GLIBC_2.5 __readlinkat_chk F
> GLIBC_2.5 inet6_opt_append F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> index d89a81edcd..dc7e27db2a 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist
> @@ -3160,6 +3160,7 @@ GLIBC_2.4 wscanf F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> GLIBC_2.5 __readlinkat_chk F
> GLIBC_2.5 inet6_opt_append F
> diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> index ee7b84249c..2ee97f42fb 100644
> --- a/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist
> @@ -2796,6 +2796,7 @@ GLIBC_2.4 unshare F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> GLIBC_2.5 __readlinkat_chk F
> GLIBC_2.5 inet6_opt_append F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> index 00155d9f3e..a7ada1ea53 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/64/libc.abilist
> @@ -2747,6 +2747,7 @@ GLIBC_2.4 unshare F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> GLIBC_2.5 __readlinkat_chk F
> GLIBC_2.5 inet6_opt_append F
> diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> index 18765ec3b8..f41ab77c1e 100644
> --- a/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> +++ b/sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist
> @@ -2766,4 +2766,5 @@ GLIBC_2.39 stdc_trailing_zeros_us F
> GLIBC_2.41 sched_getattr F
> GLIBC_2.41 sched_setattr F
> GLIBC_2.42 __inet_ntop_chk F
> +GLIBC_2.42 __inet_pton_chk F
> GLIBC_2.42 pthread_gettid_np F
> --
> 2.48.1
>
* Aaron Merey:
> +__fortify_function __attribute_overloadable__ int
> +__NTH (inet_pton (int __af,
> + const char *__restrict __src,
> + __fortify_clang_overload_arg (void *, __restrict, __dst)))
> + __fortify_clang_warning_only_if_bos0_lt
> + (4, __dst, "inet_pton called with destination buffer size less than 4")
> +{
> + size_t scale = 0;
> + if (__af == AF_INET)
> + scale = 1;
> + else if (__af == AF_INET6)
> + scale = 4;
> + else
> + return __inet_pton_alias (__af, __src, __dst);
> +
> + return __glibc_fortify (inet_pton, 4, scale,
> + __glibc_objsize (__dst),
> + __af, __src, __dst);
> +};
Why not set scale to 1 and use the byte sizes directly? This looks a
bit obfuscated.
Thanks,
Florian
@@ -56,6 +56,7 @@ routines = \
gets_chk \
getwd_chk \
inet_ntop_chk \
+ inet_pton_chk \
longjmp_chk \
mbsnrtowcs_chk \
mbsrtowcs_chk \
@@ -66,6 +66,7 @@ libc {
}
GLIBC_2.42 {
__inet_ntop_chk;
+ __inet_pton_chk;
}
GLIBC_PRIVATE {
__fortify_fail;
new file mode 100644
@@ -0,0 +1,30 @@
+/* Copyright (C) 2025 Free Software Foundation, Inc.
+ This file is part of the GNU C Library.
+
+ The GNU C Library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2.1 of the License, or (at your option) any later version.
+
+ The GNU C Library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with the GNU C Library; if not, see
+ <https://www.gnu.org/licenses/>. */
+
+#include <arpa/inet.h>
+#include <stdio.h>
+
+int
+__inet_pton_chk (int af, const char *src, void *dst, size_t dst_size)
+{
+ if ((af == AF_INET && dst_size < 4)
+ || (af == AF_INET6 && dst_size < 16))
+ __chk_fail ();
+
+ return __inet_pton (af, src, dst);
+}
+libc_hidden_def (__inet_pton_chk)
@@ -1853,6 +1853,30 @@ do_test (void)
CHK_FAIL_END
#endif
+ const char *ipv4str = "127.0.0.1";
+ const char *ipv6str = "::1";
+
+ if (inet_pton (AF_INET, ipv4str, (void *) &addr) != 1)
+ FAIL ();
+ if (inet_pton (AF_INET6, ipv6str, (void *) &addr6) != 1)
+ FAIL ();
+
+#if __USE_FORTIFY_LEVEL >= 1
+ char smallbuf[2];
+
+ CHK_FAIL_START
+ inet_pton (AF_INET, ipv4str, (void *) smallbuf);
+ CHK_FAIL_END
+
+ CHK_FAIL_START
+ inet_pton (AF_INET6, ipv6str, (void *) smallbuf);
+ CHK_FAIL_END
+
+ CHK_FAIL_START
+ inet_pton (AF_INET6, ipv6str, (void *) &addr);
+ CHK_FAIL_END
+#endif
+
return ret;
}
@@ -19,6 +19,8 @@ libc_hidden_proto (__inet_ntop_chk)
libc_hidden_proto (inet_pton)
extern __typeof (inet_pton) __inet_pton;
libc_hidden_proto (__inet_pton)
+libc_hidden_proto (__inet_pton_chk)
+
extern __typeof (inet_makeaddr) __inet_makeaddr;
libc_hidden_proto (__inet_makeaddr)
libc_hidden_proto (inet_netof)
@@ -32,4 +32,11 @@ extern const char *__REDIRECT_NTH (__inet_ntop_chk_warn,
__warnattr ("inet_ntop called with bigger length than "
"size of destination buffer");
+extern int __inet_pton_chk (int, const char *, void *, size_t);
+
+extern int __REDIRECT_FORTIFY_NTH (__inet_pton_alias,
+ (int, const char *, void *), inet_pton);
+extern int __REDIRECT_NTH (__inet_pton_chk_warn,
+ (int, const char *, void *, size_t), __inet_pton_chk)
+ __warnattr ("inet_pton called with a destination buffer size too small");
#endif /* bits/inet-fortified-decl.h. */
@@ -38,4 +38,24 @@ __NTH (inet_ntop (int __af,
__af, __src, __dst, __dst_size);
};
+__fortify_function __attribute_overloadable__ int
+__NTH (inet_pton (int __af,
+ const char *__restrict __src,
+ __fortify_clang_overload_arg (void *, __restrict, __dst)))
+ __fortify_clang_warning_only_if_bos0_lt
+ (4, __dst, "inet_pton called with destination buffer size less than 4")
+{
+ size_t scale = 0;
+ if (__af == AF_INET)
+ scale = 1;
+ else if (__af == AF_INET6)
+ scale = 4;
+ else
+ return __inet_pton_alias (__af, __src, __dst);
+
+ return __glibc_fortify (inet_pton, 4, scale,
+ __glibc_objsize (__dst),
+ __af, __src, __dst);
+};
+
#endif /* bits/inet-fortified.h. */
@@ -305,6 +305,8 @@ The following functions and macros are fortified in @theglibc{}:
@item @code{inet_ntop}
+@item @code{inet_pton}
+
@item @code{longjmp}
@item @code{mbsnrtowcs}
@@ -2585,6 +2585,7 @@ GLIBC_2.41 pthread_mutexattr_setrobust_np F
GLIBC_2.41 pthread_mutexattr_settype F
GLIBC_2.41 pthread_sigmask F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_barrier_destroy F
GLIBC_2.42 pthread_barrier_init F
GLIBC_2.42 pthread_barrier_wait F
@@ -2268,6 +2268,7 @@ GLIBC_2.41 pthread_mutexattr_setrobust_np F
GLIBC_2.41 pthread_mutexattr_settype F
GLIBC_2.41 pthread_sigmask F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_barrier_destroy F
GLIBC_2.42 pthread_barrier_init F
GLIBC_2.42 pthread_barrier_wait F
@@ -2751,4 +2751,5 @@ GLIBC_2.39 stdc_trailing_zeros_us F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F
@@ -3098,6 +3098,7 @@ GLIBC_2.4 wscanf F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
@@ -2512,4 +2512,5 @@ GLIBC_2.39 stdc_trailing_zeros_us F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F
@@ -2804,6 +2804,7 @@ GLIBC_2.4 xprt_unregister F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
@@ -2801,6 +2801,7 @@ GLIBC_2.4 xprt_unregister F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
@@ -2788,4 +2788,5 @@ GLIBC_2.39 stdc_trailing_zeros_us F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F
@@ -2825,6 +2825,7 @@ GLIBC_2.41 cacheflush F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
@@ -3008,6 +3008,7 @@ GLIBC_2.4 unshare F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
@@ -2272,4 +2272,5 @@ GLIBC_2.39 stdc_trailing_zeros_us F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F
@@ -2784,6 +2784,7 @@ GLIBC_2.4 xprt_unregister F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
@@ -2951,6 +2951,7 @@ GLIBC_2.4 unshare F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
@@ -2837,4 +2837,5 @@ GLIBC_2.39 stdc_trailing_zeros_us F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F
@@ -2834,4 +2834,5 @@ GLIBC_2.39 stdc_trailing_zeros_us F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F
@@ -2912,6 +2912,7 @@ GLIBC_2.4 unshare F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
@@ -2910,6 +2910,7 @@ GLIBC_2.4 unshare F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
@@ -2918,6 +2918,7 @@ GLIBC_2.4 unshare F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
@@ -2820,6 +2820,7 @@ GLIBC_2.4 unshare F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
@@ -2262,4 +2262,5 @@ GLIBC_2.40 swapcontext F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F
@@ -3141,6 +3141,7 @@ GLIBC_2.4 wscanf F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
@@ -3186,6 +3186,7 @@ GLIBC_2.4 wscanf F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
@@ -2895,6 +2895,7 @@ GLIBC_2.4 wscanf F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
@@ -2971,4 +2971,5 @@ GLIBC_2.39 stdc_trailing_zeros_us F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F
@@ -2515,4 +2515,5 @@ GLIBC_2.40 __riscv_hwprobe F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F
@@ -2715,4 +2715,5 @@ GLIBC_2.40 __riscv_hwprobe F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F
@@ -3139,6 +3139,7 @@ GLIBC_2.4 wscanf F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
@@ -2932,6 +2932,7 @@ GLIBC_2.4 wscanf F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
@@ -2831,6 +2831,7 @@ GLIBC_2.4 unshare F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
@@ -2828,6 +2828,7 @@ GLIBC_2.4 unshare F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
@@ -3160,6 +3160,7 @@ GLIBC_2.4 wscanf F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
@@ -2796,6 +2796,7 @@ GLIBC_2.4 unshare F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
@@ -2747,6 +2747,7 @@ GLIBC_2.4 unshare F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F
GLIBC_2.5 __readlinkat_chk F
GLIBC_2.5 inet6_opt_append F
@@ -2766,4 +2766,5 @@ GLIBC_2.39 stdc_trailing_zeros_us F
GLIBC_2.41 sched_getattr F
GLIBC_2.41 sched_setattr F
GLIBC_2.42 __inet_ntop_chk F
+GLIBC_2.42 __inet_pton_chk F
GLIBC_2.42 pthread_gettid_np F