diff options
Diffstat (limited to 'extension')
-rw-r--r-- | extension/ChangeLog | 20 | ||||
-rw-r--r-- | extension/filefuncs.c | 3 | ||||
-rw-r--r-- | extension/gawkfts.c | 3 | ||||
-rw-r--r-- | extension/readfile.c | 13 | ||||
-rw-r--r-- | extension/rwarray.c | 2 | ||||
-rw-r--r-- | extension/rwarray0.c | 2 |
6 files changed, 29 insertions, 14 deletions
diff --git a/extension/ChangeLog b/extension/ChangeLog index d10dc766..8bb97590 100644 --- a/extension/ChangeLog +++ b/extension/ChangeLog @@ -1,3 +1,23 @@ +2017-06-22 Andrew J. Schorr <aschorr@telemetry-investments.com> + + * rwarray.c (read_value): Use malloc instead of calloc, since + we immediately overwrite the buffer with data from the file. + * rwarray0.c (read_value): Ditto. + +2017-06-22 Andrew J. Schorr <aschorr@telemetry-investments.com> + + * readfile.c (read_file_to_buffer): Use emalloc instead of ezalloc, + since there's no need to initialize the memory to zero before + overwriting it with the file's contents. + +2017-06-21 Andrew J. Schorr <aschorr@telemetry-investments.com> + + * filefuncs.c (do_fts): Replace emalloc+memset with ezalloc. + * readfile.c (read_file_to_buffer): Ditto. + * rwarray.c (read_value): Replace gawk_malloc+memset with gawk_calloc. + * gawkfts.c (fts_open): Replace malloc+memset with calloc. + * rwarray0.c (read_value): Ditto. + 2017-04-03 Arnold D. Robbins <arnold@skeeve.com> * inplace.c (inplace_end): Correct the function name in the diff --git a/extension/filefuncs.c b/extension/filefuncs.c index 394de504..9ca22de8 100644 --- a/extension/filefuncs.c +++ b/extension/filefuncs.c @@ -877,8 +877,7 @@ do_fts(int nargs, awk_value_t *result, struct awk_ext_func *unused) /* make pathvector */ count = path_array->count + 1; - emalloc(pathvector, char **, count * sizeof(char *), "do_fts"); - memset(pathvector, 0, count * sizeof(char *)); + ezalloc(pathvector, char **, count * sizeof(char *), "do_fts"); /* fill it in */ count--; /* ignore final NULL at end of vector */ diff --git a/extension/gawkfts.c b/extension/gawkfts.c index 4a712153..d9edd87f 100644 --- a/extension/gawkfts.c +++ b/extension/gawkfts.c @@ -162,9 +162,8 @@ fts_open(char * const *argv, int options, } /* Allocate/initialize the stream */ - if ((sp = malloc((unsigned int)sizeof(FTS))) == NULL) + if ((sp = calloc(1, (unsigned int)sizeof(FTS))) == NULL) return (NULL); - memset(sp, 0, sizeof(FTS)); sp->fts_compar = compar; sp->fts_options = options; diff --git a/extension/readfile.c b/extension/readfile.c index fb1a376b..b600f27a 100644 --- a/extension/readfile.c +++ b/extension/readfile.c @@ -73,25 +73,22 @@ int plugin_is_GPL_compatible; static char * read_file_to_buffer(int fd, const struct stat *sbuf) { - char *text = NULL; - int ret; + char *text; if ((sbuf->st_mode & S_IFMT) != S_IFREG) { errno = EINVAL; update_ERRNO_int(errno); - goto done; + return NULL; } emalloc(text, char *, sbuf->st_size + 1, "do_readfile"); - memset(text, '\0', sbuf->st_size + 1); - if ((ret = read(fd, text, sbuf->st_size)) != sbuf->st_size) { + if (read(fd, text, sbuf->st_size) != sbuf->st_size) { update_ERRNO_int(errno); gawk_free(text); - text = NULL; - /* fall through to return */ + return NULL; } -done: + text[sbuf->st_size] = '\0'; return text; } diff --git a/extension/rwarray.c b/extension/rwarray.c index a7d752cf..53c908df 100644 --- a/extension/rwarray.c +++ b/extension/rwarray.c @@ -483,12 +483,12 @@ read_value(FILE *fp, awk_value_t *value) } value->str_value.len = len; value->str_value.str = gawk_malloc(len + 1); - memset(value->str_value.str, '\0', len + 1); if (fread(value->str_value.str, 1, len, fp) != (ssize_t) len) { gawk_free(value->str_value.str); return awk_false; } + value->str_value.str[len] = '\0'; } return awk_true; diff --git a/extension/rwarray0.c b/extension/rwarray0.c index faa73783..79dee79e 100644 --- a/extension/rwarray0.c +++ b/extension/rwarray0.c @@ -447,12 +447,12 @@ read_value(int fd, awk_value_t *value) value->val_type = AWK_STRING; value->str_value.len = len; value->str_value.str = malloc(len + 1); - memset(value->str_value.str, '\0', len + 1); if (read(fd, value->str_value.str, len) != (ssize_t) len) { free(value->str_value.str); return awk_false; } + value->str_value.str[len] = '\0'; } return awk_true; |