From: Kevin P. Fleming Date: Thu, 18 May 2006 19:39:39 +0000 (+0000) Subject: Merged revisions 28337 via svnmerge from X-Git-Tag: 1.4.0-beta1~1333 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=1ad7b941444fcbe1b47c3bdf0967581f329131b1;p=thirdparty%2Fasterisk.git Merged revisions 28337 via svnmerge from https://origsvn.digium.com/svn/asterisk/branches/1.2 ........ r28337 | kpfleming | 2006-05-18 14:35:55 -0500 (Thu, 18 May 2006) | 2 lines use unsigned counters for handling answer/IE lengths while processing DNS results (issue #7174) ........ git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@28338 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- diff --git a/enum.c b/enum.c index a6553b9643..7b3c1cd13f 100644 --- a/enum.c +++ b/enum.c @@ -95,27 +95,29 @@ struct naptr { } __attribute__ ((__packed__)); /*! \brief Parse NAPTR record information elements */ -static int parse_ie(unsigned char *data, int maxdatalen, unsigned 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; } /*! \brief Parse DNS NAPTR record used in ENUM ---*/ static int parse_naptr(unsigned char *dst, int dstsize, char *tech, int techsize, unsigned char *answer, int len, unsigned char *naptrinput) { - char tech_return[80]; char *oanswer = answer; char flags[512] = "";