aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2006-05-18 19:39:39 +0000
committerkpfleming <kpfleming@f38db490-d61c-443f-a65b-d21fe96a405b>2006-05-18 19:39:39 +0000
commite36d23b2fdf2bd6f7e004744e4a202b9af5e8506 (patch)
tree9406cf2e118b39002aada4941845beb44e4e8014
parent69926bef468b7088da647f5fa527077df6c78866 (diff)
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: http://svn.digium.com/svn/asterisk/trunk@28338 f38db490-d61c-443f-a65b-d21fe96a405b
-rw-r--r--enum.c12
1 files changed, 7 insertions, 5 deletions
diff --git a/enum.c b/enum.c
index a6553b964..7b3c1cd13 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] = "";