aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Lane <tgl@sss.pgh.pa.us>2014-11-18 13:28:06 -0500
committerTom Lane <tgl@sss.pgh.pa.us>2014-11-18 13:28:06 -0500
commit8b13e5c6c0e8a6b797370fb91d207031df5e784a (patch)
tree4bd1d68bd6f25a7e2d552107fdf0e420f0d07786
parent606c0123d627b37d5ac3f7c2c97cd715dde7842f (diff)
downloadpostgresql-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.c4
-rw-r--r--src/bin/psql/command.c7
-rw-r--r--src/bin/psql/tab-complete.c9
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);