OSDN Git Service

Add error-check when mapping socket to fd
authorRobert Alm <robert2.alm@sonymobile.com>
Tue, 25 Nov 2014 12:28:11 +0000 (13:28 +0100)
committerElliott Hughes <enh@google.com>
Thu, 27 Nov 2014 19:01:50 +0000 (11:01 -0800)
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

libc/dns/net/getaddrinfo.c

index 132a090..1ebd222 100644 (file)
@@ -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,