Author: jilles
Date: Wed Dec 29 21:38:00 2010
New Revision: 216809
URL: http://svn.freebsd.org/changeset/base/216809

Log:
  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.

Modified:
  head/usr.bin/printf/printf.c

Modified: head/usr.bin/printf/printf.c
==============================================================================
--- head/usr.bin/printf/printf.c        Wed Dec 29 21:04:10 2010        
(r216808)
+++ head/usr.bin/printf/printf.c        Wed Dec 29 21:38:00 2010        
(r216809)
@@ -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);
_______________________________________________
svn-src-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to