aboutsummaryrefslogtreecommitdiffstats
path: root/extension
diff options
context:
space:
mode:
Diffstat (limited to 'extension')
-rw-r--r--extension/ChangeLog20
-rw-r--r--extension/filefuncs.c3
-rw-r--r--extension/gawkfts.c3
-rw-r--r--extension/readfile.c13
-rw-r--r--extension/rwarray.c2
-rw-r--r--extension/rwarray0.c2
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;