diff options
author | shaun <shaun@FreeBSD.org> | 2006-10-10 01:50:13 +0800 |
---|---|---|
committer | shaun <shaun@FreeBSD.org> | 2006-10-10 01:50:13 +0800 |
commit | b048fc1fc7899e3c57b22237d8b843036cc6f67f (patch) | |
tree | 82bd87ff1de0be142f1bed81e63556a808a5fa7f /net | |
parent | 910b13fc1dfd3250f4eb4654a3d9255deeba1329 (diff) | |
download | freebsd-ports-graphics-b048fc1fc7899e3c57b22237d8b843036cc6f67f.tar.gz freebsd-ports-graphics-b048fc1fc7899e3c57b22237d8b843036cc6f67f.tar.zst freebsd-ports-graphics-b048fc1fc7899e3c57b22237d8b843036cc6f67f.zip |
- Fix two bugs in the current samba 3.0.23c code, which stopped testparm
and winbindd from working. [1]
- Fix rc.d script variable checks. [2]
PR: ports/104200 [1], ports/103799 [2]
Submitted by: Timur I. Bakeyev <timur@gnu.org> (maintainer) [1],
Tsurutani Naoki <turutani@scphys.kyoto-u.ac.jp> [2]
Diffstat (limited to 'net')
-rw-r--r-- | net/samba3/Makefile | 2 | ||||
-rw-r--r-- | net/samba3/files/patch-za | 129 | ||||
-rw-r--r-- | net/samba3/files/patch-zb | 26 | ||||
-rw-r--r-- | net/samba3/files/samba.in | 13 |
4 files changed, 164 insertions, 6 deletions
diff --git a/net/samba3/Makefile b/net/samba3/Makefile index 113a7d4c869..4e8a0e42bc5 100644 --- a/net/samba3/Makefile +++ b/net/samba3/Makefile @@ -7,7 +7,7 @@ PORTNAME= samba PORTVERSION?= 3.0.23c -PORTREVISION?= 0 +PORTREVISION?= 1 PORTEPOCH?= 1 CATEGORIES?= net MASTER_SITES= ${MASTER_SITE_SAMBA} diff --git a/net/samba3/files/patch-za b/net/samba3/files/patch-za new file mode 100644 index 00000000000..cadc4bb4c75 --- /dev/null +++ b/net/samba3/files/patch-za @@ -0,0 +1,129 @@ +--- nsswitch/wb_common.c.orig Thu Apr 20 04:29:21 2006 ++++ nsswitch/wb_common.c Mon Sep 25 12:49:04 2006 +@@ -525,15 +525,11 @@ + NSS_STATUS winbindd_send_request(int req_type, struct winbindd_request *request) + { + struct winbindd_request lrequest; +- char *env; +- int value; +- ++ + /* Check for our tricky environment variable */ + +- if ( (env = getenv(WINBINDD_DONT_ENV)) != NULL ) { +- value = atoi(env); +- if ( value == 1 ) +- return NSS_STATUS_NOTFOUND; ++ if (winbind_env_set()) { ++ return NSS_STATUS_NOTFOUND; + } + + if (!request) { +@@ -632,3 +628,14 @@ + return putenv(s) != -1; + } + ++BOOL winbind_env_set( void ) ++{ ++ char *env; ++ ++ if ((env=getenv(WINBINDD_DONT_ENV)) != NULL) { ++ if(strequal(env, "1")) { ++ return True; ++ } ++ } ++ return False; ++} +--- passdb/pdb_interface.c.orig Wed Aug 23 18:16:38 2006 ++++ passdb/pdb_interface.c Mon Sep 25 13:10:15 2006 +@@ -1321,27 +1321,25 @@ + struct group *grp; + char **gr; + struct passwd *pwd; +- char *winbindd_env; ++ BOOL winbind_env; + + *pp_uids = NULL; + *p_num = 0; + + /* We only look at our own sam, so don't care about imported stuff */ +- +- winbindd_env = getenv(WINBINDD_DONT_ENV); ++ winbind_env = winbind_env_set(); + winbind_off(); + + if ((grp = getgrgid(gid)) == NULL) { + /* allow winbindd lookups, but only if they weren't already disabled */ +- if ( !(winbindd_env && strequal(winbindd_env, "1")) ) { ++ if (!winbind_env) { + winbind_on(); + } +- ++ + return False; + } + + /* Primary group members */ +- + setpwent(); + while ((pwd = getpwent()) != NULL) { + if (pwd->pw_gid == gid) { +@@ -1352,7 +1350,6 @@ + endpwent(); + + /* Secondary group members */ +- + for (gr = grp->gr_mem; (*gr != NULL) && ((*gr)[0] != '\0'); gr += 1) { + struct passwd *pw = getpwnam(*gr); + +@@ -1362,11 +1359,10 @@ + } + + /* allow winbindd lookups, but only if they weren't already disabled */ +- +- if ( !(winbindd_env && strequal(winbindd_env, "1")) ) { ++ if (!winbind_env) { + winbind_on(); + } +- ++ + return True; + } + +--- lib/system_smbd.c.orig Thu Apr 20 04:29:23 2006 ++++ lib/system_smbd.c Mon Sep 25 12:53:54 2006 +@@ -120,19 +120,15 @@ + static int sys_getgrouplist(const char *user, gid_t gid, gid_t *groups, int *grpcnt) + { + int retval; +- char *winbindd_env; ++ BOOL winbind_env; + + DEBUG(10,("sys_getgrouplist: user [%s]\n", user)); + +- /* Save the winbindd state and not just blindly turn it back on */ +- +- winbindd_env = getenv(WINBINDD_DONT_ENV); +- + /* This is only ever called for Unix users, remote memberships are + * always determined by the info3 coming back from auth3 or the + * PAC. */ +- +- winbind_off() ; ++ winbind_env = winbind_env_set(); ++ winbind_off(); + + #ifdef HAVE_GETGROUPLIST + retval = getgrouplist(user, gid, groups, grpcnt); +@@ -142,9 +138,8 @@ + unbecome_root(); + #endif + +- /* allow winbindd lookups , but only if they were not already disabled */ +- +- if ( !(winbindd_env && strequal(winbindd_env, "1")) ) { ++ /* allow winbindd lookups, but only if they were not already disabled */ ++ if (!winbind_env) { + winbind_on(); + } + diff --git a/net/samba3/files/patch-zb b/net/samba3/files/patch-zb new file mode 100644 index 00000000000..ce30f875793 --- /dev/null +++ b/net/samba3/files/patch-zb @@ -0,0 +1,26 @@ +--- param/loadparm.c.orig Fri Aug 25 13:40:09 2006 ++++ param/loadparm.c Fri Aug 25 13:46:28 2006 +@@ -3852,7 +3852,7 @@ + + BOOL dump_a_parameter(int snum, char *parm_name, FILE * f, BOOL isGlobal) + { +- service * pService = ServicePtrs[snum]; ++ service * pService = NULL; + int i; + BOOL result = False; + parm_class p_class; +@@ -3883,8 +3883,13 @@ + if (isGlobal) { + p_class = P_GLOBAL; + flag = FLAG_GLOBAL; +- } else ++ } else { ++ if (!VALID_SNUM(snum)) { ++ return False; ++ } ++ pService = ServicePtrs[snum]; + p_class = P_LOCAL; ++ } + + for (i = 0; parm_table[i].label; i++) { + if (strwicmp(parm_table[i].label, parm_name) == 0 && diff --git a/net/samba3/files/samba.in b/net/samba3/files/samba.in index 767accc7d4b..4c89021dfa6 100644 --- a/net/samba3/files/samba.in +++ b/net/samba3/files/samba.in @@ -51,8 +51,8 @@ smbcontrol_command="%%PREFIX%%/bin/smbcontrol" 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 slave variables -if [ -n "${samba_enable}" ] && checkyesno samba_enable; then +# 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 @@ -60,7 +60,9 @@ if [ -n "${samba_enable}" ] && checkyesno samba_enable; then %%WINBIND%% winbindd_enable=${winbindd_enable="YES"} %%WINBIND%% fi fi -# Defaults for slave variables +# Hack to enable check of dependent variables +eval real_${rcvar}=\${${rcvar}:="NO"} ${rcvar}="YES" +# Defaults for dependent variables nmbd_enable=${nmbd_enable:="NO"} nmbd_flags=${nmbd_flags="-D"} smbd_enable=${smbd_enable:="NO"} @@ -102,13 +104,14 @@ samba_rcvar_cmd() { # Check master variable echo "# ${name}" if [ -n "${rcvar}" ]; then - if checkyesno ${rcvar}; then + # Use original configured value + if checkyesno "real_${rcvar}"; then echo "\$${rcvar}=YES" else echo "\$${rcvar}=NO" fi fi - # Check slave variables + # Check dependent variables samba_cmd "${_rc_prefix}${rc_arg}" ${rc_extra_args} } |