[SCM] Samba Shared Repository - branch master updated - release-4-0-0alpha8-1157-g5359e39

Volker Lendecke vlendec at samba.org
Mon Aug 24 08:17:47 MDT 2009


The branch, master has been updated
       via  5359e397ff190c35414f6961be61a5110e237dd5 (commit)
      from  b1ee4c14d49aa2dc0df90694d7403620951de137 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit 5359e397ff190c35414f6961be61a5110e237dd5
Author: Olaf Flebbe <flebbe at nix.science-computing.de>
Date:   Mon Aug 17 17:31:01 2009 +0200

    make smbcontrol smbd ping work proper checking for arguments handle short pid_t correctly

-----------------------------------------------------------------------

Summary of changes:
 source3/lib/util.c         |   22 ++++++++++++++++------
 source3/utils/smbcontrol.c |   13 +++++--------
 2 files changed, 21 insertions(+), 14 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source3/lib/util.c b/source3/lib/util.c
index 835e4c0..74b7921 100644
--- a/source3/lib/util.c
+++ b/source3/lib/util.c
@@ -2692,14 +2692,15 @@ bool procid_is_me(const struct server_id *pid)
 
 struct server_id interpret_pid(const char *pid_string)
 {
-#ifdef CLUSTER_SUPPORT
-	unsigned int vnn, pid;
 	struct server_id result;
-	if (sscanf(pid_string, "%u:%u", &vnn, &pid) == 2) {
+	int pid;
+#ifdef CLUSTER_SUPPORT
+	unsigned int vnn;
+	if (sscanf(pid_string, "%u:%d", &vnn, &pid) == 2) {
 		result.vnn = vnn;
 		result.pid = pid;
 	}
-	else if (sscanf(pid_string, "%u", &pid) == 1) {
+	else if (sscanf(pid_string, "%d", &pid) == 1) {
 		result.vnn = get_my_vnn();
 		result.pid = pid;
 	}
@@ -2707,10 +2708,19 @@ struct server_id interpret_pid(const char *pid_string)
 		result.vnn = NONCLUSTER_VNN;
 		result.pid = -1;
 	}
-	return result;
 #else
-	return pid_to_procid(atoi(pid_string));
+	if (sscanf(pid_string, "%d", &pid) != 1) {
+		result.pid = -1;
+	} else {
+		result.pid = pid;
+	}
 #endif
+	/* Assigning to result.pid may have overflowed
+	   Map negative pid to -1: i.e. error */
+	if (result.pid < 0) {
+		result.pid = -1;
+	}
+	return result;
 }
 
 char *procid_str(TALLOC_CTX *mem_ctx, const struct server_id *pid)
diff --git a/source3/utils/smbcontrol.c b/source3/utils/smbcontrol.c
index fc7d0aa..7fab6eb 100644
--- a/source3/utils/smbcontrol.c
+++ b/source3/utils/smbcontrol.c
@@ -1247,15 +1247,12 @@ static struct server_id parse_dest(const char *dest)
 		dest = "winbindd";
 	}
 
-	if (!(strequal(dest, "winbindd") || strequal(dest, "nmbd"))) {
-		/* Check for numeric pid number */
+	/* Check for numeric pid number */
+	result = interpret_pid(dest);
 
-		result = interpret_pid(dest);
-
-		/* Zero isn't valid if not smbd. */
-		if (result.pid && procid_valid(&result)) {
-			return result;
-		}
+	/* Zero isn't valid if not "all". */
+	if (result.pid && procid_valid(&result)) {
+		return result;
 	}
 
 	/* Look up other destinations in pidfile directory */


-- 
Samba Shared Repository


More information about the samba-cvs mailing list