diff options
author | Yang Tse <yangsita@gmail.com> | 2010-02-23 18:46:27 +0000 |
---|---|---|
committer | Yang Tse <yangsita@gmail.com> | 2010-02-23 18:46:27 +0000 |
commit | 78414c0f3a4f7185323f13f04c8a1d5b68102b26 (patch) | |
tree | ce768fd7c1f73183a7b252cff1be63b881af9e98 /ares_expand_string.c | |
parent | 157d68729f5ff4c9eb2f0d5d1fbf8d09cda4b378 (diff) | |
download | c-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.c | 18 |
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; } |