diff options
author | Jeremy Huddleston <jeremyhu@apple.com> | 2011-05-07 22:05:16 -0700 |
---|---|---|
committer | Jeremy Huddleston <jeremyhu@apple.com> | 2011-05-07 22:05:16 -0700 |
commit | b6b5bc9e9874934dd1c1b80a1aa0c0b1c454eab2 (patch) | |
tree | f8016b5eb78e1a7102cc92914af8a095a621e1f9 | |
parent | 1f801eea5f4d17b83aee1170423d65a74e01a138 (diff) |
Improve error handling in copy_to_scratch
handle.c:95:5: warning: Array access (from variable 'buf') results in a null pointer dereference
buf[len] = '\0';
^~~
Found-by: clang static analyzer
Signed-off-by: Jeremy Huddleston <jeremyhu@apple.com>
-rw-r--r-- | handle.c | 15 |
1 files changed, 10 insertions, 5 deletions
@@ -82,17 +82,22 @@ copy_to_scratch(const char *s, int len) static char *buf = NULL; static int buflen = 0; - if (len > buflen) { + if (len < 0) + len = 0; + + if (len >= buflen) { if (buf) free (buf); buflen = (len < 40) ? 80 : (len * 2); buf = (char *) malloc (buflen+1); + if (!buf) { + fprintf (stderr, "attempt to allocate %d byte scratch buffer\n", buflen + 1); + return NULL; + } } - if (len > 0) - strncpy (buf, s, len); - else - len = 0; + strncpy (buf, s, len); buf[len] = '\0'; + return (buf); } |