INN commit: trunk/lib (inet_ntop.c)
INN Commit
rra at isc.org
Tue Nov 5 20:09:30 UTC 2013
Date: Tuesday, November 5, 2013 @ 12:09:30
Author: iulius
Revision: 9556
inet_ntop.c: sync with rra-c-util
- Use socket_set_errno instead of assigning to errno.
- Check the return status of snprintf in the inet_ntop
replacement function instead of assuming that it will
always succeed.
Modified:
trunk/lib/inet_ntop.c
-------------+
inet_ntop.c | 63 ++++++++++++++++++++++++++++++++++++----------------------
1 file changed, 40 insertions(+), 23 deletions(-)
Modified: inet_ntop.c
===================================================================
--- inet_ntop.c 2013-11-03 19:19:52 UTC (rev 9555)
+++ inet_ntop.c 2013-11-05 20:09:30 UTC (rev 9556)
@@ -1,22 +1,32 @@
-/* $Id$
-**
-** Replacement for a missing inet_ntop.
-**
-** Written by Russ Allbery <rra at stanford.edu>
-** This work is hereby placed in the public domain by its author.
-**
-** Provides an implementation of inet_ntop that only supports IPv4 addresses
-** for hosts that are missing it. If you want IPv6 support, you need to have
-** a real inet_ntop function; this function is only provided so that code can
-** call inet_ntop unconditionally without needing to worry about whether the
-** host supports IPv6.
-*/
+/* $Id$
+ *
+ * Replacement for a missing inet_ntop.
+ *
+ * Provides an implementation of inet_ntop that only supports IPv4 addresses
+ * for hosts that are missing it. If you want IPv6 support, you need to have
+ * a real inet_ntop function; this function is only provided so that code can
+ * call inet_ntop unconditionally without needing to worry about whether the
+ * host supports IPv6.
+ *
+ * The canonical version of this file is maintained in the rra-c-util package,
+ * which can be found at <http://www.eyrie.org/~eagle/software/rra-c-util/>.
+ *
+ * Written by Russ Allbery <rra at stanford.edu>
+ *
+ * The authors hereby relinquish any claim to any copyright that they may have
+ * in this work, whether granted under contract or by operation of law or
+ * international treaty, and hereby commit to the public, at large, that they
+ * shall not, at any time in the future, seek to enforce any copyright in this
+ * work against any person or entity, or prevent any person or entity from
+ * copying, publishing, distributing or creating derivative works of this
+ * work.
+ */
#include "config.h"
#include "clibrary.h"
+#include "portable/socket.h"
+
#include <errno.h>
-#include <netinet/in.h>
-#include <sys/socket.h>
/* This may already be defined by the system headers. */
#ifndef INET_ADDRSTRLEN
@@ -28,29 +38,36 @@
# define EAFNOSUPPORT EDOM
#endif
-/* If we're running the test suite, rename inet_ntop to avoid conflicts with
- the system version. */
+/*
+ * If we're running the test suite, rename inet_ntop to avoid conflicts with
+ * the system version.
+ */
#if TESTING
# define inet_ntop test_inet_ntop
const char *test_inet_ntop(int, const void *, char *, socklen_t);
#endif
const char *
-inet_ntop(int af, const void *src, char *dst, socklen_t cnt)
+inet_ntop(int af, const void *src, char *dst, socklen_t size)
{
const unsigned char *p;
+ int status;
if (af != AF_INET) {
- errno = EAFNOSUPPORT;
+ socket_set_errno(EAFNOSUPPORT);
return NULL;
}
- if (cnt < INET_ADDRSTRLEN) {
+ if (size < INET_ADDRSTRLEN) {
errno = ENOSPC;
return NULL;
}
p = src;
- snprintf(dst, cnt, "%u.%u.%u.%u",
- (unsigned int) (p[0] & 0xff), (unsigned int) (p[1] & 0xff),
- (unsigned int) (p[2] & 0xff), (unsigned int) (p[3] & 0xff));
+ status = snprintf(dst, size, "%u.%u.%u.%u",
+ (unsigned int) (p[0] & 0xff),
+ (unsigned int) (p[1] & 0xff),
+ (unsigned int) (p[2] & 0xff),
+ (unsigned int) (p[3] & 0xff));
+ if (status < 0)
+ return NULL;
return dst;
}
More information about the inn-committers
mailing list