diff options
-rw-r--r-- | WHATSNEW.txt | 7 | ||||
-rw-r--r-- | packaging/RHEL/makerpms.sh.tmpl | 24 | ||||
-rw-r--r-- | packaging/RHEL/samba.spec.tmpl | 42 | ||||
-rwxr-xr-x | packaging/bin/update-pkginfo | 12 | ||||
-rw-r--r-- | source/include/client.h | 4 | ||||
-rw-r--r-- | source/libsmb/cliconnect.c | 22 | ||||
-rw-r--r-- | source/libsmb/clireadwrite.c | 6 | ||||
-rw-r--r-- | source/nsswitch/winbind_nss_aix.c | 14 |
8 files changed, 88 insertions, 43 deletions
diff --git a/WHATSNEW.txt b/WHATSNEW.txt index 7558790c07b..32aade3e6f0 100644 --- a/WHATSNEW.txt +++ b/WHATSNEW.txt @@ -1,6 +1,6 @@ ================================== Release Notes for Samba 3.0.23pre1 - Apr 20, 2006 + Apr 22, 2006 ================================== This is a preview release of the Samba 3.0.23 code base and @@ -175,6 +175,8 @@ o Jeremy Allison <jra@samba.org> oplocks. * BUG 3592: Ignore a file in a smbtar output if the first read fails (inspired by Justin Best). + * BUG 3668: Workaround Windows bug with LARGE_READX where if + you ask for exactly 64k bytes it returns 0. o Alexander Bokovoy <ab@samba.org> @@ -312,8 +314,9 @@ o Bjoern Jacke <bjacke@sernet.de>. * Find JFS DMAPI libs on Linux when only they are available. -o William JoJo <jojowil@hvcc.edu> +o William Jojo <jojowil@hvcc.edu> * Fix VFS builds on AIX platforms. + * Fixes for the AIX version of libnss_winbind.so o Volker Lendecke <vl@samba.org> diff --git a/packaging/RHEL/makerpms.sh.tmpl b/packaging/RHEL/makerpms.sh.tmpl index ebaa4e649f7..5b377bda575 100644 --- a/packaging/RHEL/makerpms.sh.tmpl +++ b/packaging/RHEL/makerpms.sh.tmpl @@ -21,6 +21,7 @@ SRCDIR=`rpm --eval %_sourcedir` USERID=`id -u` GRPID=`id -g` VERSION='PVERSION' +REVISION='PREVISION' SPECFILE="samba.spec" RPMVER=`rpm --version | awk '{print $3}'` RPM="rpmbuild" @@ -38,12 +39,29 @@ case $RPMVER in ;; esac -( cd ../../source; if [ -f Makefile ]; then make distclean; fi ) -( cd ../../.. ; chown -R ${USERID}.${GRPID} samba-${VERSION} ) +pushd . +cd ../../source +if [ -f Makefile ]; then + make distclean +fi +popd +pushd . +cd ../../../ +chown -R ${USERID}.${GRPID} samba-${VERSION}${REVISION} +if [ ! -d samba-${VERSION} ]; then + ln -s samba-${VERSION}${REVISION} samba-${VERSION} || exit 1 +fi echo -n "Creating samba-${VERSION}.tar.bz2 ... " -( cd ../../.. ; tar --exclude=.svn -cf - samba-${VERSION}/. | bzip2 > ${SRCDIR}/samba-${VERSION}.tar.bz2 ) +tar --exclude=.svn -cf - samba-${VERSION}/. | bzip2 > ${SRCDIR}/samba-${VERSION}.tar.bz2 echo "Done." +if [ $? -ne 0 ]; then + echo "Build failed!" + exit 1 +fi + +popd + ## ## copy additional source files diff --git a/packaging/RHEL/samba.spec.tmpl b/packaging/RHEL/samba.spec.tmpl index 6e5ebcb6d0b..70501db7ae7 100644 --- a/packaging/RHEL/samba.spec.tmpl +++ b/packaging/RHEL/samba.spec.tmpl @@ -6,7 +6,7 @@ Vendor: Samba Team Packager: Samba Team <samba@samba.org> Name: samba Version: PVERSION -Release: PRELEASE +Release: PRELEASEPRPMREV License: GNU GPL version 2 Group: System Environment/Daemons URL: http://www.samba.org/ @@ -27,7 +27,7 @@ Provides: samba = %{version} Prefix: /usr BuildRoot: %{_tmppath}/%{name}-%{version}-root -BuildRequires: pam-devel, readline-devel, ncurses-devel, fileutils, libacl-devel, openldap-devel, krb5-devel, cups-devel +BuildRequires: pam-devel, readline-devel, fileutils, libacl-devel, openldap2-devel, krb5-devel, cups-devel # Working around perl dependency problem from docs %define __perl_requires %{SOURCE998} @@ -109,15 +109,15 @@ utilized by SWAT as well as the HTML and PDF version of "Using Samba", /bin/cp setup/filter-requires-samba.sh %{SOURCE998} cd source -%ifarch i386 sparc -RPM_OPT_FLAGS="$RPM_OPT_FLAGS -D_FILE_OFFSET_BITS=64" -%endif -%ifarch ia64 -libtoolize --copy --force # get it to recognize IA-64 -autoheader -autoconf -EXTRA="-D_LARGEFILE64_SOURCE" -%endif +# RPM_OPT_FLAGS="$RPM_OPT_FLAGS -D_FILE_OFFSET_BITS=64" + +## check for ccache +ccache -h 2>&1 > /dev/null +#if [ $? -eq 0 ]; then +# CC="ccache gcc" +#else + CC="gcc" +#fi ## always run autogen.sh ./autogen.sh @@ -184,7 +184,6 @@ rm -rf $RPM_BUILD_ROOT # Create the target build directory hierarchy mkdir -p $RPM_BUILD_ROOT%{_datadir}/swat/{help,include,using_samba/{figs,gifsa}} -mkdir -p $RPM_BUILD_ROOT%{_datadir}/swat/using_samba mkdir -p $RPM_BUILD_ROOT%{_includedir} mkdir -p $RPM_BUILD_ROOT%{_initrddir} mkdir -p $RPM_BUILD_ROOT{%{_libdir},%{_includedir}} @@ -224,10 +223,6 @@ install -m 755 source/bin/libsmbclient.so $RPM_BUILD_ROOT%{_libdir}/libsmbclient install -m 755 source/bin/libsmbclient.a $RPM_BUILD_ROOT%{_libdir}/libsmbclient.a install -m 644 source/include/libsmbclient.h $RPM_BUILD_ROOT%{_includedir} ln -s %{_libdir}/libsmbclient.so $RPM_BUILD_ROOT%{_libdir}/libsmbclient.so.0 -#if [ %{_libdir} == /usr/lib64 ];then -# ln -s %{_libdir}/libsmbclient.so $RPM_BUILD_ROOT/usr/lib/libsmbclient.so.0 -# ln -s %{_libdir}/libsmbclient.so $RPM_BUILD_ROOT/usr/lib/libsmbclient.so -#fi # make install puts libmsrpc.so in the wrong place on x86_64 rm -f $RPM_BUILD_ROOT/usr/lib*/samba/libmsrpc.so $RPM_BUILD_ROOT/usr/lib*/samba/libmsrpc.a || true @@ -236,17 +231,17 @@ install -m 755 source/bin/libmsrpc.a $RPM_BUILD_ROOT%{_libdir}/libmsrpc.a install -m 644 source/include/libmsrpc.h $RPM_BUILD_ROOT%{_includedir} rm -f $RPM_BUILD_ROOT%{_libdir}/samba/libmsrpc.* ln -s /%{_libdir}/libmsrpc.so $RPM_BUILD_ROOT%{_libdir}/libmsrpc.so.0 -#if [ %{_libdir} == /usr/lib64 ];then -# ln -s %{_libdir}/libmsrpc.so $RPM_BUILD_ROOT/usr/lib/libmsrpc.so.0 -# ln -s %{_libdir}/libmsrpc.so $RPM_BUILD_ROOT/usr/lib/libmsrpc.so -#fi # Install pam_smbpass.so install -m755 source/bin/pam_smbpass.so $RPM_BUILD_ROOT/%{_lib}/security/pam_smbpass.so +## cleanup +/bin/rm -rf $RPM_BUILD_ROOT/usr/lib*/samba/security + # we need a symlink for mount to recognise the smb and smbfs filesystem types -ln -sf %{_prefix}/sbin/smbmount $RPM_BUILD_ROOT/sbin/mount.smbfs -ln -sf %{_prefix}/sbin/smbmount $RPM_BUILD_ROOT/sbin/mount.smb +ln -sf %{_prefix}/bin/smbmount $RPM_BUILD_ROOT/sbin/mount.smbfs +ln -sf %{_prefix}/bin/smbmount $RPM_BUILD_ROOT/sbin/mount.smb +/bin/rm -f $RPM_BUILD_ROOT/mount.smbfs # Install the miscellany echo 127.0.0.1 localhost > $RPM_BUILD_ROOT%{_sysconfdir}/samba/lmhosts @@ -264,6 +259,8 @@ install -m755 source/client/mount.cifs $RPM_BUILD_ROOT/sbin/mount.cifs install -m755 source/client/umount.cifs $RPM_BUILD_ROOT/sbin/umount.cifs install -m755 source/script/mksmbpasswd.sh $RPM_BUILD_ROOT%{_bindir} +/bin/rm $RPM_BUILD_ROOT%{_sbindir}/*mount.cifs + ln -s ../..%{initdir}/smb $RPM_BUILD_ROOT%{_sbindir}/samba ln -s ../..%{initdir}/winbind $RPM_BUILD_ROOT%{_sbindir}/winbind @@ -399,6 +396,7 @@ fi %doc examples/autofs examples/LDAP examples/libsmbclient examples/misc examples/printer-accounting %doc examples/printing %doc %{_datadir}/swat/help +%doc %{_datadir}/swat/using_samba ########## diff --git a/packaging/bin/update-pkginfo b/packaging/bin/update-pkginfo index 47f3c3c306b..bcd383e4340 100755 --- a/packaging/bin/update-pkginfo +++ b/packaging/bin/update-pkginfo @@ -2,15 +2,21 @@ VERSION=$1 RELEASE=$2 +REVISION=$3 -if [ $# -ne 2 ]; then - echo Usage: update-pkginfo VERSION RELEASE +if [ $# -ne 3 ]; then + echo Usage: update-pkginfo VERSION RELEASE REVISION exit 1 fi +# PREV=`echo ${REVISION} | sed 's/[^0-9]//g'` +# PREV="."`echo ${REVISION} | sed 's/[0-9]//g'`".${PREV}" for f in `du -a | awk '{print $2}' | grep \.tmpl$`; do f2=`echo $f | sed s/.tmpl//g` echo $f2 - sed -e s/PVERSION/$VERSION/g -e s/PRELEASE/$RELEASE/g < $f > $f2 + sed -e s/PVERSION/$VERSION/g \ + -e s/PRELEASE/$RELEASE/g \ + -e s/PREVISION/${REVISION}/g \ + -e s/PRPMREV/.${REVISION}/g < $f > $f2 done diff --git a/source/include/client.h b/source/include/client.h index 30e0fae8744..c6d7b162fcd 100644 --- a/source/include/client.h +++ b/source/include/client.h @@ -27,7 +27,8 @@ overlap on the wire. This size gives us a nice read/write size, which will be a multiple of the page size on almost any system */ #define CLI_BUFFER_SIZE (0xFFFF) -#define CLI_MAX_LARGE_READX_SIZE (127*1024) +#define CLI_SAMBA_MAX_LARGE_READX_SIZE (127*1024) /* Works for Samba servers */ +#define CLI_WINDOWS_MAX_LARGE_READX_SIZE ((64*1024)-2) /* Windows servers are broken.... */ /* * These definitions depend on smb.h @@ -143,6 +144,7 @@ struct cli_state { unsigned int bufsize; int initialised; int win95; + BOOL is_samba; uint32 capabilities; BOOL dfsroot; diff --git a/source/libsmb/cliconnect.c b/source/libsmb/cliconnect.c index 48885f19d84..6b5de6d1439 100644 --- a/source/libsmb/cliconnect.c +++ b/source/libsmb/cliconnect.c @@ -199,6 +199,10 @@ static BOOL cli_session_setup_guest(struct cli_state *cli) p += clistr_pull(cli, cli->server_type, p, sizeof(fstring), -1, STR_TERMINATE); p += clistr_pull(cli, cli->server_domain, p, sizeof(fstring), -1, STR_TERMINATE); + if (strstr(cli->server_type, "Samba")) { + cli->is_samba = True; + } + fstrcpy(cli->user_name, ""); return True; @@ -263,6 +267,10 @@ static BOOL cli_session_setup_plaintext(struct cli_state *cli, const char *user, p += clistr_pull(cli, cli->server_domain, p, sizeof(fstring), -1, STR_TERMINATE); fstrcpy(cli->user_name, user); + if (strstr(cli->server_type, "Samba")) { + cli->is_samba = True; + } + return True; } @@ -408,6 +416,10 @@ static BOOL cli_session_setup_nt1(struct cli_state *cli, const char *user, p += clistr_pull(cli, cli->server_type, p, sizeof(fstring), -1, STR_TERMINATE); p += clistr_pull(cli, cli->server_domain, p, sizeof(fstring), -1, STR_TERMINATE); + if (strstr(cli->server_type, "Samba")) { + cli->is_samba = True; + } + fstrcpy(cli->user_name, user); if (session_key.data) { @@ -873,6 +885,10 @@ BOOL cli_session_setup(struct cli_state *cli, } } + if (strstr(cli->server_type, "Samba")) { + cli->is_samba = True; + } + return True; } @@ -1159,9 +1175,9 @@ BOOL cli_negprot(struct cli_state *cli) if (cli->capabilities & (CAP_LARGE_READX|CAP_LARGE_WRITEX)) { SAFE_FREE(cli->outbuf); SAFE_FREE(cli->inbuf); - cli->outbuf = (char *)SMB_MALLOC(CLI_MAX_LARGE_READX_SIZE+SAFETY_MARGIN); - cli->inbuf = (char *)SMB_MALLOC(CLI_MAX_LARGE_READX_SIZE+SAFETY_MARGIN); - cli->bufsize = CLI_MAX_LARGE_READX_SIZE; + cli->outbuf = (char *)SMB_MALLOC(CLI_SAMBA_MAX_LARGE_READX_SIZE+SAFETY_MARGIN); + cli->inbuf = (char *)SMB_MALLOC(CLI_SAMBA_MAX_LARGE_READX_SIZE+SAFETY_MARGIN); + cli->bufsize = CLI_SAMBA_MAX_LARGE_READX_SIZE; } } else if (cli->protocol >= PROTOCOL_LANMAN1) { diff --git a/source/libsmb/clireadwrite.c b/source/libsmb/clireadwrite.c index 650822bf8ed..883bc1260d6 100644 --- a/source/libsmb/clireadwrite.c +++ b/source/libsmb/clireadwrite.c @@ -76,7 +76,11 @@ ssize_t cli_read(struct cli_state *cli, int fnum, char *buf, off_t offset, size_ */ if (cli->capabilities & CAP_LARGE_READX) { - readsize = CLI_MAX_LARGE_READX_SIZE; + if (cli->is_samba) { + readsize = CLI_SAMBA_MAX_LARGE_READX_SIZE; + } else { + readsize = CLI_WINDOWS_MAX_LARGE_READX_SIZE; + } } else { readsize = (cli->max_xmit - (smb_size+32)) & ~1023; } diff --git a/source/nsswitch/winbind_nss_aix.c b/source/nsswitch/winbind_nss_aix.c index b898e3c3af2..c5d98dad067 100644 --- a/source/nsswitch/winbind_nss_aix.c +++ b/source/nsswitch/winbind_nss_aix.c @@ -632,19 +632,17 @@ static int wb_aix_user_attrib(const char *key, char *attributes[], results[i].attr_un.au_char = strdup(pwd->pw_passwd); } else if (strcmp(attributes[i], S_HOME) == 0) { results[i].attr_un.au_char = strdup(pwd->pw_dir); - } else if (strcmp(attributes[0], S_SHELL) == 0) { + } else if (strcmp(attributes[i], S_SHELL) == 0) { results[i].attr_un.au_char = strdup(pwd->pw_shell); - } else if (strcmp(attributes[0], S_REGISTRY) == 0) { + } else if (strcmp(attributes[i], S_REGISTRY) == 0) { results[i].attr_un.au_char = strdup("WINBIND"); - } else if (strcmp(attributes[0], S_GECOS) == 0) { + } else if (strcmp(attributes[i], S_GECOS) == 0) { results[i].attr_un.au_char = strdup(pwd->pw_gecos); - } else if (strcmp(attributes[0], S_PGRP) == 0) { + } else if (strcmp(attributes[i], S_PGRP) == 0) { results[i] = pwd_to_group(pwd); - } else if (strcmp(attributes[0], S_GECOS) == 0) { - results[i].attr_un.au_char = strdup(pwd->pw_gecos); - } else if (strcmp(attributes[0], S_GROUPSIDS) == 0) { + } else if (strcmp(attributes[i], S_GROUPS) == 0) { results[i] = pwd_to_groupsids(pwd); - } else if (strcmp(attributes[0], "SID") == 0) { + } else if (strcmp(attributes[i], "SID") == 0) { results[i] = pwd_to_sid(pwd); } else { logit("Unknown user attribute '%s'\n", attributes[i]); |