|
@@ -518,9 +518,9 @@ static isdnloop_stat isdnloop_cmd_table[] =
|
|
|
static void
|
|
|
isdnloop_fake_err(isdnloop_card *card)
|
|
|
{
|
|
|
- char buf[60];
|
|
|
+ char buf[64];
|
|
|
|
|
|
- sprintf(buf, "E%s", card->omsg);
|
|
|
+ snprintf(buf, sizeof(buf), "E%s", card->omsg);
|
|
|
isdnloop_fake(card, buf, -1);
|
|
|
isdnloop_fake(card, "NAK", -1);
|
|
|
}
|
|
@@ -903,6 +903,8 @@ isdnloop_parse_cmd(isdnloop_card *card)
|
|
|
case 7:
|
|
|
/* 0x;EAZ */
|
|
|
p += 3;
|
|
|
+ if (strlen(p) >= sizeof(card->eazlist[0]))
|
|
|
+ break;
|
|
|
strcpy(card->eazlist[ch - 1], p);
|
|
|
break;
|
|
|
case 8:
|
|
@@ -1133,7 +1135,7 @@ isdnloop_command(isdn_ctrl *c, isdnloop_card *card)
|
|
|
{
|
|
|
ulong a;
|
|
|
int i;
|
|
|
- char cbuf[60];
|
|
|
+ char cbuf[80];
|
|
|
isdn_ctrl cmd;
|
|
|
isdnloop_cdef cdef;
|
|
|
|
|
@@ -1198,7 +1200,6 @@ isdnloop_command(isdn_ctrl *c, isdnloop_card *card)
|
|
|
break;
|
|
|
if ((c->arg & 255) < ISDNLOOP_BCH) {
|
|
|
char *p;
|
|
|
- char dial[50];
|
|
|
char dcode[4];
|
|
|
|
|
|
a = c->arg;
|
|
@@ -1210,10 +1211,10 @@ isdnloop_command(isdn_ctrl *c, isdnloop_card *card)
|
|
|
} else
|
|
|
/* Normal Dial */
|
|
|
strcpy(dcode, "CAL");
|
|
|
- strcpy(dial, p);
|
|
|
- sprintf(cbuf, "%02d;D%s_R%s,%02d,%02d,%s\n", (int) (a + 1),
|
|
|
- dcode, dial, c->parm.setup.si1,
|
|
|
- c->parm.setup.si2, c->parm.setup.eazmsn);
|
|
|
+ snprintf(cbuf, sizeof(cbuf),
|
|
|
+ "%02d;D%s_R%s,%02d,%02d,%s\n", (int) (a + 1),
|
|
|
+ dcode, p, c->parm.setup.si1,
|
|
|
+ c->parm.setup.si2, c->parm.setup.eazmsn);
|
|
|
i = isdnloop_writecmd(cbuf, strlen(cbuf), 0, card);
|
|
|
}
|
|
|
break;
|