mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-06 12:36:58 +00:00
Since passing \0 as the second argument to strchr is valid (and will
match the trailing \0 of a string) we need to check that first, otherwise we end up with incorrect results. Fix suggested by reporter. (closes issue #13787) Reported by: meitinger git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@152059 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -573,7 +573,10 @@ static int keypadhash(struct ast_channel *chan, char *cmd, char *data, char *buf
|
|||||||
char *bufptr, *dataptr;
|
char *bufptr, *dataptr;
|
||||||
|
|
||||||
for (bufptr = buf, dataptr = data; bufptr < buf + len - 1; dataptr++) {
|
for (bufptr = buf, dataptr = data; bufptr < buf + len - 1; dataptr++) {
|
||||||
if (*dataptr == '1') {
|
if (*dataptr == '\0') {
|
||||||
|
*bufptr++ = '\0';
|
||||||
|
break;
|
||||||
|
} else if (*dataptr == '1') {
|
||||||
*bufptr++ = '1';
|
*bufptr++ = '1';
|
||||||
} else if (strchr("AaBbCc2", *dataptr)) {
|
} else if (strchr("AaBbCc2", *dataptr)) {
|
||||||
*bufptr++ = '2';
|
*bufptr++ = '2';
|
||||||
@@ -593,9 +596,6 @@ static int keypadhash(struct ast_channel *chan, char *cmd, char *data, char *buf
|
|||||||
*bufptr++ = '9';
|
*bufptr++ = '9';
|
||||||
} else if (*dataptr == '0') {
|
} else if (*dataptr == '0') {
|
||||||
*bufptr++ = '0';
|
*bufptr++ = '0';
|
||||||
} else if (*dataptr == '\0') {
|
|
||||||
*bufptr++ = '\0';
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
buf[len - 1] = '\0';
|
buf[len - 1] = '\0';
|
||||||
|
Reference in New Issue
Block a user