summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Metzmacher <metze@samba.org>2007-08-21 14:22:16 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:30:09 -0500
commit2e498b48bbfb127b33d2e84ba87c7d9456c42558 (patch)
tree1edac8555c436d90a0d4a009aaede9bfc262def6
parent96567fa3ea92e5447b66a23514df392f1f7d353c (diff)
downloadsamba-2e498b48bbfb127b33d2e84ba87c7d9456c42558.tar.gz
samba-2e498b48bbfb127b33d2e84ba87c7d9456c42558.tar.bz2
samba-2e498b48bbfb127b33d2e84ba87c7d9456c42558.zip
r24599: patch from Karolin Seeger <ks@sernet.de>:
smbd, nmbd and winbindd can be started with invalid options currently. The first patch attached would be a possible solution. It contains an exit if an invalid option has been used. The main problem is, that existing setups with wrong options or missing arguments in start scripts will break (which is the right behaviour from my point of view). metze (This used to be commit 8532e3182ab44d4ac84823e9798293f156192aaf)
-rw-r--r--source3/nmbd/nmbd.c10
-rw-r--r--source3/nsswitch/winbindd.c14
-rw-r--r--source3/smbd/server.c5
3 files changed, 23 insertions, 6 deletions
diff --git a/source3/nmbd/nmbd.c b/source3/nmbd/nmbd.c
index b14e5a0b61..4f1dd93cae 100644
--- a/source3/nmbd/nmbd.c
+++ b/source3/nmbd/nmbd.c
@@ -652,6 +652,7 @@ static BOOL open_sockets(enum smb_server_mode server_mode, int port)
BOOL no_process_group = False;
BOOL log_stdout = False;
enum smb_server_mode server_mode = SERVER_MODE_DAEMON;
+ int opt;
struct poptOption long_options[] = {
POPT_AUTOHELP
@@ -674,7 +675,14 @@ static BOOL open_sockets(enum smb_server_mode server_mode, int port)
global_nmb_port = NMB_PORT;
pc = poptGetContext("nmbd", argc, argv, long_options, 0);
- while (poptGetNextOpt(pc) != -1) {};
+ while ((opt = poptGetNextOpt(pc)) != -1) {
+ switch (opt) {
+ default:
+ d_fprintf(stderr, "\nInvalid option %s: %s\n",
+ poptBadOption(pc, 0), poptStrerror(opt));
+ exit(1);
+ }
+ };
poptFreeContext(pc);
global_in_nmbd = True;
diff --git a/source3/nsswitch/winbindd.c b/source3/nsswitch/winbindd.c
index 5af5a789ad..f1283c5a83 100644
--- a/source3/nsswitch/winbindd.c
+++ b/source3/nsswitch/winbindd.c
@@ -1012,10 +1012,16 @@ int main(int argc, char **argv, char **envp)
/* Initialise samba/rpc client stuff */
- pc = poptGetContext("winbindd", argc, (const char **)argv, long_options,
- POPT_CONTEXT_KEEP_FIRST);
-
- while ((opt = poptGetNextOpt(pc)) != -1) {}
+ pc = poptGetContext("winbindd", argc, (const char **)argv, long_options, 0);
+
+ while ((opt = poptGetNextOpt(pc)) != -1) {
+ switch (opt) {
+ default:
+ d_fprintf(stderr, "\nInvalid option %s: %s\n",
+ poptBadOption(pc, 0), poptStrerror(opt));
+ exit(1);
+ }
+ }
if (server_mode == SERVER_MODE_INTERACTIVE) {
log_stdout = True;
diff --git a/source3/smbd/server.c b/source3/smbd/server.c
index 491482eea6..3bb60058ac 100644
--- a/source3/smbd/server.c
+++ b/source3/smbd/server.c
@@ -855,7 +855,10 @@ extern void build_options(BOOL screen);
case 'b':
build_options(True); /* Display output to screen as well as debug */
exit(0);
- break;
+ default:
+ d_fprintf(stderr, "\nInvalid option %s: %s\n",
+ poptBadOption(pc, 0), poptStrerror(opt));
+ exit(1);
}
}