Change malloc+memset to calloc. Also, handle allocation failures early to reduce indentation.

(closes issue #11469)
Reported by: eliel
Patches:
      pri.c.patch uploaded by eliel (license 64)
      q931.c.patch uploaded by eliel (license 64)
      q921.c.patch uploaded by eliel (license 64)
      pri_facility.c.patch uploaded by eliel (license 64)


git-svn-id: https://origsvn.digium.com/svn/libpri/trunk@496 2fbb986a-6c06-0410-b554-c9c1f0a7f128
This commit is contained in:
Russell Bryant
2007-12-06 22:16:32 +00:00
parent 1ee4f8aa3f
commit b288766b85
4 changed files with 42 additions and 56 deletions

2
pri.c
View File

@@ -845,7 +845,7 @@ void pri_enslave(struct pri *master, struct pri *slave)
struct pri_sr *pri_sr_new(void)
{
struct pri_sr *req;
req = malloc(sizeof(struct pri_sr));
req = malloc(sizeof(*req));
if (req)
pri_sr_init(req);
return req;

View File

@@ -2344,19 +2344,16 @@ int pri_call_apdu_queue(q931_call *call, int messagetype, void *apdu, int apdu_l
if (!call || !messagetype || !apdu || (apdu_len < 1) || (apdu_len > 255))
return -1;
new_event = malloc(sizeof(struct apdu_event));
if (new_event) {
memset(new_event, 0, sizeof(struct apdu_event));
new_event->message = messagetype;
new_event->callback = function;
new_event->data = data;
memcpy(new_event->apdu, apdu, apdu_len);
new_event->apdu_len = apdu_len;
} else {
if (!(new_event = calloc(1, sizeof(*new_event)))) {
pri_error(call->pri, "!! Malloc failed!\n");
return -1;
}
new_event->message = messagetype;
new_event->callback = function;
new_event->data = data;
memcpy(new_event->apdu, apdu, apdu_len);
new_event->apdu_len = apdu_len;
if (call->apdus) {
cur = call->apdus;

37
q921.c
View File

@@ -99,25 +99,21 @@ static void q921_send_tei(struct pri *pri, int message, int ri, int ai, int isre
{
q921_u *f;
f = malloc(sizeof(*f) + 5);
if (f) {
memset(f, 0, sizeof(*f) + 5);
Q921_INIT(pri, *f);
f->h.c_r = isreq;
f->m3 = 0;
f->m2 = 0;
f->p_f = 0;
f->ft = Q921_FRAMETYPE_U;
f->data[0] = 0x0f; /* Management entity */
f->data[1] = (ri >> 8) & 0xff;
f->data[2] = ri & 0xff;
f->data[3] = message;
f->data[4] = (ai << 1) | 1;
// if (pri->debug & PRI_DEBUG_Q921_STATE)
pri_message(pri, "Sending TEI management message %d, TEI=%d\n", message, ai);
q921_transmit(pri, (q921_h *)f, 8);
free(f);
}
if (!(f = calloc(1, sizeof(*f) + 5)))
return;
Q921_INIT(pri, *f);
f->h.c_r = isreq;
f->ft = Q921_FRAMETYPE_U;
f->data[0] = 0x0f; /* Management entity */
f->data[1] = (ri >> 8) & 0xff;
f->data[2] = ri & 0xff;
f->data[3] = message;
f->data[4] = (ai << 1) | 1;
// if (pri->debug & PRI_DEBUG_Q921_STATE)
pri_message(pri, "Sending TEI management message %d, TEI=%d\n", message, ai);
q921_transmit(pri, (q921_h *)f, 8);
free(f);
}
static void q921_tei_request(void *vpri)
@@ -440,9 +436,8 @@ int q921_transmit_iframe(struct pri *pri, void *buf, int len, int cr)
q921_frame *f, *prev=NULL;
for (f=pri->txqueue; f; f = f->next) prev = f;
f = malloc(sizeof(q921_frame) + len + 2);
f = calloc(1, sizeof(q921_frame) + len + 2);
if (f) {
memset(f,0,sizeof(q921_frame) + len + 2);
Q921_INIT(pri, f->h);
switch(pri->localtype) {
case PRI_NETWORK:

42
q931.c
View File

@@ -255,18 +255,10 @@ static char *code2str(int code, struct msgtype *codes, int max)
static void call_init(struct q931_call *c)
{
memset(c, 0, sizeof(*c));
c->alive = 0;
c->sendhangupack = 0;
c->forceinvert = -1;
c->cr = -1;
c->slotmap = -1;
c->channelno = -1;
c->ds1no = 0;
c->ds1explicit = 0;
c->chanflags = 0;
c->next = NULL;
c->sentchannel = 0;
c->newcall = 1;
c->ourcallstate = Q931_CALL_STATE_NULL;
c->peercallstate = Q931_CALL_STATE_NULL;
@@ -2196,23 +2188,25 @@ static q931_call *q931_getcall(struct pri *pri, int cr, int outboundnew)
/* No call exists, make a new one */
if (pri->debug & PRI_DEBUG_Q931_STATE)
pri_message(pri, "-- Making new call for cr %d\n", cr);
cur = malloc(sizeof(struct q931_call));
if (cur) {
call_init(cur);
/* Call reference */
cur->cr = cr;
/* PRI is set to whoever called us */
if (pri->bri && (pri->localtype == PRI_CPE) && pri->subchannel && outboundnew)
cur->pri = pri->subchannel;
else
cur->pri = pri;
if (!(cur = calloc(1, sizeof(*cur))))
return NULL;
/* Append to end of list */
if (prev)
prev->next = cur;
else
*master->callpool = cur;
}
call_init(cur);
/* Call reference */
cur->cr = cr;
/* PRI is set to whoever called us */
if (pri->bri && (pri->localtype == PRI_CPE) && pri->subchannel && outboundnew)
cur->pri = pri->subchannel;
else
cur->pri = pri;
/* Append to end of list */
if (prev)
prev->next = cur;
else
*master->callpool = cur;
return cur;
}