diff options
author | Tom Lane <tgl@sss.pgh.pa.us> | 2014-11-18 13:28:06 -0500 |
---|---|---|
committer | Tom Lane <tgl@sss.pgh.pa.us> | 2014-11-18 13:28:06 -0500 |
commit | 8b13e5c6c0e8a6b797370fb91d207031df5e784a (patch) | |
tree | 4bd1d68bd6f25a7e2d552107fdf0e420f0d07786 | |
parent | 606c0123d627b37d5ac3f7c2c97cd715dde7842f (diff) | |
download | postgresql-8b13e5c6c0e8a6b797370fb91d207031df5e784a.tar.gz postgresql-8b13e5c6c0e8a6b797370fb91d207031df5e784a.zip |
Fix some bogus direct uses of realloc().
pg_dump/parallel.c was using realloc() directly with no error check.
While the odds of an actual failure here seem pretty low, Coverity
complains about it, so fix by using pg_realloc() instead.
While looking for other instances, I noticed a couple of places in
psql that hadn't gotten the memo about the availability of pg_realloc.
These aren't bugs, since they did have error checks, but verbosely
inconsistent code is not a good thing.
Back-patch as far as 9.3. 9.2 did not have pg_dump/parallel.c, nor
did it have pg_realloc available in all frontend code.
-rw-r--r-- | src/bin/pg_dump/parallel.c | 4 | ||||
-rw-r--r-- | src/bin/psql/command.c | 7 | ||||
-rw-r--r-- | src/bin/psql/tab-complete.c | 9 |
3 files changed, 5 insertions, 15 deletions
diff --git a/src/bin/pg_dump/parallel.c b/src/bin/pg_dump/parallel.c index 29d20130a96..0a9ac0287a9 100644 --- a/src/bin/pg_dump/parallel.c +++ b/src/bin/pg_dump/parallel.c @@ -1308,7 +1308,7 @@ readMessageFromPipe(int fd) { /* could be any number */ bufsize += 16; - msg = (char *) realloc(msg, bufsize); + msg = (char *) pg_realloc(msg, bufsize); } } @@ -1316,7 +1316,7 @@ readMessageFromPipe(int fd) * Worker has closed the connection, make sure to clean up before return * since we are not returning msg (but did allocate it). */ - free(msg); + pg_free(msg); return NULL; } diff --git a/src/bin/psql/command.c b/src/bin/psql/command.c index 260893523a5..3a884028b54 100644 --- a/src/bin/psql/command.c +++ b/src/bin/psql/command.c @@ -1133,12 +1133,7 @@ exec_command(const char *cmd, while ((opt = psql_scan_slash_option(scan_state, OT_NORMAL, NULL, false))) { - newval = realloc(newval, strlen(newval) + strlen(opt) + 1); - if (!newval) - { - psql_error("out of memory\n"); - exit(EXIT_FAILURE); - } + newval = pg_realloc(newval, strlen(newval) + strlen(opt) + 1); strcat(newval, opt); free(opt); } diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c index 8c85425fc5d..278d3952d4d 100644 --- a/src/bin/psql/tab-complete.c +++ b/src/bin/psql/tab-complete.c @@ -4331,13 +4331,8 @@ append_variable_names(char ***varnames, int *nvars, if (*nvars >= *maxvars) { *maxvars *= 2; - *varnames = (char **) realloc(*varnames, - ((*maxvars) + 1) * sizeof(char *)); - if (!(*varnames)) - { - psql_error("out of memory\n"); - exit(EXIT_FAILURE); - } + *varnames = (char **) pg_realloc(*varnames, + ((*maxvars) + 1) * sizeof(char *)); } (*varnames)[(*nvars)++] = psprintf("%s%s%s", prefix, varname, suffix); |