summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGerald Carter <jerry@samba.org>2006-04-22 20:52:54 +0000
committerGerald Carter <jerry@samba.org>2006-04-22 20:52:54 +0000
commit71cf4393e33dce24f30db18d9ff1df6113434476 (patch)
treea89442c8648f52c83e9726f5dbd52d76e59b7180
parentf18aace9e04563926d99f5195558d287e7a6f7cf (diff)
downloadsamba-71cf4393e33dce24f30db18d9ff1df6113434476.tar.gz
r15164: grab a few more changes from SAMBA_3_0
-rw-r--r--WHATSNEW.txt7
-rw-r--r--packaging/RHEL/makerpms.sh.tmpl24
-rw-r--r--packaging/RHEL/samba.spec.tmpl42
-rwxr-xr-xpackaging/bin/update-pkginfo12
-rw-r--r--source/include/client.h4
-rw-r--r--source/libsmb/cliconnect.c22
-rw-r--r--source/libsmb/clireadwrite.c6
-rw-r--r--source/nsswitch/winbind_nss_aix.c14
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]);