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
This commit is contained in:
Robert Alm 2014-11-25 13:28:11 +01:00 committed by Elliott Hughes
parent 4614032705
commit 3638a83657

View 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,