Allow dlopen("egl/blah.so").

NVIDIA binary blobs construct strings to pass to dlopen(3) that
contain '/' but require that we fall back to LD_LIBRARY_PATH.

Change-Id: Iad831899986baace6962f4b335eeb288250a1e22
This commit is contained in:
Elliott Hughes 2012-11-01 22:59:19 -07:00
parent e3c7b5192e
commit 6971fe4ca5

View File

@ -634,7 +634,11 @@ static int open_library(const char* name) {
// If the name contains a slash, we should attempt to open it directly and not search the paths.
if (strchr(name, '/') != NULL) {
return TEMP_FAILURE_RETRY(open(name, O_RDONLY | O_CLOEXEC));
int fd = TEMP_FAILURE_RETRY(open(name, O_RDONLY | O_CLOEXEC));
if (fd != -1) {
return fd;
}
// ...but nvidia binary blobs (at least) rely on this behavior, so fall through for now.
}
// Otherwise we try LD_LIBRARY_PATH first, and fall back to the built-in well known paths.