Bump port version to 3.4.14, closing security issues CVE-2011-0719,
CVE-2011-2522 and CVE-2011-2694 Security: CVE-2011-0719 Security: CVE-2011-2522 Security: CVE-2011-2694
This commit is contained in:
parent
03280f5b5d
commit
dfdf9a6052
Notes:
svn2git
2021-03-31 03:12:20 +00:00
svn path=/head/; revision=278511
4 changed files with 219 additions and 167 deletions
|
@ -6,8 +6,8 @@
|
|||
#
|
||||
|
||||
PORTNAME= samba34
|
||||
PORTVERSION= 3.4.9
|
||||
PORTREVISION?= 2
|
||||
PORTVERSION= 3.4.14
|
||||
PORTREVISION?= 0
|
||||
CATEGORIES?= net
|
||||
MASTER_SITES= ${MASTER_SITE_SAMBA}
|
||||
MASTER_SITE_SUBDIR= . old-versions rc pre
|
||||
|
@ -16,7 +16,7 @@ DISTNAME= ${PORTNAME:S|34$||}-${PORTVERSION:S|.p|pre|:S|.r|rc|:S|.t|tp|:S|.a|al
|
|||
MAINTAINER?= timur@FreeBSD.org
|
||||
COMMENT?= A free SMB and CIFS client and server for UNIX
|
||||
|
||||
CONFLICTS?= ja-samba-[235].* samba-[235].* sharity-light-1.* tdb-1.*
|
||||
CONFLICTS?= samba3[2356]-3.*
|
||||
# Additional patches from Sernet.de
|
||||
PATCH_STRIP= -p1
|
||||
EXTRA_PATCHES= ${PATCHDIR}/sernet.patch
|
||||
|
@ -136,7 +136,7 @@ CONFIGURE_ARGS+= --with-pam --with-readline=/usr \
|
|||
--without-libsmbclient \
|
||||
--without-libaddns \
|
||||
--without-libnetapi \
|
||||
--without-libsmbsharemodes
|
||||
--without-libsmbsharemodes --disable-pie
|
||||
|
||||
.if !defined(WITHOUT_LDAP)
|
||||
SAMBA_WANT_LDAP= yes
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
SHA256 (samba-3.4.9.tar.gz) = 593952940f6c460a8486906aff55c56c8168c0f74d2d016bb55d080259048b8e
|
||||
SIZE (samba-3.4.9.tar.gz) = 34850281
|
||||
SHA256 (samba-3.4.14.tar.gz) = 0c44883213859c7e45c89471194f8cab04917b1610213df5df0986913b1b99be
|
||||
SIZE (samba-3.4.14.tar.gz) = 34803817
|
||||
|
|
|
@ -28,8 +28,43 @@
|
|||
|
||||
name="samba"
|
||||
rcvar=$(set_rcvar)
|
||||
|
||||
set_rcvar ${rcvar} "NO" "Samba service" > /dev/null
|
||||
# Defaults
|
||||
eval ${rcvar}=\${${rcvar}:=NO}
|
||||
samba_config_default="%%SAMBA_CONFDIR%%/%%SAMBA_CONFIG%%"
|
||||
samba_config=${samba_config="${samba_config_default}"}
|
||||
command_args=${samba_config:+-s "${samba_config}"}
|
||||
# Fetch parameters from configuration file
|
||||
testparm_command="%%PREFIX%%/bin/testparm"
|
||||
smbcontrol_command="%%PREFIX%%/bin/smbcontrol"
|
||||
samba_parm="${testparm_command} -s -v --parameter-name"
|
||||
samba_idmap=$(${samba_parm} 'idmap uid' "${samba_config}" 2>/dev/null)
|
||||
samba_lockdir=$(${samba_parm} 'lock directory' "${samba_config}" 2>/dev/null)
|
||||
# Load configuration
|
||||
load_rc_config "${name}"
|
||||
# Setup dependent variables
|
||||
if [ -n "${rcvar}" ] && checkyesno "${rcvar}"; then
|
||||
nmbd_enable=${nmbd_enable=YES}
|
||||
smbd_enable=${smbd_enable=YES}
|
||||
%%WINBIND%% # Check that winbindd is actually configured
|
||||
%%WINBIND%% if [ -n "${samba_idmap}" ]; then
|
||||
%%WINBIND%% winbindd_enable=${winbindd_enable=YES}
|
||||
%%WINBIND%% fi
|
||||
fi
|
||||
# XXX: Hack to enable check of the dependent variables
|
||||
eval real_${rcvar}="\${${rcvar}:=NO}" ${rcvar}=YES
|
||||
# nmbd
|
||||
nmbd_enable=${nmbd_enable:=NO}
|
||||
nmbd_flags=${nmbd_flags="-D"}
|
||||
set_rcvar nmbd_enable "NO" "nmb daemon" >/dev/null
|
||||
# smbd
|
||||
smbd_enable=${smbd_enable:=NO}
|
||||
smbd_flags=${smbd_flags="-D"}
|
||||
set_rcvar smbd_enable "NO" "smb daemon" >/dev/null
|
||||
%%WINBIND%%# winbindd
|
||||
%%WINBIND%%winbindd_enable=${winbindd_enable:=NO}
|
||||
%%WINBIND%%winbindd_flags=${winbindd_flags=''}
|
||||
%%WINBIND%%set_rcvar winbindd_enable "NO" "winbind daemon" >/dev/null
|
||||
# Custom commands
|
||||
extra_commands="reload status"
|
||||
start_precmd="samba_start_precmd"
|
||||
|
@ -40,40 +75,13 @@ restart_precmd="samba_checkconfig"
|
|||
reload_precmd="samba_checkconfig"
|
||||
reload_cmd="samba_reload_cmd"
|
||||
rcvar_cmd="samba_rcvar_cmd"
|
||||
# Defaults
|
||||
samba_enable=${samba_enable:=NO}
|
||||
samba_config_default="%%SAMBA_CONFDIR%%/%%SAMBA_CONFIG%%"
|
||||
samba_config=${samba_config="${samba_config_default}"}
|
||||
command_args=${samba_config:+-s "${samba_config}"}
|
||||
testparm_command="%%PREFIX%%/bin/testparm"
|
||||
smbcontrol_command="%%PREFIX%%/bin/smbcontrol"
|
||||
# Fetch parameters from configuration file
|
||||
samba_parm="${testparm_command} -s -v --parameter-name"
|
||||
%%WINBIND%%samba_idmap=$(${samba_parm} 'idmap uid' "${samba_config}" 2>/dev/null)
|
||||
samba_lockdir=$(${samba_parm} 'lock directory' "${samba_config}" 2>/dev/null)
|
||||
# Setup dependent variables
|
||||
if [ -n "${rcvar}" ] && checkyesno "${rcvar}"; then
|
||||
nmbd_enable=${nmbd_enable=YES}
|
||||
smbd_enable=${smbd_enable=YES}
|
||||
%%WINBIND%% # Check that winbindd is actually configured
|
||||
%%WINBIND%% if [ -n "${samba_idmap}" ]; then
|
||||
%%WINBIND%% winbindd_enable=${winbindd_enable=YES}
|
||||
%%WINBIND%% fi
|
||||
fi
|
||||
# Defaults for dependent variables
|
||||
nmbd_enable=${nmbd_enable:=NO}
|
||||
nmbd_flags=${nmbd_flags="-D"}
|
||||
smbd_enable=${smbd_enable:=NO}
|
||||
smbd_flags=${smbd_flags="-D"}
|
||||
%%WINBIND%%winbindd_enable=${winbindd_enable:=NO}
|
||||
%%WINBIND%%winbindd_flags=${winbindd_flags=''}
|
||||
#
|
||||
samba_daemons="nmbd smbd"
|
||||
%%WINBIND%%samba_daemons="${samba_daemons} winbindd"
|
||||
# Hack to enable check of dependent variables
|
||||
eval real_${rcvar}="\${${rcvar}:=NO}" ${rcvar}=YES
|
||||
# Requirements
|
||||
required_files="${samba_config}"
|
||||
required_dirs="${samba_lockdir}"
|
||||
|
||||
samba_checkconfig() {
|
||||
echo -n "Performing sanity check on Samba configuration: "
|
||||
if ${testparm_command} -s ${samba_config:+"${samba_config}"} >/dev/null 2>&1; then
|
||||
|
@ -82,6 +90,7 @@ samba_checkconfig() {
|
|||
echo "FAILED"
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
samba_start_precmd() {
|
||||
|
@ -99,20 +108,13 @@ samba_start_precmd() {
|
|||
}
|
||||
|
||||
samba_rcvar_cmd() {
|
||||
local rcvar
|
||||
rcvar=$(set_rcvar ${name})
|
||||
eval ${rcvar}=\${real_${rcvar}}
|
||||
# Prevent recursive calling
|
||||
unset "${rc_arg}_cmd" "${rc_arg}_precmd" "${rc_arg}_postcmd"
|
||||
# Check master variable
|
||||
echo "# ${name}"
|
||||
if [ -n "${rcvar}" ]; then
|
||||
# Use original configured value
|
||||
if checkyesno "real_${rcvar}"; then
|
||||
echo "\$${rcvar}=YES"
|
||||
else
|
||||
echo "\$${rcvar}=NO"
|
||||
fi
|
||||
fi
|
||||
# Check dependent variables
|
||||
samba_cmd "${_rc_prefix}${rc_arg}" ${rc_extra_args}
|
||||
run_rc_command "${_rc_prefix}${rc_arg}" ${rc_extra_args}
|
||||
}
|
||||
|
||||
samba_reload_cmd() {
|
||||
|
@ -121,7 +123,7 @@ samba_reload_cmd() {
|
|||
unset "${rc_arg}_cmd" "${rc_arg}_precmd" "${rc_arg}_postcmd"
|
||||
# Apply to all daemons
|
||||
for name in ${samba_daemons}; do
|
||||
rcvar=$(set_rcvar)
|
||||
rcvar=$(set_rcvar ${name})
|
||||
command="%%PREFIX%%/sbin/${name}"
|
||||
pidfile="%%SAMBA_RUNDIR%%/${name}${pid_extra}.pid"
|
||||
# Daemon should be enabled and running
|
||||
|
@ -137,30 +139,30 @@ samba_reload_cmd() {
|
|||
}
|
||||
|
||||
samba_cmd() {
|
||||
local name rcvar command pidfile samba_daemons result _result
|
||||
local name rcvar rcvars v command pidfile samba_daemons result
|
||||
# Prevent recursive calling
|
||||
unset "${rc_arg}_cmd" "${rc_arg}_precmd" "${rc_arg}_postcmd"
|
||||
# Stop processes in the reverse to order
|
||||
# Stop processes in the reverse order
|
||||
if [ "${rc_arg}" = "stop" ] ; then
|
||||
samba_daemons=$(reverse_list ${samba_daemons})
|
||||
fi
|
||||
# Apply to all daemons
|
||||
# Assume success
|
||||
result=0
|
||||
# Apply to all daemons
|
||||
for name in ${samba_daemons}; do
|
||||
rcvar=$(set_rcvar)
|
||||
rcvar=$(set_rcvar ${name})
|
||||
# XXX
|
||||
rcvars=''; v=''
|
||||
command="%%PREFIX%%/sbin/${name}"
|
||||
pidfile="%%SAMBA_RUNDIR%%/${name}${pid_extra}.pid"
|
||||
# Daemon should be enabled and running
|
||||
if [ -n "${rcvar}" ] && checkyesno "${rcvar}"; then
|
||||
run_rc_command "${_rc_prefix}${rc_arg}" ${rc_extra_args}
|
||||
# Collect return values
|
||||
_result=$?
|
||||
if [ ${_result} != 0 ]; then
|
||||
result=${_result}
|
||||
fi
|
||||
# If any of the of the commands failed, take it as a total result
|
||||
result=$((${result} || $?))
|
||||
fi
|
||||
done
|
||||
return $result
|
||||
return ${result}
|
||||
}
|
||||
|
||||
run_rc_command "$1"
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
samba-3.4-check-bad-password-count.patch
|
||||
samba-3.4-net-trustdom-list-tidyup.patch
|
||||
samba3-3.4-honor-all-loopback-ips.patch
|
||||
samba3-3.4.12-nmbd-bind-explicit.patch
|
||||
samba3-3.4.4-fix-account-unlock.patch
|
||||
samba3-3.4.6-nmbd-bind-explicit.patch
|
||||
|
||||
source3/auth/auth_sam.c | 159 +++++++++++++++++++++++++++++++++---------
|
||||
source3/include/proto.h | 3 +
|
||||
|
@ -625,83 +625,7 @@ index 0ce495e..0511a28 100644
|
|||
}
|
||||
|
||||
/**
|
||||
From 179e63ae9aa93984ea3d237c1039460c5acf01a5 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Adam <obnox@samba.org>
|
||||
Date: Thu, 14 Jan 2010 14:24:35 +0100
|
||||
Subject: [PATCH] s3:auth: fix account unlock regression introduced with fix for bug #4347
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=utf-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
By an oversight, the patchset for #4347 made the unlocking of a locked
|
||||
account after the lockout duration ineffective.
|
||||
Thanks to Björn for finding this!
|
||||
|
||||
Michael
|
||||
---
|
||||
source3/auth/auth_sam.c | 12 +++++-------
|
||||
1 files changed, 5 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/source3/auth/auth_sam.c b/source3/auth/auth_sam.c
|
||||
index 1dd8fc9..01b2517 100644
|
||||
--- a/source3/auth/auth_sam.c
|
||||
+++ b/source3/auth/auth_sam.c
|
||||
@@ -369,7 +369,6 @@ static NTSTATUS check_sam_security(const struct auth_context *auth_context,
|
||||
DATA_BLOB user_sess_key = data_blob_null;
|
||||
DATA_BLOB lm_sess_key = data_blob_null;
|
||||
bool updated_autolock = False, updated_badpw = False;
|
||||
- uint32_t acct_ctrl;
|
||||
const char *username;
|
||||
const uint8_t *nt_pw;
|
||||
const uint8_t *lm_pw;
|
||||
@@ -399,22 +398,21 @@ static NTSTATUS check_sam_security(const struct auth_context *auth_context,
|
||||
return NT_STATUS_NO_SUCH_USER;
|
||||
}
|
||||
|
||||
- acct_ctrl = pdb_get_acct_ctrl(sampass);
|
||||
username = pdb_get_username(sampass);
|
||||
nt_pw = pdb_get_nt_passwd(sampass);
|
||||
lm_pw = pdb_get_lanman_passwd(sampass);
|
||||
|
||||
/* see if autolock flag needs to be updated */
|
||||
- if (acct_ctrl & ACB_NORMAL)
|
||||
+ if (pdb_get_acct_ctrl(sampass) & ACB_NORMAL)
|
||||
pdb_update_autolock_flag(sampass, &updated_autolock);
|
||||
/* Quit if the account was locked out. */
|
||||
- if (acct_ctrl & ACB_AUTOLOCK) {
|
||||
+ if (pdb_get_acct_ctrl(sampass) & ACB_AUTOLOCK) {
|
||||
DEBUG(3,("check_sam_security: Account for user %s was locked out.\n", username));
|
||||
return NT_STATUS_ACCOUNT_LOCKED_OUT;
|
||||
}
|
||||
|
||||
nt_status = sam_password_ok(auth_context, mem_ctx,
|
||||
- username, acct_ctrl, lm_pw, nt_pw,
|
||||
+ username, pdb_get_acct_ctrl(sampass), lm_pw, nt_pw,
|
||||
user_info, &user_sess_key, &lm_sess_key);
|
||||
|
||||
/* Notify passdb backend of login success/failure. If not
|
||||
@@ -426,7 +424,7 @@ static NTSTATUS check_sam_security(const struct auth_context *auth_context,
|
||||
bool increment_bad_pw_count = false;
|
||||
|
||||
if (NT_STATUS_EQUAL(nt_status,NT_STATUS_WRONG_PASSWORD) &&
|
||||
- acct_ctrl & ACB_NORMAL &&
|
||||
+ pdb_get_acct_ctrl(sampass) & ACB_NORMAL &&
|
||||
NT_STATUS_IS_OK(update_login_attempts_status))
|
||||
{
|
||||
increment_bad_pw_count =
|
||||
@@ -457,7 +455,7 @@ static NTSTATUS check_sam_security(const struct auth_context *auth_context,
|
||||
goto done;
|
||||
}
|
||||
|
||||
- if ((acct_ctrl & ACB_NORMAL) &&
|
||||
+ if ((pdb_get_acct_ctrl(sampass) & ACB_NORMAL) &&
|
||||
(pdb_get_bad_password_count(sampass) > 0)){
|
||||
pdb_set_bad_password_count(sampass, 0, PDB_CHANGED);
|
||||
pdb_set_bad_password_time(sampass, 0, PDB_CHANGED);
|
||||
--
|
||||
1.6.3.3
|
||||
|
||||
From 2ad43c8c290ebb070d793fc24925f7c1ceb8a438 Mon Sep 17 00:00:00 2001
|
||||
From 104c65054cb5e4c4b78f7e75a21a078d68d12bb8 Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Metzmacher <metze@samba.org>
|
||||
Date: Thu, 28 Jan 2010 11:04:05 +0100
|
||||
Subject: [PATCH 1/4] s3:nmbd: also listen explicit on the subnet broadcast addresses
|
||||
|
@ -718,9 +642,9 @@ metze
|
|||
source3/libsmb/namequery.c | 6 +-
|
||||
source3/libsmb/nmblib.c | 9 ++-
|
||||
source3/nmbd/nmbd.c | 5 +-
|
||||
source3/nmbd/nmbd_packets.c | 189 ++++++++++++++++++++++++++++--------------
|
||||
source3/nmbd/nmbd_subnetdb.c | 123 ++++++++++++++++++----------
|
||||
6 files changed, 222 insertions(+), 115 deletions(-)
|
||||
source3/nmbd/nmbd_packets.c | 197 ++++++++++++++++++++++++++++--------------
|
||||
source3/nmbd/nmbd_subnetdb.c | 123 +++++++++++++++++---------
|
||||
6 files changed, 230 insertions(+), 115 deletions(-)
|
||||
|
||||
diff --git a/source3/include/nameserv.h b/source3/include/nameserv.h
|
||||
index 496d87e..53ffd6f 100644
|
||||
|
@ -771,7 +695,7 @@ index 50fb9f1..8f8d891 100644
|
|||
p.packet_type = NMB_PACKET;
|
||||
|
||||
diff --git a/source3/libsmb/nmblib.c b/source3/libsmb/nmblib.c
|
||||
index 5f3eda4..1a21066 100644
|
||||
index 8230c5a..f7bcf8f 100644
|
||||
--- a/source3/libsmb/nmblib.c
|
||||
+++ b/source3/libsmb/nmblib.c
|
||||
@@ -601,6 +601,8 @@ static struct packet_struct *copy_nmb_packet(struct packet_struct *packet)
|
||||
|
@ -812,7 +736,7 @@ index 5f3eda4..1a21066 100644
|
|||
|
||||
/****************************************************************************
|
||||
diff --git a/source3/nmbd/nmbd.c b/source3/nmbd/nmbd.c
|
||||
index f31e7b1..418771a 100644
|
||||
index eefe27a..07a4b02 100644
|
||||
--- a/source3/nmbd/nmbd.c
|
||||
+++ b/source3/nmbd/nmbd.c
|
||||
@@ -441,13 +441,14 @@ static void msg_nmbd_send_packet(struct messaging_context *msg,
|
||||
|
@ -833,7 +757,7 @@ index f31e7b1..418771a 100644
|
|||
break;
|
||||
}
|
||||
diff --git a/source3/nmbd/nmbd_packets.c b/source3/nmbd/nmbd_packets.c
|
||||
index f69845b..51f4e32 100644
|
||||
index 1c570ea..402282c 100644
|
||||
--- a/source3/nmbd/nmbd_packets.c
|
||||
+++ b/source3/nmbd/nmbd_packets.c
|
||||
@@ -207,7 +207,8 @@ static struct packet_struct *create_and_init_netbios_packet(struct nmb_name *nmb
|
||||
|
@ -881,7 +805,7 @@ index f69845b..51f4e32 100644
|
|||
packet.timestamp = time(NULL);
|
||||
|
||||
debug_nmb_packet(&packet);
|
||||
@@ -1679,50 +1686,74 @@ static bool create_listen_fdset(fd_set **ppset, int **psock_array, int *listen_n
|
||||
@@ -1679,26 +1686,32 @@ static bool create_listen_fdset(fd_set **ppset, int **psock_array, int *listen_n
|
||||
return True;
|
||||
}
|
||||
|
||||
|
@ -892,11 +816,11 @@ index f69845b..51f4e32 100644
|
|||
for (subrec = FIRST_SUBNET; subrec; subrec = NEXT_SUBNET_EXCLUDING_UNICAST(subrec))
|
||||
count++;
|
||||
|
||||
- if((count*2) + 2 > FD_SETSIZE) {
|
||||
- if((count*2) + 2 >= FD_SETSIZE) {
|
||||
+ /* each interface gets 4 sockets */
|
||||
+ count *= 4;
|
||||
+
|
||||
+ if(count > FD_SETSIZE) {
|
||||
+ if(count >= FD_SETSIZE) {
|
||||
DEBUG(0,("create_listen_fdset: Too many file descriptors needed (%d). We can \
|
||||
-only use %d.\n", (count*2) + 2, FD_SETSIZE));
|
||||
+only use %d.\n", count, FD_SETSIZE));
|
||||
|
@ -916,7 +840,10 @@ index f69845b..51f4e32 100644
|
|||
|
||||
- /* Add in the broadcast socket on 137. */
|
||||
+ /* Add in the lp_socket_address() interface on 137. */
|
||||
FD_SET(ClientNMB,pset);
|
||||
if (ClientNMB < 0 || ClientNMB >= FD_SETSIZE) {
|
||||
errno = EBADF;
|
||||
SAFE_FREE(pset);
|
||||
@@ -1709,6 +1722,9 @@ only use %d.\n", (count*2) + 2, FD_SETSIZE));
|
||||
sock_array[num++] = ClientNMB;
|
||||
*maxfd = MAX( *maxfd, ClientNMB);
|
||||
|
||||
|
@ -925,12 +852,18 @@ index f69845b..51f4e32 100644
|
|||
+
|
||||
/* Add in the 137 sockets on all the interfaces. */
|
||||
for (subrec = FIRST_SUBNET; subrec; subrec = NEXT_SUBNET_EXCLUDING_UNICAST(subrec)) {
|
||||
if (subrec->nmb_sock < 0 || subrec->nmb_sock >= FD_SETSIZE) {
|
||||
@@ -1718,9 +1734,19 @@ only use %d.\n", (count*2) + 2, FD_SETSIZE));
|
||||
FD_SET(subrec->nmb_sock,pset);
|
||||
sock_array[num++] = subrec->nmb_sock;
|
||||
*maxfd = MAX( *maxfd, subrec->nmb_sock);
|
||||
+
|
||||
+ sock_array[num++] = subrec->nmb_bcast;
|
||||
+ if (subrec->nmb_bcast != -1) {
|
||||
+ if (subrec->nmb_bcast < 0 || subrec->nmb_bcast >= FD_SETSIZE) {
|
||||
+ /* We have to ignore sockets outside FD_SETSIZE. */
|
||||
+ continue;
|
||||
+ }
|
||||
+ FD_SET(subrec->nmb_bcast,pset);
|
||||
+ *maxfd = MAX( *maxfd, subrec->nmb_bcast);
|
||||
+ }
|
||||
|
@ -938,7 +871,10 @@ index f69845b..51f4e32 100644
|
|||
|
||||
- /* Add in the broadcast socket on 138. */
|
||||
+ /* Add in the lp_socket_address() interface on 138. */
|
||||
FD_SET(ClientDGRAM,pset);
|
||||
if (ClientDGRAM < 0 || ClientDGRAM >= FD_SETSIZE) {
|
||||
errno = EBADF;
|
||||
SAFE_FREE(pset);
|
||||
@@ -1731,6 +1757,9 @@ only use %d.\n", (count*2) + 2, FD_SETSIZE));
|
||||
sock_array[num++] = ClientDGRAM;
|
||||
*maxfd = MAX( *maxfd, ClientDGRAM);
|
||||
|
||||
|
@ -947,12 +883,18 @@ index f69845b..51f4e32 100644
|
|||
+
|
||||
/* Add in the 138 sockets on all the interfaces. */
|
||||
for (subrec = FIRST_SUBNET; subrec; subrec = NEXT_SUBNET_EXCLUDING_UNICAST(subrec)) {
|
||||
if (subrec->dgram_sock < 0 || subrec->dgram_sock >= FD_SETSIZE) {
|
||||
@@ -1740,9 +1769,19 @@ only use %d.\n", (count*2) + 2, FD_SETSIZE));
|
||||
FD_SET(subrec->dgram_sock,pset);
|
||||
sock_array[num++] = subrec->dgram_sock;
|
||||
*maxfd = MAX( *maxfd, subrec->dgram_sock);
|
||||
+
|
||||
+ sock_array[num++] = subrec->dgram_bcast;
|
||||
+ if (subrec->dgram_bcast != -1) {
|
||||
+ if (subrec->dgram_bcast < 0 || subrec->dgram_bcast >= FD_SETSIZE) {
|
||||
+ /* We have to ignore sockets outside FD_SETSIZE. */
|
||||
+ continue;
|
||||
+ }
|
||||
+ FD_SET(subrec->dgram_bcast,pset);
|
||||
+ *maxfd = MAX( *maxfd, subrec->dgram_bcast);
|
||||
+ }
|
||||
|
@ -963,7 +905,7 @@ index f69845b..51f4e32 100644
|
|||
|
||||
SAFE_FREE(*ppset);
|
||||
SAFE_FREE(*psock_array);
|
||||
@@ -1811,61 +1842,90 @@ bool listen_for_packets(bool run_election)
|
||||
@@ -1831,61 +1870,90 @@ bool listen_for_packets(bool run_election)
|
||||
#endif
|
||||
|
||||
for(i = 0; i < listen_number; i++) {
|
||||
|
@ -1071,16 +1013,16 @@ index f69845b..51f4e32 100644
|
|||
+ inet_ntoa(packet->ip),packet->port));
|
||||
+ free_packet(packet);
|
||||
+ continue;
|
||||
}
|
||||
- } /* end processing 138 socket. */
|
||||
- } /* end for */
|
||||
+ }
|
||||
+
|
||||
+ if (packet->packet.nmb.header.nm_flags.bcast) {
|
||||
+ DEBUG(7,("discarding own nmb bcast packet from %s:%d\n",
|
||||
+ inet_ntoa(packet->ip),packet->port));
|
||||
+ free_packet(packet);
|
||||
+ continue;
|
||||
+ }
|
||||
}
|
||||
- } /* end processing 138 socket. */
|
||||
- } /* end for */
|
||||
+ }
|
||||
+
|
||||
+ /*
|
||||
|
@ -1106,7 +1048,7 @@ index f69845b..51f4e32 100644
|
|||
return False;
|
||||
}
|
||||
|
||||
@@ -1944,7 +2004,8 @@ bool send_mailslot(bool unique, const char *mailslot,char *buf, size_t len,
|
||||
@@ -1964,7 +2032,8 @@ bool send_mailslot(bool unique, const char *mailslot,char *buf, size_t len,
|
||||
|
||||
p.ip = dest_ip;
|
||||
p.port = dest_port;
|
||||
|
@ -1290,10 +1232,10 @@ index 13bc931..96d7b32 100644
|
|||
|
||||
/****************************************************************************
|
||||
--
|
||||
1.6.3.3
|
||||
1.7.0.4
|
||||
|
||||
|
||||
From df62c7c73e1a30a7db1257df44bbb50471d782c8 Mon Sep 17 00:00:00 2001
|
||||
From 67f12b0e16d6e97e5b942d2293c3e063ed1a520a Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Metzmacher <metze@samba.org>
|
||||
Date: Mon, 8 Feb 2010 12:51:29 +0100
|
||||
Subject: [PATCH 2/4] s3:nmbd: change "nmbd:bind explicit broadcast" into "nmbd bind explicit broadcast"
|
||||
|
@ -1307,10 +1249,10 @@ metze
|
|||
3 files changed, 13 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/source3/include/proto.h b/source3/include/proto.h
|
||||
index d2ae62c..82c55d0 100644
|
||||
index 7c2893b..26b0643 100644
|
||||
--- a/source3/include/proto.h
|
||||
+++ b/source3/include/proto.h
|
||||
@@ -3934,6 +3934,7 @@ const char *lp_logon_drive(void);
|
||||
@@ -3939,6 +3939,7 @@ const char *lp_logon_drive(void);
|
||||
const char *lp_logon_home(void);
|
||||
char *lp_remote_announce(void);
|
||||
char *lp_remote_browse_sync(void);
|
||||
|
@ -1332,7 +1274,7 @@ index 96d7b32..703e229 100644
|
|||
/* Check if we are creating a non broadcast subnet - if so don't create
|
||||
sockets. */
|
||||
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
|
||||
index 6e5e0b2..5e4f2f6 100644
|
||||
index 2ba2dd3..87df0d4 100644
|
||||
--- a/source3/param/loadparm.c
|
||||
+++ b/source3/param/loadparm.c
|
||||
@@ -157,6 +157,7 @@ struct global {
|
||||
|
@ -1368,10 +1310,10 @@ index 6e5e0b2..5e4f2f6 100644
|
|||
FN_GLOBAL_LIST(lp_interfaces, &Globals.szInterfaces)
|
||||
FN_GLOBAL_STRING(lp_nis_home_map_name, &Globals.szNISHomeMapName)
|
||||
--
|
||||
1.6.3.3
|
||||
1.7.0.4
|
||||
|
||||
|
||||
From 4b52a598f0eb179183b66a05707a3d7e3eaf50a6 Mon Sep 17 00:00:00 2001
|
||||
From c7cbb3f8a06cf98abbbcaaad5806b101aea5b2a0 Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Metzmacher <metze@samba.org>
|
||||
Date: Mon, 8 Feb 2010 12:59:13 +0100
|
||||
Subject: [PATCH 3/4] s3:docs-xml: document "nmbd bind explicit broadcast"
|
||||
|
@ -1406,10 +1348,10 @@ index 0000000..f328594
|
|||
+<value type="default">no</value>
|
||||
+</samba:parameter>
|
||||
--
|
||||
1.6.3.3
|
||||
1.7.0.4
|
||||
|
||||
|
||||
From fa11a65188c2973ebba441d7b4f528831bfe3882 Mon Sep 17 00:00:00 2001
|
||||
From 49b0020da61243090848136c1fb03fdd819655d0 Mon Sep 17 00:00:00 2001
|
||||
From: Jeremy Allison <jra@samba.org>
|
||||
Date: Wed, 10 Feb 2010 12:32:05 -0800
|
||||
Subject: [PATCH 4/4] More of the fix for bug #7118 - nmbd problems with socket address.
|
||||
|
@ -1438,10 +1380,10 @@ Jeremy.
|
|||
1 files changed, 89 insertions(+), 0 deletions(-)
|
||||
|
||||
diff --git a/source3/nmbd/nmbd_packets.c b/source3/nmbd/nmbd_packets.c
|
||||
index 51f4e32..6c4b96a 100644
|
||||
index 402282c..567a9df 100644
|
||||
--- a/source3/nmbd/nmbd_packets.c
|
||||
+++ b/source3/nmbd/nmbd_packets.c
|
||||
@@ -1765,6 +1765,83 @@ only use %d.\n", count, FD_SETSIZE));
|
||||
@@ -1793,6 +1793,83 @@ only use %d.\n", count, FD_SETSIZE));
|
||||
}
|
||||
|
||||
/****************************************************************************
|
||||
|
@ -1525,7 +1467,7 @@ index 51f4e32..6c4b96a 100644
|
|||
Listens for NMB or DGRAM packets, and queues them.
|
||||
return True if the socket is dead
|
||||
***************************************************************************/
|
||||
@@ -1784,6 +1861,7 @@ bool listen_for_packets(bool run_election)
|
||||
@@ -1812,6 +1889,7 @@ bool listen_for_packets(bool run_election)
|
||||
#ifndef SYNC_DNS
|
||||
int dns_fd;
|
||||
#endif
|
||||
|
@ -1533,7 +1475,7 @@ index 51f4e32..6c4b96a 100644
|
|||
|
||||
if(listen_set == NULL || rescan_listen_set) {
|
||||
if(create_listen_fdset(&listen_set, &sock_array, &listen_number, &maxfd)) {
|
||||
@@ -1906,6 +1984,16 @@ bool listen_for_packets(bool run_election)
|
||||
@@ -1934,6 +2012,16 @@ bool listen_for_packets(bool run_election)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -1550,7 +1492,7 @@ index 51f4e32..6c4b96a 100644
|
|||
/*
|
||||
* 0,2,4,... are unicast sockets
|
||||
* 1,3,5,... are broadcast sockets
|
||||
@@ -1926,6 +2014,7 @@ bool listen_for_packets(bool run_election)
|
||||
@@ -1954,6 +2042,7 @@ bool listen_for_packets(bool run_election)
|
||||
queue_packet(packet);
|
||||
}
|
||||
|
||||
|
@ -1559,5 +1501,113 @@ index 51f4e32..6c4b96a 100644
|
|||
}
|
||||
|
||||
--
|
||||
1.7.0.4
|
||||
|
||||
From 179e63ae9aa93984ea3d237c1039460c5acf01a5 Mon Sep 17 00:00:00 2001
|
||||
From: Michael Adam <obnox@samba.org>
|
||||
Date: Thu, 14 Jan 2010 14:24:35 +0100
|
||||
Subject: [PATCH] s3:auth: fix account unlock regression introduced with fix for bug #4347
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=utf-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
By an oversight, the patchset for #4347 made the unlocking of a locked
|
||||
account after the lockout duration ineffective.
|
||||
Thanks to Björn for finding this!
|
||||
|
||||
Michael
|
||||
---
|
||||
source3/auth/auth_sam.c | 12 +++++-------
|
||||
1 files changed, 5 insertions(+), 7 deletions(-)
|
||||
|
||||
diff --git a/source3/auth/auth_sam.c b/source3/auth/auth_sam.c
|
||||
index 1dd8fc9..01b2517 100644
|
||||
--- a/source3/auth/auth_sam.c
|
||||
+++ b/source3/auth/auth_sam.c
|
||||
@@ -369,7 +369,6 @@ static NTSTATUS check_sam_security(const struct auth_context *auth_context,
|
||||
DATA_BLOB user_sess_key = data_blob_null;
|
||||
DATA_BLOB lm_sess_key = data_blob_null;
|
||||
bool updated_autolock = False, updated_badpw = False;
|
||||
- uint32_t acct_ctrl;
|
||||
const char *username;
|
||||
const uint8_t *nt_pw;
|
||||
const uint8_t *lm_pw;
|
||||
@@ -399,22 +398,21 @@ static NTSTATUS check_sam_security(const struct auth_context *auth_context,
|
||||
return NT_STATUS_NO_SUCH_USER;
|
||||
}
|
||||
|
||||
- acct_ctrl = pdb_get_acct_ctrl(sampass);
|
||||
username = pdb_get_username(sampass);
|
||||
nt_pw = pdb_get_nt_passwd(sampass);
|
||||
lm_pw = pdb_get_lanman_passwd(sampass);
|
||||
|
||||
/* see if autolock flag needs to be updated */
|
||||
- if (acct_ctrl & ACB_NORMAL)
|
||||
+ if (pdb_get_acct_ctrl(sampass) & ACB_NORMAL)
|
||||
pdb_update_autolock_flag(sampass, &updated_autolock);
|
||||
/* Quit if the account was locked out. */
|
||||
- if (acct_ctrl & ACB_AUTOLOCK) {
|
||||
+ if (pdb_get_acct_ctrl(sampass) & ACB_AUTOLOCK) {
|
||||
DEBUG(3,("check_sam_security: Account for user %s was locked out.\n", username));
|
||||
return NT_STATUS_ACCOUNT_LOCKED_OUT;
|
||||
}
|
||||
|
||||
nt_status = sam_password_ok(auth_context, mem_ctx,
|
||||
- username, acct_ctrl, lm_pw, nt_pw,
|
||||
+ username, pdb_get_acct_ctrl(sampass), lm_pw, nt_pw,
|
||||
user_info, &user_sess_key, &lm_sess_key);
|
||||
|
||||
/* Notify passdb backend of login success/failure. If not
|
||||
@@ -426,7 +424,7 @@ static NTSTATUS check_sam_security(const struct auth_context *auth_context,
|
||||
bool increment_bad_pw_count = false;
|
||||
|
||||
if (NT_STATUS_EQUAL(nt_status,NT_STATUS_WRONG_PASSWORD) &&
|
||||
- acct_ctrl & ACB_NORMAL &&
|
||||
+ pdb_get_acct_ctrl(sampass) & ACB_NORMAL &&
|
||||
NT_STATUS_IS_OK(update_login_attempts_status))
|
||||
{
|
||||
increment_bad_pw_count =
|
||||
@@ -457,7 +455,7 @@ static NTSTATUS check_sam_security(const struct auth_context *auth_context,
|
||||
goto done;
|
||||
}
|
||||
|
||||
- if ((acct_ctrl & ACB_NORMAL) &&
|
||||
+ if ((pdb_get_acct_ctrl(sampass) & ACB_NORMAL) &&
|
||||
(pdb_get_bad_password_count(sampass) > 0)){
|
||||
pdb_set_bad_password_count(sampass, 0, PDB_CHANGED);
|
||||
pdb_set_bad_password_time(sampass, 0, PDB_CHANGED);
|
||||
--
|
||||
1.6.3.3
|
||||
|
||||
From b2ec4bffca5d033a172c572ecf0605e84af68315 Mon Sep 17 00:00:00 2001
|
||||
From: Stefan Metzmacher <metze@samba.org>
|
||||
Date: Thu, 30 Jun 2011 09:56:06 +0200
|
||||
Subject: [PATCH] s3:nmbd_packets: return the used number of sockets in create_listen_fdset() (bug #8276)
|
||||
|
||||
Fix bug #7949 (DoS in Winbind and smbd with many file descriptors open)
|
||||
(commit feb3fcd0fa4bda0967b881315595d7702f4d1752) changed the bahavior,
|
||||
so that we skipped some sockets.
|
||||
|
||||
This should work for v3-4-test.
|
||||
|
||||
metze
|
||||
---
|
||||
source3/nmbd/nmbd_packets.c | 2 +-
|
||||
1 files changed, 1 insertions(+), 1 deletions(-)
|
||||
|
||||
diff --git a/source3/nmbd/nmbd_packets.c b/source3/nmbd/nmbd_packets.c
|
||||
index 1c570ea..855f6af 100644
|
||||
--- a/source3/nmbd/nmbd_packets.c
|
||||
+++ b/source3/nmbd/nmbd_packets.c
|
||||
@@ -1742,7 +1742,7 @@ only use %d.\n", (count*2) + 2, FD_SETSIZE));
|
||||
*maxfd = MAX( *maxfd, subrec->dgram_sock);
|
||||
}
|
||||
|
||||
- *listen_number = count;
|
||||
+ *listen_number = num;
|
||||
|
||||
SAFE_FREE(*ppset);
|
||||
SAFE_FREE(*psock_array);
|
||||
--
|
||||
1.7.4.1
|
||||
|
||||
|
|
Loading…
Reference in a new issue