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.
index 29d20130a9671b2c170cbe043fc24d8cdf5350f8..0a9ac0287a986313e34b7d2a58b00ccfa30edf33 100644 (file)
{
/* could be any number */
bufsize += 16;
- msg = (char *) realloc(msg, bufsize);
+ msg = (char *) pg_realloc(msg, bufsize);
}
}
* 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;
}
index 260893523a5bde71e1bbeea926586708a8e17ec2..3a884028b54d8f8f0760c429419468c1445ba991 100644 (file)
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);
}
index 8c85425fc5df32812573c1cff33e8cf15f51cdfd..278d3952d4d0ad6e2c2d6707d96a715f9505fb44 100644 (file)
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);