[X2Go-Commits] libpam-x2go.git - build-main (branch) updated: 829831debae6d31f199056444739f90b0f9e996d

X2Go dev team git-admin at x2go.org
Sat Apr 27 13:45:31 CEST 2013


The branch, build-main has been updated
       via  829831debae6d31f199056444739f90b0f9e996d (commit)
      from  6e7601e14089a79aec2accfa800c259049449b8e (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
-----------------------------------------------------------------------

Summary of changes:
 src/pam-freerdp.c |   43 +++++++++++++++++++------------------------
 1 file changed, 19 insertions(+), 24 deletions(-)

The diff of changes is:
diff --git a/src/pam-freerdp.c b/src/pam-freerdp.c
index f635162..f234ca9 100644
--- a/src/pam-freerdp.c
+++ b/src/pam-freerdp.c
@@ -49,14 +49,14 @@ get_item (pam_handle_t * pamh, int type)
 	if (type != PAM_TYPE_DOMAIN) {
 		char * value = NULL;
 		if (pam_get_item(pamh, type, (const void **)&value) == PAM_SUCCESS && value != NULL) {
-			return strdup(value);
+			return value;
 		}
 		if (type == PAM_AUTHTOK && global_password != NULL) {
-			return strdup(global_password);
+			return global_password;
 		}
 	} else {
 		if (global_domain != NULL) {
-			return strdup(global_domain);
+			return global_domain;
 		}
 	}
 	/* Now we need to prompt */
@@ -99,13 +99,13 @@ get_item (pam_handle_t * pamh, int type)
 		return NULL;
 	}
 
-	char * retval = responses->resp;
+	char * promptval = responses->resp;
 	free(responses);
 
 	if (type == PAM_RHOST) {
-		char * subloc = strstr(retval, "://");
+		char * subloc = strstr(promptval, "://");
 		if (subloc != NULL) {
-			char * original = retval;
+			char * original = promptval;
 			char * newish = subloc + strlen("://");
 			char * endslash = strstr(newish, "/");
 
@@ -113,19 +113,23 @@ get_item (pam_handle_t * pamh, int type)
 				endslash[0] = '\0';
 			}
 
-			retval = strdup(newish);
+			promptval = strdup(newish);
 			free(original);
 		}
 	}
 
-	if (retval != NULL) { /* Can't believe it really would be at this point, but let's be sure */
+	char * retval = NULL;
+	if (promptval != NULL) { /* Can't believe it really would be at this point, but let's be sure */
 		if (type != PAM_TYPE_DOMAIN) {
-			pam_set_item(pamh, type, (const void *)retval);
+			pam_set_item(pamh, type, (const void *)promptval);
+			/* We're returning the value saved by PAM so we can clear promptval */
+			pam_get_item(pamh, type, (const void **)&retval);
 		} else {
 			if (global_domain != NULL) {
 				free(global_domain);
 			}
-			global_domain = strdup(retval);
+			global_domain = strdup(promptval);
+			retval = global_domain;
 		}
 		if (type == PAM_AUTHTOK) {
 			if (global_password != NULL) {
@@ -133,9 +137,12 @@ get_item (pam_handle_t * pamh, int type)
 				munlock(global_password, strlen(global_password));
 				free(global_password);
 			}
-			global_password = strdup(retval);
+			global_password = strdup(promptval);
 			mlock(global_password, strlen(global_password));
+			retval = global_password;
 		}
+
+		free(promptval);
 	}
 
 	return retval;
@@ -226,14 +233,8 @@ pam_sm_authenticate (pam_handle_t *pamh, int flags, int argc, const char **argv)
 	}
 	}
 
-	/* Free Memory and return our status */
+	/* Return our status */
 done:
-	if (username != NULL) { free(username); }
-	if (password != NULL) { free(password); }
-	if (ruser != NULL)    { free(ruser); }
-	if (rhost != NULL)    { free(rhost); }
-	if (rdomain != NULL)  { free(rdomain); }
-
 	return retval;
 }
 
@@ -347,12 +348,6 @@ pam_sm_open_session (pam_handle_t *pamh, int flags, int argc, const char ** argv
 	}
 
 done:
-	if (username != NULL) { free(username); }
-	if (password != NULL) { free(password); }
-	if (ruser != NULL)    { free(ruser); }
-	if (rhost != NULL)    { free(rhost); }
-	if (rdomain != NULL)  { free(rdomain); }
-
     return retval;
 }
 


hooks/post-receive
-- 
libpam-x2go.git (Remote login session via X2Go (PAM module))

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "libpam-x2go.git" (Remote login session via X2Go (PAM module)).




More information about the x2go-commits mailing list