2012-10-09 04:29:33 +00:00
|
|
|
--- glibc-2.16.90-97bc38d7/nss/nsswitch.c.orig 2012-09-26 15:02:37.919143036 -0300
|
|
|
|
+++ glibc-2.16.90-97bc38d7/nss/nsswitch.c 2012-09-26 15:03:35.790145004 -0300
|
|
|
|
@@ -356,9 +356,20 @@ nss_load_library (service_user *ni)
|
2012-02-01 17:02:55 +04:00
|
|
|
ni->library->lib_handle = __libc_dlopen (shlib_name);
|
|
|
|
if (ni->library->lib_handle == NULL)
|
|
|
|
{
|
|
|
|
- /* Failed to load the library. */
|
|
|
|
- ni->library->lib_handle = (void *) -1l;
|
|
|
|
- __set_errno (saved_errno);
|
|
|
|
+ /* Failed to load the library. Try a fallback. */
|
|
|
|
+ int n = __snprintf(shlib_name, shlen, "libnss_%s.so.%d.%d",
|
|
|
|
+ ni->library->name, __GLIBC__, __GLIBC_MINOR__);
|
|
|
|
+ if (n >= shlen)
|
|
|
|
+ ni->library->lib_handle = NULL;
|
|
|
|
+ else
|
|
|
|
+ ni->library->lib_handle = __libc_dlopen (shlib_name);
|
|
|
|
+
|
|
|
|
+ if (ni->library->lib_handle == NULL)
|
|
|
|
+ {
|
|
|
|
+ /* Ok, really fail now. */
|
|
|
|
+ ni->library->lib_handle = (void *) -1l;
|
|
|
|
+ __set_errno (saved_errno);
|
|
|
|
+ }
|
|
|
|
}
|
2012-10-09 04:29:33 +00:00
|
|
|
# ifdef USE_NSCD
|
2012-02-01 17:02:55 +04:00
|
|
|
else if (is_nscd)
|