From 78414c0f3a4f7185323f13f04c8a1d5b68102b26 Mon Sep 17 00:00:00 2001 From: Yang Tse Date: Tue, 23 Feb 2010 18:46:27 +0000 Subject: [PATCH] fix compiler warning --- ares_expand_name.c | 12 ++++++++---- ares_expand_string.c | 18 +++++++++++------- 2 files changed, 19 insertions(+), 11 deletions(-) diff --git a/ares_expand_name.c b/ares_expand_name.c index 5a48b4d..fd3220d 100644 --- a/ares_expand_name.c +++ b/ares_expand_name.c @@ -69,17 +69,21 @@ int ares_expand_name(const unsigned char *encoded, const unsigned char *abuf, int len, indir = 0; char *q; const unsigned char *p; + union { + ssize_t sig; + size_t uns; + } nlen; - len = name_length(encoded, abuf, alen); - if (len < 0) + nlen.sig = name_length(encoded, abuf, alen); + if (nlen.sig < 0) return ARES_EBADNAME; - *s = malloc(((size_t)len) + 1); + *s = malloc(nlen.uns + 1); if (!*s) return ARES_ENOMEM; q = *s; - if (len == 0) { + if (nlen.uns == 0) { /* RFC2181 says this should be ".": the root of the DNS tree. * Since this function strips trailing dots though, it becomes "" */ 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; } -- 2.7.4