merge with 1.8.1h
authorJim Meyering <jim@meyering.net>
Sun, 24 Oct 1993 21:30:11 +0000 (21:30 +0000)
committerJim Meyering <jim@meyering.net>
Sun, 24 Oct 1993 21:30:11 +0000 (21:30 +0000)
lib/getusershell.c
lib/putenv.c

index 2607535f23ba39e98ac0a9b9e1d1283ee75e9fe0..9eb2520b0df61b46ba4ca7b848827dce80327ef4 100644 (file)
@@ -43,6 +43,8 @@ char *malloc ();
 char *realloc ();
 #endif
 
+char *xstrdup ();
+
 static int readname ();
 
 /* List of shells to use if the shells file is missing. */
@@ -65,6 +67,8 @@ static char *line = NULL;
 static int line_size = 0;
 \f
 /* Return an entry from the shells file, ignoring comment lines.
+   If the file doesn't exist, use the list in DEFAULT_SHELLS (above).
+   In any case, the returned string is in memory allocated through malloc.
    Return NULL if there are no more entries.  */
 
 char *
@@ -74,7 +78,7 @@ getusershell ()
     {
       if (default_shells[default_index])
        /* Not at the end of the list yet.  */
-       return default_shells[default_index++];
+       return xstrdup (default_shells[default_index++]);
       return NULL;
     }
 
@@ -85,7 +89,7 @@ getusershell ()
        {
          /* No shells file.  Use the default list.  */
          default_index = 1;
-         return default_shells[0];
+         return xstrdup (default_shells[0]);
        }
     }
 
index 573e62478bd1caeb0ab36a2826bf673395b2b06f..47f7256e581ef1f012c256e29824ce87bcd05259 100644 (file)
@@ -36,6 +36,8 @@ Cambridge, MA 02139, USA.  */
 /* Don't include stdlib.h for non-GNU C libraries because some of them
    contain conflicting prototypes for getopt.  */
 #include <stdlib.h>
+#else
+char *malloc ();
 #endif /* GNU C library.  */
 
 #ifndef STDC_HEADERS
@@ -104,7 +106,8 @@ putenv (string)
       char **new_environ = (char **) malloc ((size + 2) * sizeof (char *));
       if (new_environ == NULL)
        return -1;
-      (void) bcopy ((char *) environ, (char *) new_environ, size * sizeof (char *));
+      (void) bcopy ((char *) environ, (char *) new_environ,
+                   size * sizeof (char *));
       new_environ[size] = (char *) string;
       new_environ[size + 1] = NULL;
       if (last_environ != NULL)