From: Robert Alm Date: Tue, 25 Nov 2014 12:28:11 +0000 (+0100) Subject: Add error-check when mapping socket to fd X-Git-Tag: android-x86-7.1-r1~757^2~108^2~207^2 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=3638a83657d9833816e579778394a40ae4178868;p=android-x86%2Fbionic.git Add error-check when mapping socket to fd The call to fdopen can fail in several ways. The fprintf on the next line will then dereference a NULL-pointer FILE*. Added a NULL-check, closed the socket, returned system error and added a comment about it. Change-Id: I7a6b26aa3c79452b1fdd76af12dfa75da88cbad7 --- diff --git a/libc/dns/net/getaddrinfo.c b/libc/dns/net/getaddrinfo.c index 132a090d7..1ebd222fe 100644 --- a/libc/dns/net/getaddrinfo.c +++ b/libc/dns/net/getaddrinfo.c @@ -463,6 +463,15 @@ android_getaddrinfo_proxy( // Send the request. proxy = fdopen(sock, "r+"); + if (proxy == NULL) { + // Failed to map sock to FILE*. Check errno for the cause. + // @sonymobile.com saw failures in automated testing, but + // couldn't reproduce it for debugging. + // Fail with EAI_SYSTEM and let callers handle the failure. + close(sock); + return EAI_SYSTEM; + } + if (fprintf(proxy, "getaddrinfo %s %s %d %d %d %d %u", hostname == NULL ? "^" : hostname, servname == NULL ? "^" : servname,