From 8841474da0c2d4015eb562564b856f77dce6358d Mon Sep 17 00:00:00 2001
From: Morris Jette <jette@schedmd.com>
Date: Wed, 21 Dec 2011 09:15:46 -0800
Subject: [PATCH] Revision to pam libslurm naming from Gennaro Oliva

---
 contribs/pam/pam_slurm.c | 31 ++++++++++++++++++++++---------
 1 file changed, 22 insertions(+), 9 deletions(-)

diff --git a/contribs/pam/pam_slurm.c b/contribs/pam/pam_slurm.c
index a5de3579a61..62b7615065a 100644
--- a/contribs/pam/pam_slurm.c
+++ b/contribs/pam/pam_slurm.c
@@ -360,7 +360,7 @@ _send_denial_msg(pam_handle_t *pamh, struct _options *opts,
  */
 extern void libpam_slurm_init (void)
 {
-	char current_major[64];
+	char libslurmname[64];
 
 	if (slurm_h)
 		return;
@@ -368,14 +368,27 @@ extern void libpam_slurm_init (void)
 	/* First try to use the same libslurm version ("libslurm.so.24.0.0"),
 	 * Second try to match the major version number ("libslurm.so.24"),
 	 * Otherwise use "libslurm.so" */
-	snprintf(current_major, sizeof(current_major), "libslurm.so.%d",
-		 SLURM_API_CURRENT);
-	if (!(slurm_h = dlopen("libslurm.so." SLURM_VERSION_STRING,
-					      RTLD_NOW|RTLD_GLOBAL)) &&
-	    !(slurm_h = dlopen(current_major, RTLD_NOW|RTLD_GLOBAL)) &&
-	    !(slurm_h = dlopen("libslurm.so", RTLD_NOW|RTLD_GLOBAL))) {
-		_log_msg (LOG_ERR, "Unable to dlopen libslurm: %s\n",
-			  dlerror ());
+	if (snprintf(libslurmname, sizeof(libslurmname), 
+			"libslurm.so.%d.%d.%d", SLURM_API_CURRENT,
+			SLURM_API_REVISION, SLURM_API_AGE) >=
+			sizeof(libslurmname) ) {
+		_log_msg (LOG_ERR, "Unable to write libslurmname\n");
+	} else if (!(slurm_h = dlopen(libslurmname, RTLD_NOW|RTLD_GLOBAL))) {
+		_log_msg (LOG_INFO, "Unable to dlopen %s: %s\n",
+			libslurmname, dlerror ());
+	}
+
+	if (snprintf(libslurmname, sizeof(libslurmname), "libslurm.so.%d",
+			SLURM_API_CURRENT) >= sizeof(libslurmname) ) {
+		_log_msg (LOG_ERR, "Unable to write libslurmname\n");
+	} else if (!(slurm_h = dlopen(libslurmname, RTLD_NOW|RTLD_GLOBAL))) {
+		_log_msg (LOG_INFO, "Unable to dlopen %s: %s\n",
+			libslurmname, dlerror ());
+	}
+
+	if (!(slurm_h = dlopen("libslurm.so", RTLD_NOW|RTLD_GLOBAL))) {
+		_log_msg (LOG_ERR, "Unable to dlopen libslurm.so: %s\n",
+ 			  dlerror ());
 	}
 
 	return;
-- 
GitLab