[asterisk-commits] russell: branch 1.4 r46067 - in /branches/1.4/utils: ael_main.c muted.c

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Mon Oct 23 18:27:43 MST 2006


Author: russell
Date: Mon Oct 23 20:27:42 2006
New Revision: 46067

URL: http://svn.digium.com/view/asterisk?rev=46067&view=rev
Log:
In muted.c, check the return value of strdup.  In ael_main.c, check the return
value of calloc.  (issue #8157)

In passing fix a few minor bugs in ael_main.c.  The last argument to strncpy()
was a hard-coded 100, where it should have been 99.  I changed this to use
sizeof() - 1.

Modified:
    branches/1.4/utils/ael_main.c
    branches/1.4/utils/muted.c

Modified: branches/1.4/utils/ael_main.c
URL: http://svn.digium.com/view/asterisk/branches/1.4/utils/ael_main.c?rev=46067&r1=46066&r2=46067&view=diff
==============================================================================
--- branches/1.4/utils/ael_main.c (original)
+++ branches/1.4/utils/ael_main.c Mon Oct 23 20:27:42 2006
@@ -62,8 +62,10 @@
 struct namelist *create_name(char *name);
 struct namelist *create_name(char *name)
 {
-	struct namelist *x = (struct namelist *)calloc(sizeof(struct namelist),1);
-	strncpy(x->name,name,100);
+	struct namelist *x = calloc(1, sizeof(*x));
+	if (!x)
+		return NULL;
+	strncpy(x->name, name, sizeof(x->name) - 1);
 	return x;
 }
 
@@ -253,14 +255,16 @@
 
 struct ast_context * ast_context_create(void **extcontexts, const char *name, const char *registrar)
 {
-	struct ast_context *x = (struct ast_context *)calloc(sizeof(struct ast_context),1);
+	struct ast_context *x = calloc(1, sizeof(*x));
+	if (!x)
+		return NULL;
 	x->next = context_list;
 	context_list = x;
-	if(!no_comp)
+	if (!no_comp)
 		printf("Executed ast_context_create(conts, name=%s, registrar=%s);\n", name, registrar);
 	conts++;
-	strncpy(x->name,name,100);
-	strncpy(x->registrar,registrar,100);
+	strncpy(x->name, name, sizeof(x->name) - 1);
+	strncpy(x->registrar, registrar, sizeof(x->registrar) - 1);
 	return x;
 }
 

Modified: branches/1.4/utils/muted.c
URL: http://svn.digium.com/view/asterisk/branches/1.4/utils/muted.c?rev=46067&r1=46066&r2=46067&view=diff
==============================================================================
--- branches/1.4/utils/muted.c (original)
+++ branches/1.4/utils/muted.c Mon Oct 23 20:27:42 2006
@@ -85,8 +85,15 @@
 	chan = malloc(sizeof(struct channel));
 	if (chan) {
 		memset(chan, 0, sizeof(struct channel));
-		chan->tech = strdup(tech);
-		chan->location = strdup(location);
+		if (!(chan->tech = strdup(tech))) {
+			free(chan);
+			return;
+		}
+		if (!(chan->location = strdup(location))) {
+			free(chan->tech);
+			free(chan);
+			return;
+		}
 		chan->next = channels;
 		channels = chan;
 	}
@@ -550,7 +557,10 @@
 	sub = malloc(sizeof(struct subchannel));
 	if (sub) {
 		memset(sub, 0, sizeof(struct subchannel));
-		sub->name = strdup(name);
+		if (!(sub->name = strdup(name))) {
+			free(sub);
+			return;
+		}
 		sub->next = chan->subs;
 		chan->subs = sub;
 	}



More information about the asterisk-commits mailing list