mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-28 23:15:59 +00:00
use unsigned counters for handling answer/IE lengths while processing DNS results (issue #7174)
git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.2@28337 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
14
enum.c
14
enum.c
@@ -80,27 +80,29 @@ struct naptr {
|
||||
} __attribute__ ((__packed__));
|
||||
|
||||
/*--- parse_ie: Parse NAPTR record information elements */
|
||||
static int parse_ie(char *data, int maxdatalen, char *src, int srclen)
|
||||
static unsigned int parse_ie(char *data, unsigned int maxdatalen, char *src, unsigned int srclen)
|
||||
{
|
||||
int len, olen;
|
||||
unsigned int len, olen;
|
||||
|
||||
len = olen = (int)src[0];
|
||||
len = olen = (unsigned int) src[0];
|
||||
src++;
|
||||
srclen--;
|
||||
if (len > srclen || len < 0 ) {
|
||||
|
||||
if (len > srclen) {
|
||||
ast_log(LOG_WARNING, "ENUM parsing failed: Wanted %d characters, got %d\n", len, srclen);
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (len > maxdatalen)
|
||||
len = maxdatalen;
|
||||
memcpy(data, src, len);
|
||||
|
||||
return olen + 1;
|
||||
}
|
||||
|
||||
/*--- parse_naptr: Parse DNS NAPTR record used in ENUM ---*/
|
||||
static int parse_naptr(char *dst, int dstsize, char *tech, int techsize, char *answer, int len, char *naptrinput)
|
||||
{
|
||||
|
||||
char tech_return[80];
|
||||
char *oanswer = answer;
|
||||
char flags[512] = "";
|
||||
@@ -344,7 +346,7 @@ static int txt_callback(void *context, char *answer, int len, char *fullanswer)
|
||||
/*--- enum_callback: Callback from ENUM lookup function */
|
||||
static int enum_callback(void *context, char *answer, int len, char *fullanswer)
|
||||
{
|
||||
struct enum_context *c = (struct enum_context *)context;
|
||||
struct enum_context *c = (struct enum_context *)context;
|
||||
void *p = NULL;
|
||||
int res;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user