You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@httpd.apache.org by John Bley <jb...@acpub.duke.edu> on 1999/02/02 13:09:11 UTC
[PATCH] malloc checks
Here are about seven missed malloc checks or malloc checks that didn't at
least print a message indicating the problem, all located in src/main.
Given that ap_palloc seems to be used so much throughout the rest of the
source, I wonder if these mallocs should be converted to ap_pallocs
instead.... if so, the patch can be easily converted as such by me or
anybody with five minutes to spare.
Patch against 1.3.4 in diff -u form.
--
John Bley - jbb6@acpub.duke.edu
Duke '99 - English/Computer Science
Since English is a mess, it maps well onto the problem space,
which is also a mess, which we call reality. - Larry Wall
diff -Burp apache_1.3.4_orig/src/main/buff.c apache_1.3.4/src/main/buff.c
--- apache_1.3.4_orig/src/main/buff.c Fri Jan 1 14:04:47 1999
+++ apache_1.3.4/src/main/buff.c Tue Feb 2 06:46:03 1999
@@ -1233,8 +1233,10 @@ API_EXPORT(int) ap_bwrite(BUFF *fb, cons
if (cbuf != NULL)
free(cbuf);
cbuf = malloc(csize = nbyte+HUGE_STRING_LEN);
- if (cbuf == NULL)
+ if (cbuf == NULL) {
+ fprintf(stderr, "Ouch! Out of memory!\n");
csize = 0;
+ }
}
ebcdic2ascii((cbuf) ? cbuf : (void*)buf, buf, nbyte);
buf = (cbuf) ? cbuf : buf;
diff -Burp apache_1.3.4_orig/src/main/http_config.c apache_1.3.4/src/main/http_config.c
--- apache_1.3.4_orig/src/main/http_config.c Fri Jan 1 14:04:48 1999
+++ apache_1.3.4/src/main/http_config.c Tue Feb 2 06:47:04 1999
@@ -327,6 +327,9 @@ static void build_method_shortcuts(void)
}
}
method_ptrs = malloc((how_many_ptrs + NMETHODS) * sizeof(handler_func));
+ if (method_ptrs == NULL) {
+ fprintf(stderr, "Ouch! Out of memory!\n");
+ }
next_ptr = 0;
for (i = 0; i < NMETHODS; ++i) {
/* XXX: This is an itsy bit presumptuous about the alignment
@@ -693,6 +696,9 @@ void ap_setup_prelinked_modules()
*/
ap_loaded_modules = (module **)malloc(
sizeof(module *)*(total_modules+DYNAMIC_MODULE_LIMIT+1));
+ if (ap_loaded_modules == NULL) {
+ fprintf(stderr, "Ouch! Out of memory!\n");
+ }
for (m = ap_preloaded_modules, m2 = ap_loaded_modules; *m != NULL; )
*m2++ = *m++;
*m2 = NULL;
diff -Burp apache_1.3.4_orig/src/main/http_main.c apache_1.3.4/src/main/http_main.c
--- apache_1.3.4_orig/src/main/http_main.c Fri Jan 8 03:48:46 1999
+++ apache_1.3.4/src/main/http_main.c Tue Feb 2 06:53:09 1999
@@ -1544,6 +1544,9 @@ static void reinit_scoreboard(pool *p)
{
ap_assert(!ap_scoreboard_image);
ap_scoreboard_image = (scoreboard *) malloc(SCOREBOARD_SIZE);
+ if (ap_scoreboard_image == NULL) {
+ fprintf(stderr, "Ouch! Out of memory!\n");
+ }
memset(ap_scoreboard_image, 0, SCOREBOARD_SIZE);
}
@@ -4809,6 +4812,9 @@ void add_job(int sock)
/* TODO: If too many jobs in queue, sleep, check for problems */
ap_acquire_mutex(allowed_globals.jobmutex);
new_job = (joblist *) malloc(sizeof(joblist));
+ if (new_jobs == NULL) {
+ fprintf(stderr, "Ouch! Out of memory!\n");
+ }
new_job->next = NULL;
new_job->sock = sock;
if (allowed_globals.jobtail != NULL)
@@ -6117,6 +6123,9 @@ int main(int argc, char *argv[], char *e
}
if (llp_slot == NULL) {
envpnew = (char **)malloc(sizeof(char *)*(i + 2));
+ if (envpnew == NULL) {
+ fprintf(stderr, "Ouch! Out of memory!\n");
+ }
memcpy(envpnew, envp, sizeof(char *)*i);
envp = envpnew;
llp_slot = &envp[i++];
diff -Burp apache_1.3.4_orig/src/main/util.c apache_1.3.4/src/main/util.c
--- apache_1.3.4_orig/src/main/util.c Fri Jan 8 15:08:23 1999
+++ apache_1.3.4/src/main/util.c Tue Feb 2 06:45:49 1999
@@ -1373,8 +1373,10 @@ char *strdup(const char *str)
{
char *sdup;
- if (!(sdup = (char *) malloc(strlen(str) + 1)))
+ if (!(sdup = (char *) malloc(strlen(str) + 1))) {
+ fprintf(stderr, "Ouch! Out of memory!\n");
return NULL;
+ }
sdup = strcpy(sdup, str);
return sdup;