diff options
author | Andreas Schneider <asn@samba.org> | 2012-09-25 14:28:22 +0200 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2012-09-26 16:28:44 +0200 |
commit | 50d324b7e070de4672eff3fb6231923e6dca807a (patch) | |
tree | 57ecdfa45c25164db45ce133aeddd9451dd5c213 /source3/smbd | |
parent | 968da5f890a978f482f56f9eaff0c56a0d52980c (diff) | |
download | samba-50d324b7e070de4672eff3fb6231923e6dca807a.tar.gz samba-50d324b7e070de4672eff3fb6231923e6dca807a.tar.bz2 samba-50d324b7e070de4672eff3fb6231923e6dca807a.zip |
s3-smbd: Don't segfault if user specified ports out for range.
Autobuild-User(master): Andreas Schneider <asn@cryptomilk.org>
Autobuild-Date(master): Wed Sep 26 16:28:44 CEST 2012 on sn-devel-104
Diffstat (limited to 'source3/smbd')
-rw-r--r-- | source3/smbd/server.c | 16 |
1 files changed, 9 insertions, 7 deletions
diff --git a/source3/smbd/server.c b/source3/smbd/server.c index 15762d84e9..90bbb62ef7 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -752,6 +752,15 @@ static bool open_sockets_smbd(struct smbd_parent_context *parent, ports = (const char **)str_list_make_v3(talloc_tos(), smb_ports, NULL); } + for (j = 0; ports && ports[j]; j++) { + unsigned port = atoi(ports[j]); + + if (port == 0 || port > 0xffff) { + exit_server_cleanly("Invalid port in the config or on " + "the commandline specified!"); + } + } + if (lp_interfaces() && lp_bind_interfaces_only()) { /* We have been given an interfaces line, and been told to only bind to those interfaces. Create a @@ -772,9 +781,6 @@ static bool open_sockets_smbd(struct smbd_parent_context *parent, for (j = 0; ports && ports[j]; j++) { unsigned port = atoi(ports[j]); - if (port == 0 || port > 0xffff) { - continue; - } /* Keep the first port for mDNS service * registration. @@ -810,11 +816,7 @@ static bool open_sockets_smbd(struct smbd_parent_context *parent, next_token_talloc(talloc_tos(), &sock_ptr, &sock_tok, " \t,"); ) { for (j = 0; ports && ports[j]; j++) { struct sockaddr_storage ss; - unsigned port = atoi(ports[j]); - if (port == 0 || port > 0xffff) { - continue; - } /* Keep the first port for mDNS service * registration. |