use strdup
authorKen Raeburn <raeburn@mit.edu>
Wed, 19 Jun 2002 21:02:37 +0000 (21:02 +0000)
committerKen Raeburn <raeburn@mit.edu>
Wed, 19 Jun 2002 21:02:37 +0000 (21:02 +0000)
git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@14541 dc483132-0cff-0310-8789-dd5450dbe970

src/util/profile/ChangeLog
src/util/profile/configure.in
src/util/profile/prof_tree.c

index 53c8641cea29ab830cc48b6330f3b395a3a05180..d9f30d867fd47ca895fe71fcb8af9e064797f499 100644 (file)
@@ -1,3 +1,9 @@
+2002-06-19  Ken Raeburn  <raeburn@mit.edu>
+
+       * configure.in: Look for strdup.
+       * prof_tree.c (profile_create_node): Use strdup.
+       (strdup, MYstrdup): Define it if the OS doesn't provide it.
+
 2002-06-04  Ken Raeburn  <raeburn@mit.edu>
 
        * prof_get.c (profile_get_integer): Set errno to 0 before strtol
index 390f1427dfd8040b79ea2359f4d7ebd37d160f8a..acb6010fe2566d08482fcd9c150ce08b30f11901 100644 (file)
@@ -5,7 +5,7 @@ AC_CHECK_SIZEOF(short)
 AC_CHECK_SIZEOF(int)
 AC_CHECK_SIZEOF(long)
 AC_CHECK_HEADERS(unistd.h stdlib.h)
-AC_CHECK_FUNCS(stat access)
+AC_CHECK_FUNCS(stat access strdup)
 AC_PROG_AWK
 KRB5_BUILD_LIBOBJS
 KRB5_BUILD_PROGRAM
index 5c4e998bf0854bc2282a1ef2f95f312836024e9b..be76db32818917f29c73e723b65d08f108212440 100644 (file)
@@ -67,6 +67,19 @@ void profile_free_node(node)
        free(node);
 }
 
+#ifndef HAVE_STRDUP
+#undef strdup
+#define strdup MYstrdup
+static char *MYstrdup (const char *s)
+{
+    size_t sz = strlen(s) + 1;
+    char *p = malloc(sz);
+    if (p != 0)
+       memcpy(p, s, sz);
+    return p;
+}
+#endif
+
 /*
  * Create a node
  */
@@ -80,19 +93,17 @@ errcode_t profile_create_node(name, value, ret_node)
        if (!new)
                return ENOMEM;
        memset(new, 0, sizeof(struct profile_node));
-       new->name = malloc(strlen(name)+1);
+       new->name = strdup(name);
        if (new->name == 0) {
-               profile_free_node(new);
-               return ENOMEM;
+           profile_free_node(new);
+           return ENOMEM;
        }
-       strcpy(new->name, name);
        if (value) {
-               new->value = malloc(strlen(value)+1);
+               new->value = strdup(value);
                if (new->value == 0) {
-                       profile_free_node(new);
-                       return ENOMEM;
+                   profile_free_node(new);
+                   return ENOMEM;
                }
-               strcpy(new->value, value);
        }
        new->magic = PROF_MAGIC_NODE;