HEX
Server: Apache
System: Linux scp1.abinfocom.com 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User: confeduphaar (1010)
PHP: 8.1.33
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //usr/src/glibc/debian/patches/any/local-nss-upgrade.diff
# DP: This patch makes future upgrades easier. It resolves problems with
# DP: running daemons having NSS modules upgraded out from under them.

---
 nss/nsswitch.c |   17 ++++++++++++++---
 1 file changed, 14 insertions(+), 3 deletions(-)

--- a/nss/nsswitch.c
+++ b/nss/nsswitch.c
@@ -395,9 +395,20 @@
       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);
+	    }
 	}
 # ifdef USE_NSCD
       else if (is_nscd)