# HG changeset patch # User Jim Meyering # Date 1161583381 0 # Node ID 8c6aad2a351563ccba3ae7c9d0ce05e53ffe3216 # Parent 998cb998efab80f7f64730fe7057b7beadf3c56b * lib/getaddrinfo.c (getnameinfo): Use new lightweight uinttostr, in place of snprintf. * modules/inttostr (Files): Add lib/uinttostr.c. * lib/uinttostr.c (inttostr): New file/function. * lib/inttostr.h (uinttostr): Declare. * m4/inttostr.m4: Add AC_LIBOBJ([uinttostr]). * MODULES.html.sh (Numeric conversion functions ): Add uinttostr. * modules/getaddrinfo (Depends-on): Remove snprintf. Add inttostr. diff --git a/ChangeLog b/ChangeLog --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,16 @@ +2006-10-23 Jim Meyering + + * lib/getaddrinfo.c (getnameinfo): Use new lightweight uinttostr, + in place of snprintf. + + * modules/inttostr (Files): Add lib/uinttostr.c. + * lib/uinttostr.c (inttostr): New file/function. + * lib/inttostr.h (uinttostr): Declare. + * m4/inttostr.m4: Add AC_LIBOBJ([uinttostr]). + * MODULES.html.sh (Numeric conversion functions ): + Add uinttostr. + * modules/getaddrinfo (Depends-on): Remove snprintf. Add inttostr. + 2006-10-21 Paul Eggert * lib/canonicalize.c (ELOOP): Define if not already defined. diff --git a/MODULES.html.sh b/MODULES.html.sh --- a/MODULES.html.sh +++ b/MODULES.html.sh @@ -1802,6 +1802,7 @@ func_begin_table func_module intprops func_module inttostr + func_module uinttostr func_module xstrtoimax func_module xstrtoumax func_end_table diff --git a/lib/getaddrinfo.c b/lib/getaddrinfo.c --- a/lib/getaddrinfo.c +++ b/lib/getaddrinfo.c @@ -39,7 +39,7 @@ #define N_(String) String #include "inet_ntop.h" -#include "snprintf.h" +#include "intprops.h" #include "strdup.h" /* BeOS has AF_INET, but not PF_INET. */ @@ -405,10 +405,15 @@ #if HAVE_IPV6 case AF_INET6: #endif - if (snprintf (service, servicelen, "%d", - ntohs (((const struct sockaddr_in *) sa)->sin_port)) - + 1 > servicelen) - return EAI_OVERFLOW; + { + unsigned short int port + = ntohs (((const struct sockaddr_in *) sa)->sin_port); + char buf[INT_BUFSIZE_BOUND (port)]; + char const *s = uinttostr (port, buf); + if (strlen (s) + 1 > servicelen) + return EAI_OVERFLOW; + memcpy (service, s, strlen (s) + 1); + } break; } diff --git a/lib/inttostr.h b/lib/inttostr.h --- a/lib/inttostr.h +++ b/lib/inttostr.h @@ -27,3 +27,4 @@ char *offtostr (off_t, char *); char *imaxtostr (intmax_t, char *); char *umaxtostr (uintmax_t, char *); +char *uinttostr (unsigned int, char *); diff --git a/lib/uinttostr.c b/lib/uinttostr.c new file mode 100644 --- /dev/null +++ b/lib/uinttostr.c @@ -0,0 +1,3 @@ +#define inttostr uinttostr +#define inttype unsigned int +#include "inttostr.c" diff --git a/m4/inttostr.m4 b/m4/inttostr.m4 --- a/m4/inttostr.m4 +++ b/m4/inttostr.m4 @@ -1,4 +1,4 @@ -#serial 6 +#serial 7 dnl Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc. dnl This file is free software; the Free Software Foundation dnl gives unlimited permission to copy and/or distribute it, @@ -9,11 +9,13 @@ AC_LIBOBJ([imaxtostr]) AC_LIBOBJ([offtostr]) AC_LIBOBJ([umaxtostr]) + AC_LIBOBJ([uinttostr]) gl_PREREQ_INTTOSTR gl_PREREQ_IMAXTOSTR gl_PREREQ_OFFTOSTR gl_PREREQ_UMAXTOSTR + gl_PREREQ_UINTTOSTR ]) # Prerequisites of lib/inttostr.h. @@ -30,3 +32,6 @@ # Prerequisites of lib/umaxtostr.c. AC_DEFUN([gl_PREREQ_UMAXTOSTR], [:]) + +# Prerequisites of lib/uinttostr.c. +AC_DEFUN([gl_PREREQ_UINTTOSTR], [:]) diff --git a/modules/getaddrinfo b/modules/getaddrinfo --- a/modules/getaddrinfo +++ b/modules/getaddrinfo @@ -9,12 +9,12 @@ Depends-on: gettext-h -snprintf +inet_ntop +inttostr socklen stdbool strdup sys_socket -inet_ntop configure.ac: gl_GETADDRINFO diff --git a/modules/inttostr b/modules/inttostr --- a/modules/inttostr +++ b/modules/inttostr @@ -7,6 +7,7 @@ lib/inttostr.h lib/offtostr.c lib/umaxtostr.c +lib/uinttostr.c m4/inttostr.m4 Depends-on: