diff options
author | jilles <jilles@FreeBSD.org> | 2010-12-29 21:38:00 +0000 |
---|---|---|
committer | jilles <jilles@FreeBSD.org> | 2010-12-29 21:38:00 +0000 |
commit | 9af03ea4fc729f0a666186052c3a2a6bedc431ca (patch) | |
tree | 034d528fcbbbed78655f6952a94e69c9468e5dd2 | |
parent | cc9b2308bc4a85b076312580e276d17723fb67ea (diff) | |
download | FreeBSD-src-9af03ea4fc729f0a666186052c3a2a6bedc431ca.zip FreeBSD-src-9af03ea4fc729f0a666186052c3a2a6bedc431ca.tar.gz |
printf: Do not use sh memory functions in sh builtin.
These functions throw exceptions if they fail, possibly causing memory
leaks. The normal out-of-memory handling suffices. The INTOFF around almost
all of printf prevents memory leaks due to SIGINT.
-rw-r--r-- | usr.bin/printf/printf.c | 13 |
1 files changed, 0 insertions, 13 deletions
diff --git a/usr.bin/printf/printf.c b/usr.bin/printf/printf.c index d2fd37e2..34bb0a2 100644 --- a/usr.bin/printf/printf.c +++ b/usr.bin/printf/printf.c @@ -58,7 +58,6 @@ static const char rcsid[] = #ifdef SHELL #define main printfcmd #include "bltin/bltin.h" -#include "memalloc.h" #include "error.h" #endif @@ -256,11 +255,7 @@ printf_doformat(char *start, int *rval) char *p; int getout; -#ifdef SHELL - p = savestr(getstr()); -#else p = strdup(getstr()); -#endif if (p == NULL) { warnx("%s", strerror(ENOMEM)); return (NULL); @@ -269,11 +264,7 @@ printf_doformat(char *start, int *rval) *(fmt - 1) = 's'; PF(start, p); *(fmt - 1) = 'b'; -#ifdef SHELL - ckfree(p); -#else free(p); -#endif if (getout) return (fmt); break; @@ -342,11 +333,7 @@ mknum(char *str, char ch) len = strlen(str) + 2; if (len > copy_size) { newlen = ((len + 1023) >> 10) << 10; -#ifdef SHELL - if ((newcopy = ckrealloc(copy, newlen)) == NULL) -#else if ((newcopy = realloc(copy, newlen)) == NULL) -#endif { warnx("%s", strerror(ENOMEM)); return (NULL); |