[SCM] Samba Shared Repository - branch v3-4-test updated - release-4-0-0alpha7-1229-g86c1dbb
Karolin Seeger
kseeger at samba.org
Mon Aug 31 01:46:14 MDT 2009
The branch, v3-4-test has been updated
via 86c1dbb473323ef9480cb57584be9e02363e80af (commit)
from 6fb3222504a0d2b42cd9292f9e11b2ff246d5c19 (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-4-test
- Log -----------------------------------------------------------------
commit 86c1dbb473323ef9480cb57584be9e02363e80af
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
Fixes bug #6655.
(cherry picked from commit 5359e397ff190c35414f6961be61a5110e237dd5)
-----------------------------------------------------------------------
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 61a73e6..3d7336f 100644
--- a/source3/lib/util.c
+++ b/source3/lib/util.c
@@ -2743,14 +2743,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;
}
@@ -2758,10 +2759,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