[PATCH] Problems with rpcclient -c "shutdown -r" on (Free)BSD

Rudolf Cejka cejkar at fit.vutbr.cz
Thu Nov 27 12:08:31 GMT 2003

Dear Samba team,
  I had a problem with Samba 2.2.8a with issuing commad
rpcclient -Uadministrator -c "shutdown -r" <host>
on FreeBSD and I have found that there is a problem with two calls to
getopt() with different arguments in rpcclient (one for cmd args for
rpcclient, the second for cmd args for shutdown procedure).

Since 4.4BSD Lite, there is external variable optreset, which has
to be used for reset of processing arguments in getopt(), so I have
made patch, which solves my problem on FreeBSD - and I did not check
it on any real OpenBSD nor NetBSD, but I expect that on these systems
would be the same problem (manual pages know about optreset on all
three systems).

Original smaba 2.2.8a on FreeBSD:

# rpcclient -Uadministrator -c "shutdown -r" <host>
cmd = shutdown -r
... and computer is incorrectly shutted down.

Samba 2.2.8a on FreeBSD with my patch:

# rpcclient -Uadministrator -c "shutdown -r" <host>
cmd = shutdown -r
... and computer is correctly rebooted

It would be great, if you incorporate this (or similar)
fix into next samba version, thanks.

--- source/rpcclient/cmd_reg.c.orig	Thu Nov 27 12:17:08 2003
+++ source/rpcclient/cmd_reg.c	Thu Nov 27 12:19:24 2003
@@ -900,6 +900,9 @@
 	extern char *optarg;
 	extern int optind;
+#if	defined(__FreeBSD__)
+	extern int optreset;
 	fstring msg;
 	uint32 timeout = 20;
@@ -907,7 +910,11 @@
 	int opt;
 	*msg = 0;
+#if	defined(__FreeBSD__)
+	optreset = optind = 1;
 	optind = 0; /* TODO: test if this hack works on other systems too --simo */
 	while ((opt = getopt(argc, argv, "m:t:rf")) != EOF)

Rudolf Cejka <cejkar at fit.vutbr.cz> http://www.fit.vutbr.cz/~cejkar
Brno University of Technology, Faculty of Information Technology
Bozetechova 2, 612 66  Brno, Czech Republic

More information about the samba-technical mailing list