[PATCH] make smbcontrol smbd ping work proper checking for arguments
Olaf Flebbe
flebbe at nix.science-computing.de
Mon Aug 17 09:31:01 MDT 2009
---
source3/lib/util.c | 17 +++++++++++------
source3/utils/smbcontrol.c | 13 +++++--------
2 files changed, 16 insertions(+), 14 deletions(-)
diff --git a/source3/lib/util.c b/source3/lib/util.c
index 61a73e6..ac2cbac 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) {
+#ifdef CLUSTER_SUPPORT
+ pid_t pid;
+ 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,14 @@ 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", &result.pid) != 1)
+ result.pid = -1;
#endif
+ /* 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 */
--
1.6.2.4
--------------020101050307010808030007
Content-Type: text/x-vcard; charset=utf-8;
name="o_flebbe.vcf"
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
filename="o_flebbe.vcf"
begin:vcard
fn:Olaf Flebbe
n:Flebbe;Olaf
org;quoted-printable:science+computing ag;IT Services T=C3=BCbingen
adr;quoted-printable:;;Hagellocher Weg 73;T=C3=BCbingen;;72070;Germany
email;internet:o.flebbe at science-computing.de
title:Chief Software Architect
tel;work:+49 7071 9457 254
tel;fax:+49 7071 9457 511
x-mozilla-html:FALSE
url:http://www.science-computing.de
version:2.1
end:vcard
--------------020101050307010808030007--
More information about the samba-technical
mailing list