Module Name: src
Committed By: christos
Date: Wed Dec 7 03:16:45 UTC 2016
Modified Files:
src/lib/libc/net: linkaddr.c
Log Message:
make it always return a NUL terminated string instead of NULL when the address
is truncated for compatibility with others.
To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.20 src/lib/libc/net/linkaddr.c
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: src/lib/libc/net/linkaddr.c
diff -u src/lib/libc/net/linkaddr.c:1.19 src/lib/libc/net/linkaddr.c:1.20
--- src/lib/libc/net/linkaddr.c:1.19 Tue Dec 6 21:48:54 2016
+++ src/lib/libc/net/linkaddr.c Tue Dec 6 22:16:45 2016
@@ -1,4 +1,4 @@
-/* $NetBSD: linkaddr.c,v 1.19 2016/12/07 02:48:54 christos Exp $ */
+/* $NetBSD: linkaddr.c,v 1.20 2016/12/07 03:16:45 christos Exp $ */
/*-
* Copyright (c) 1990, 1993
@@ -34,7 +34,7 @@
#if 0
static char sccsid[] = "@(#)linkaddr.c 8.1 (Berkeley) 6/4/93";
#else
-__RCSID("$NetBSD: linkaddr.c,v 1.19 2016/12/07 02:48:54 christos Exp $");
+__RCSID("$NetBSD: linkaddr.c,v 1.20 2016/12/07 03:16:45 christos Exp $");
#endif
#endif /* LIBC_SCCS and not lint */
@@ -148,16 +148,18 @@ link_ntoa(const struct sockaddr_dl *sdl)
#define ADDC(ch) \
do { \
- if (out >= obuf + sizeof(obuf)) \
- return NULL; \
+ if (out >= obuf + sizeof(obuf) - 1) \
+ return obuf; \
*out++ = (ch); \
} while (/*CONSTCOND*/0)
if (sdl->sdl_nlen) {
if (sdl->sdl_nlen >= sizeof(obuf))
- return NULL;
- (void)memcpy(obuf, sdl->sdl_data, (size_t)sdl->sdl_nlen);
- out += sdl->sdl_nlen;
+ i = sizeof(obuf) - 1;
+ else
+ i = sdl->sdl_nlen;
+ (void)memcpy(obuf, sdl->sdl_data, i);
+ out += i;
if (sdl->sdl_alen)
ADDC(':');
}
@@ -176,5 +178,5 @@ link_ntoa(const struct sockaddr_dl *sdl)
ADDC(hexlist[i]);
}
ADDC('\0');
- return (obuf);
+ return obuf;
}