From 3638a83657d9833816e579778394a40ae4178868 Mon Sep 17 00:00:00 2001 From: Robert Alm Date: Tue, 25 Nov 2014 13:28:11 +0100 Subject: 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 --- libc/dns/net/getaddrinfo.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/libc/dns/net/getaddrinfo.c b/libc/dns/net/getaddrinfo.c index 132a090..1ebd222 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, -- cgit v1.1