(get_myaddress): Avoid loopback interfaces, return loopback address
[kopensolaris-gnu/glibc.git] / isomac.c
index f1d2d7d..47040e6 100644 (file)
--- a/isomac.c
+++ b/isomac.c
@@ -185,6 +185,7 @@ char *CC;
 /* The -I parameters for CC to find all headers.  */
 char *INC;
 
+static char *xstrndup (const char *, size_t);
 static const char **get_null_defines (void);
 static int check_header (const char *, const char **);
 
@@ -222,6 +223,20 @@ main (int argc, char *argv[])
 }
 
 
+static char *
+xstrndup (const char *s, size_t n)
+{
+  size_t len = n;
+  char *new = malloc (len + 1);
+
+  if (new == NULL)
+    return NULL;
+
+  new[len] = '\0';
+  return memcpy (new, s, len);
+}
+
+
 static const char **
 get_null_defines (void)
 {
@@ -285,7 +300,7 @@ get_null_defines (void)
       start = &line[8];
       for (end = start + 1; !isspace (*end) && *end != '\0'; ++end)
        ;
-      result[result_len++] = strndup (start, end - start);
+      result[result_len++] = xstrndup (start, end - start);
 
       if (first)
        {