aboutsummaryrefslogtreecommitdiff
path: root/src/backend
diff options
context:
space:
mode:
Diffstat (limited to 'src/backend')
-rw-r--r--src/backend/bootstrap/bootstrap.c14
-rw-r--r--src/backend/port/dynloader/darwin.c3
-rw-r--r--src/backend/utils/misc/ps_status.c27
3 files changed, 35 insertions, 9 deletions
diff --git a/src/backend/bootstrap/bootstrap.c b/src/backend/bootstrap/bootstrap.c
index 8feeae05dfb..3870a4deb97 100644
--- a/src/backend/bootstrap/bootstrap.c
+++ b/src/backend/bootstrap/bootstrap.c
@@ -47,7 +47,8 @@
uint32 bootstrap_data_checksum_version = 0; /* No checksum */
-#define ALLOC(t, c) ((t *) calloc((unsigned)(c), sizeof(t)))
+#define ALLOC(t, c) \
+ ((t *) MemoryContextAllocZero(TopMemoryContext, (unsigned)(c) * sizeof(t)))
static void CheckerModeMain(void);
static void BootstrapModeMain(void);
@@ -227,7 +228,7 @@ AuxiliaryProcessMain(int argc, char *argv[])
SetConfigOption("shared_buffers", optarg, PGC_POSTMASTER, PGC_S_ARGV);
break;
case 'D':
- userDoption = strdup(optarg);
+ userDoption = pstrdup(optarg);
break;
case 'd':
{
@@ -1002,13 +1003,8 @@ boot_get_type_io_data(Oid typid,
static Form_pg_attribute
AllocateAttribute(void)
{
- Form_pg_attribute attribute = (Form_pg_attribute) malloc(ATTRIBUTE_FIXED_PART_SIZE);
-
- if (!PointerIsValid(attribute))
- elog(FATAL, "out of memory");
- MemSet(attribute, 0, ATTRIBUTE_FIXED_PART_SIZE);
-
- return attribute;
+ return (Form_pg_attribute)
+ MemoryContextAllocZero(TopMemoryContext, ATTRIBUTE_FIXED_PART_SIZE);
}
/*
diff --git a/src/backend/port/dynloader/darwin.c b/src/backend/port/dynloader/darwin.c
index ccd92c39d4b..a83c614f4f1 100644
--- a/src/backend/port/dynloader/darwin.c
+++ b/src/backend/port/dynloader/darwin.c
@@ -78,6 +78,9 @@ pg_dlsym(void *handle, char *funcname)
NSSymbol symbol;
char *symname = (char *) malloc(strlen(funcname) + 2);
+ if (!symname)
+ return NULL;
+
sprintf(symname, "_%s", funcname);
if (NSIsSymbolNameDefined(symname))
{
diff --git a/src/backend/utils/misc/ps_status.c b/src/backend/utils/misc/ps_status.c
index 892a810baba..c50be8aab65 100644
--- a/src/backend/utils/misc/ps_status.c
+++ b/src/backend/utils/misc/ps_status.c
@@ -113,6 +113,9 @@ static char **save_argv;
* overwritten during init_ps_display. Also, the physical location of the
* environment strings may be moved, so this should be called before any code
* that might try to hang onto a getenv() result.)
+ *
+ * Note that in case of failure this cannot call elog() as that is not
+ * initialized yet. We rely on write_stderr() instead.
*/
char **
save_ps_display_args(int argc, char **argv)
@@ -163,8 +166,20 @@ save_ps_display_args(int argc, char **argv)
* move the environment out of the way
*/
new_environ = (char **) malloc((i + 1) * sizeof(char *));
+ if (!new_environ)
+ {
+ write_stderr("out of memory\n");
+ exit(1);
+ }
for (i = 0; environ[i] != NULL; i++)
+ {
new_environ[i] = strdup(environ[i]);
+ if (!new_environ[i])
+ {
+ write_stderr("out of memory\n");
+ exit(1);
+ }
+ }
new_environ[i] = NULL;
environ = new_environ;
}
@@ -189,8 +204,20 @@ save_ps_display_args(int argc, char **argv)
int i;
new_argv = (char **) malloc((argc + 1) * sizeof(char *));
+ if (!new_argv)
+ {
+ write_stderr("out of memory\n");
+ exit(1);
+ }
for (i = 0; i < argc; i++)
+ {
new_argv[i] = strdup(argv[i]);
+ if (!new_argv[i])
+ {
+ write_stderr("out of memory\n");
+ exit(1);
+ }
+ }
new_argv[argc] = NULL;
#if defined(__darwin__)