summaryrefslogtreecommitdiff
path: root/ares_expand_string.c
diff options
context:
space:
mode:
authorYang Tse <yangsita@gmail.com>2010-02-23 18:46:27 +0000
committerYang Tse <yangsita@gmail.com>2010-02-23 18:46:27 +0000
commit78414c0f3a4f7185323f13f04c8a1d5b68102b26 (patch)
treece768fd7c1f73183a7b252cff1be63b881af9e98 /ares_expand_string.c
parent157d68729f5ff4c9eb2f0d5d1fbf8d09cda4b378 (diff)
downloadc-ares-78414c0f3a4f7185323f13f04c8a1d5b68102b26.tar.gz
c-ares-78414c0f3a4f7185323f13f04c8a1d5b68102b26.tar.bz2
c-ares-78414c0f3a4f7185323f13f04c8a1d5b68102b26.zip
fix compiler warning
Diffstat (limited to 'ares_expand_string.c')
-rw-r--r--ares_expand_string.c18
1 files changed, 11 insertions, 7 deletions
diff --git a/ares_expand_string.c b/ares_expand_string.c
index 6ab8a77..3b7b341 100644
--- a/ares_expand_string.c
+++ b/ares_expand_string.c
@@ -46,26 +46,30 @@ int ares_expand_string(const unsigned char *encoded,
long *enclen)
{
unsigned char *q;
- long len;
+ union {
+ ssize_t sig;
+ size_t uns;
+ } elen;
+
if (encoded == abuf+alen)
return ARES_EBADSTR;
- len = *encoded;
- if (encoded+len+1 > abuf+alen)
+ elen.uns = *encoded;
+ if (encoded+elen.sig+1 > abuf+alen)
return ARES_EBADSTR;
encoded++;
- *s = malloc(len+1);
+ *s = malloc(elen.uns+1);
if (*s == NULL)
return ARES_ENOMEM;
q = *s;
- strncpy((char *)q, (char *)encoded, len);
- q[len] = '\0';
+ strncpy((char *)q, (char *)encoded, elen.uns);
+ q[elen.uns] = '\0';
*s = q;
- *enclen = len+1;
+ *enclen = (long)(elen.sig+1);
return ARES_SUCCESS;
}