aboutsummaryrefslogtreecommitdiff
path: root/usr.sbin/cron/lib
diff options
context:
space:
mode:
authorPaul Traina <pst@FreeBSD.org>1996-12-17 00:55:20 +0000
committerPaul Traina <pst@FreeBSD.org>1996-12-17 00:55:20 +0000
commitbdddbd2f3f7d6e0b2de1c8c56c049e5f85015a4e (patch)
tree19c4dd1a0d2247fce3e58d233ea6294b83fd819d /usr.sbin/cron/lib
parentcf11c9a8d062f13adb24fc97f1f8af30b8c99266 (diff)
Notes
Diffstat (limited to 'usr.sbin/cron/lib')
-rw-r--r--usr.sbin/cron/lib/compat.c15
-rw-r--r--usr.sbin/cron/lib/env.c34
2 files changed, 38 insertions, 11 deletions
diff --git a/usr.sbin/cron/lib/compat.c b/usr.sbin/cron/lib/compat.c
index 87eeacce1936..eb69fcd9c237 100644
--- a/usr.sbin/cron/lib/compat.c
+++ b/usr.sbin/cron/lib/compat.c
@@ -16,7 +16,7 @@
*/
#if !defined(lint) && !defined(LINT)
-static char rcsid[] = "$Id: compat.c,v 1.1.1.1 1994/08/27 13:43:02 jkh Exp $";
+static char rcsid[] = "$Id: compat.c,v 1.2 1996/11/01 23:27:28 millert Exp $";
#endif
/* vix 30dec93 [broke this out of misc.c - see RCS log for history]
@@ -53,7 +53,10 @@ strdup(str)
{
char *temp;
- temp = malloc(strlen(str) + 1);
+ if ((temp = malloc(strlen(str) + 1)) == NULL) {
+ errno = ENOMEM;
+ return NULL;
+ }
(void) strcpy(temp, str);
return temp;
}
@@ -143,7 +146,7 @@ getdtablesize() {
* Snarfage done by Jarkko Hietaniemi <Jarkko.Hietaniemi@hut.fi>
* *) well, almost, had to K&R the function entry, HPUX "cc"
* does not grok ANSI function prototypes */
-
+
/*
* flock (fd, operation)
*
@@ -199,13 +202,13 @@ flock(fd, operation)
case LOCK_UN: /* unlock */
i = lockf (fd, F_ULOCK, 0);
break;
-
+
default: /* can't decipher operation */
i = -1;
errno = EINVAL;
break;
}
-
+
return (i);
}
#endif /*NEED_FLOCK*/
@@ -227,7 +230,7 @@ setenv(name, value, overwrite)
return -1;
}
- sprintf("%s=%s", name, value);
+ sprintf(tmp, "%s=%s", name, value);
return putenv(tmp); /* intentionally orphan 'tmp' storage */
}
#endif
diff --git a/usr.sbin/cron/lib/env.c b/usr.sbin/cron/lib/env.c
index f370601b223e..6537262ee025 100644
--- a/usr.sbin/cron/lib/env.c
+++ b/usr.sbin/cron/lib/env.c
@@ -16,7 +16,7 @@
*/
#if !defined(lint) && !defined(LINT)
-static char rcsid[] = "$Id: env.c,v 1.1.1.1 1994/08/27 13:43:02 jkh Exp $";
+static char rcsid[] = "$Id: env.c,v 1.2 1996/12/16 18:21:00 pst Exp $";
#endif
@@ -28,7 +28,8 @@ env_init()
{
register char **p = (char **) malloc(sizeof(char **));
- p[0] = NULL;
+ if (p)
+ p[0] = NULL;
return (p);
}
@@ -55,8 +56,18 @@ env_copy(envp)
for (count = 0; envp[count] != NULL; count++)
;
p = (char **) malloc((count+1) * sizeof(char *)); /* 1 for the NULL */
+ if (p == NULL) {
+ errno = ENOMEM;
+ return NULL;
+ }
for (i = 0; i < count; i++)
- p[i] = strdup(envp[i]);
+ if ((p[i] = strdup(envp[i])) == NULL) {
+ while (--i >= 0)
+ (void) free(p[i]);
+ free(p);
+ errno = ENOMEM;
+ return NULL;
+ }
p[count] = NULL;
return (p);
}
@@ -87,7 +98,11 @@ env_set(envp, envstr)
* save our new one there, and return the existing array.
*/
free(envp[found]);
- envp[found] = strdup(envstr);
+ if ((envp[found] = strdup(envstr)) == NULL) {
+ envp[found] = "";
+ errno = ENOMEM;
+ return NULL;
+ }
return (envp);
}
@@ -98,8 +113,15 @@ env_set(envp, envstr)
*/
p = (char **) realloc((void *) envp,
(unsigned) ((count+1) * sizeof(char **)));
+ if (p == NULL) {
+ errno = ENOMEM;
+ return NULL;
+ }
p[count] = p[count-1];
- p[count-1] = strdup(envstr);
+ if ((p[count-1] = strdup(envstr)) == NULL) {
+ errno = ENOMEM;
+ return NULL;
+ }
return (p);
}
@@ -154,6 +176,8 @@ load_env(envstr, f)
}
}
+ if (strlen(name) + 1 + strlen(val) >= MAX_ENVSTR-1)
+ return (FALSE);
(void) sprintf(envstr, "%s=%s", name, val);
Debug(DPARS, ("load_env, <%s> <%s> -> <%s>\n", name, val, envstr))
return (TRUE);