diff options
author | Jeremy Allison <jra@samba.org> | 2007-11-02 14:23:10 -0700 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2007-11-02 14:23:10 -0700 |
commit | 753983d7e78b6e9be9c3b0f636b88a24d765ef4c (patch) | |
tree | 94939bf92008b8cb83db4ee0831cb937a9150ddd /source3/lib | |
parent | a45c91ec6aff3ff40462258f4527fe4a57991955 (diff) | |
download | samba-753983d7e78b6e9be9c3b0f636b88a24d765ef4c.tar.gz samba-753983d7e78b6e9be9c3b0f636b88a24d765ef4c.tar.bz2 samba-753983d7e78b6e9be9c3b0f636b88a24d765ef4c.zip |
Fix the snprintf checks, and fix a typo in pointer indirection.
These fixes are needed for a working getaddrinfo etc. replacement.
Fixes from Wayne Davison <wayned@samba.org> from rsync.
Jeremy.
(This used to be commit 494bf6293bedbda4b10aa2eae452377b8130cd01)
Diffstat (limited to 'source3/lib')
-rw-r--r-- | source3/lib/replace/getaddrinfo.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/source3/lib/replace/getaddrinfo.c b/source3/lib/replace/getaddrinfo.c index 063bacd026..c5cd52be93 100644 --- a/source3/lib/replace/getaddrinfo.c +++ b/source3/lib/replace/getaddrinfo.c @@ -222,7 +222,7 @@ static int getaddr_info_name(const char *node, } for(pptr = hp->h_addr_list; *pptr; pptr++) { - struct in_addr ip = *(struct in_addr *)pptr; + struct in_addr ip = *(struct in_addr *)*pptr; struct addrinfo *ai = alloc_entry(hints, ip, port); if (!ai) { @@ -407,7 +407,7 @@ static int gethostnameinfo(const struct sockaddr *sa, if (ret == 0) { /* Name looked up successfully. */ ret = snprintf(node, nodelen, "%s", hp->h_name); - if (ret == -1 || ret > nodelen) { + if (ret < 0 || (size_t)ret >= nodelen) { return EAI_MEMORY; } if (flags & NI_NOFQDN) { @@ -428,7 +428,7 @@ static int gethostnameinfo(const struct sockaddr *sa, } p = inet_ntoa(((struct sockaddr_in *)sa)->sin_addr); ret = snprintf(node, nodelen, "%s", p); - if (ret == -1 || ret > nodelen) { + if (ret < 0 || (size_t)ret >= nodelen) { return EAI_MEMORY; } return 0; @@ -449,7 +449,7 @@ static int getservicenameinfo(const struct sockaddr *sa, if (se && se->s_name) { /* Service name looked up successfully. */ ret = snprintf(service, servicelen, "%s", se->s_name); - if (ret == -1 || ret > servicelen) { + if (ret < 0 || (size_t)ret >= servicelen) { return EAI_MEMORY; } return 0; @@ -457,7 +457,7 @@ static int getservicenameinfo(const struct sockaddr *sa, /* Otherwise just fall into the numeric service code... */ } ret = snprintf(service, servicelen, "%d", port); - if (ret == -1 || ret > servicelen) { + if (ret < 0 || (size_t)ret >= servicelen) { return EAI_MEMORY; } return 0; |