Fix possible null pointer of callerid in capi_call().
This commit is contained in:
parent
28a4c3445d
commit
d9c4851405
16
chan_capi.c
16
chan_capi.c
|
@ -806,6 +806,7 @@ int capi_call(struct ast_channel *c, char *idest, int timeout)
|
||||||
char *dest, *interface, *param;
|
char *dest, *interface, *param;
|
||||||
char buffer[AST_MAX_EXTENSION];
|
char buffer[AST_MAX_EXTENSION];
|
||||||
char called[AST_MAX_EXTENSION], calling[AST_MAX_EXTENSION];
|
char called[AST_MAX_EXTENSION], calling[AST_MAX_EXTENSION];
|
||||||
|
char callerid[AST_MAX_EXTENSION];
|
||||||
char bchaninfo[3];
|
char bchaninfo[3];
|
||||||
int CLIR;
|
int CLIR;
|
||||||
|
|
||||||
|
@ -883,18 +884,19 @@ int capi_call(struct ast_channel *c, char *idest, int timeout)
|
||||||
CONNECT_REQ_CALLEDPARTYSUBADDRESS(&CMSG) = NULL;
|
CONNECT_REQ_CALLEDPARTYSUBADDRESS(&CMSG) = NULL;
|
||||||
|
|
||||||
#ifdef CC_AST_CHANNEL_HAS_CID
|
#ifdef CC_AST_CHANNEL_HAS_CID
|
||||||
calling[0] = strlen(c->cid.cid_num) + 2;
|
if (c->cid.cid_num)
|
||||||
|
strncpy(callerid, c->cid.cid_num, sizeof(callerid) - 1);
|
||||||
#else
|
#else
|
||||||
calling[0] = strlen(c->callerid) + 2;
|
if (c->callerid)
|
||||||
|
strncpy(callerid, c->callerid, sizeof(callerid) - 1);
|
||||||
#endif
|
#endif
|
||||||
|
else
|
||||||
|
memset(callerid, 0, sizeof(callerid));
|
||||||
|
|
||||||
|
calling[0] = strlen(callerid) + 2;
|
||||||
calling[1] = 0x00;
|
calling[1] = 0x00;
|
||||||
calling[2] = 0x80 | (CLIR & 0x63);
|
calling[2] = 0x80 | (CLIR & 0x63);
|
||||||
#ifdef CC_AST_CHANNEL_HAS_CID
|
strncpy(&calling[3], callerid, sizeof(calling) - 4);
|
||||||
strncpy(&calling[3], c->cid.cid_num, sizeof(calling) - 4);
|
|
||||||
#else
|
|
||||||
strncpy(&calling[3], c->callerid, sizeof(calling) - 4);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
CONNECT_REQ_CALLINGPARTYNUMBER(&CMSG) = calling;
|
CONNECT_REQ_CALLINGPARTYNUMBER(&CMSG) = calling;
|
||||||
CONNECT_REQ_CALLINGPARTYSUBADDRESS(&CMSG) = NULL;
|
CONNECT_REQ_CALLINGPARTYSUBADDRESS(&CMSG) = NULL;
|
||||||
|
|
Loading…
Reference in New Issue