summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/getusershell.c8
-rw-r--r--lib/putenv.c5
2 files changed, 10 insertions, 3 deletions
diff --git a/lib/getusershell.c b/lib/getusershell.c
index 2607535f2..9eb2520b0 100644
--- a/lib/getusershell.c
+++ b/lib/getusershell.c
@@ -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;
/* 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]);
}
}
diff --git a/lib/putenv.c b/lib/putenv.c
index 573e62478..47f7256e5 100644
--- a/lib/putenv.c
+++ b/lib/putenv.c
@@ -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)