[SCM] Samba Shared Repository - branch master updated
Jeremy Allison
jra at samba.org
Wed Jul 1 18:06:06 MDT 2015
The branch, master has been updated
via ddc4c67 librpc: prevent invalid NULL pointer derref in dcerpc_binding_get_auth_info().
via 20075e6 s3:vfs: copy_chunk buffer size
via 4e28dd1 selftest: Plan samba3.blackbox.preserve_case testcase
via f72be14 tests: Add test_preserve_case.sh
via 451dc38 selftest: Add setup_fileserver()
via 2b644e3 s3:libsmb: fix resolve_ads return if there were no answers
from 86cff1d tevent: add and use debug class for tevent
https://git.samba.org/?p=samba.git;a=shortlog;h=master
- Log -----------------------------------------------------------------
commit ddc4c6767a98bb087bb435ed3a4591e75637b1e8
Author: Günther Deschner <gd at samba.org>
Date: Wed Jul 1 17:14:10 2015 +0200
librpc: prevent invalid NULL pointer derref in dcerpc_binding_get_auth_info().
Guenther
Signed-off-by: Günther Deschner <gd at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
Autobuild-User(master): Jeremy Allison <jra at samba.org>
Autobuild-Date(master): Thu Jul 2 02:05:38 CEST 2015 on sn-devel-104
commit 20075e6b3082939fbd5d7ca4f327d29d62c33c87
Author: Ralph Boehme <slow at samba.org>
Date: Wed Jul 1 17:57:36 2015 +0200
s3:vfs: copy_chunk buffer size
Use a dynamically allocated copy_chunk buffer size with an upper bound
of 8 MB for now.
The previous size of 64 KB has proven to really hurt performance,
especially with "strict locking = yes".
The SMB2 protocol level maximum allowed copy_chunk size is 1 MB, that's
what will be used as buffer size in the typical case.
With the AAPL copyfile extension the requested copy_chunk size is the
size whole file, which would then make use of a larger buffer up to the
limit of 8 MB.
Signed-off-by: Ralph Boehme <slow at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 4e28dd16c528e3bf3cfa0a4ecfdee9188f02ec49
Author: Andreas Schneider <asn at samba.org>
Date: Wed Jul 1 14:09:32 2015 +0200
selftest: Plan samba3.blackbox.preserve_case testcase
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit f72be14315b9e2574980127b7c0f9fdcbea10d37
Author: Andreas Schneider <asn at samba.org>
Date: Fri May 15 10:05:26 2015 +0200
tests: Add test_preserve_case.sh
Test for: https://bugzilla.samba.org/show_bug.cgi?id=10650
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 451dc3889ef530174f80177d5e8b84c6a8b8e777
Author: Robin Hack <rhack at redhat.com>
Date: Fri May 15 09:43:29 2015 +0200
selftest: Add setup_fileserver()
Pair-Programmed-With: Andreas Schneider <asn at samba.org>
Signed-off-by: Robin Hack <rhack at redhat.com>
Signed-off-by: Andreas Schneider <asn at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
commit 2b644e3d5dcbc286468764cd48b6b7044463d5df
Author: Michael Adam <obnox at samba.org>
Date: Tue Jun 30 16:51:43 2015 +0200
s3:libsmb: fix resolve_ads return if there were no answers
Signed-off-by: Michael Adam <obnox at samba.org>
Reviewed-by: "Stefan (metze) Metzmacher" <metze at samba.org>
Reviewed-by: Jeremy Allison <jra at samba.org>
-----------------------------------------------------------------------
Summary of changes:
librpc/rpc/binding.c | 4 +-
selftest/target/Samba.pm | 1 +
selftest/target/Samba3.pm | 96 +++++++++++++++++++++++++++++-
source3/libsmb/namequery.c | 7 +++
source3/modules/vfs_default.c | 10 +++-
source3/script/tests/test_preserve_case.sh | 78 ++++++++++++++++++++++++
source3/selftest/tests.py | 2 +
7 files changed, 193 insertions(+), 5 deletions(-)
create mode 100755 source3/script/tests/test_preserve_case.sh
Changeset truncated at 500 lines:
diff --git a/librpc/rpc/binding.c b/librpc/rpc/binding.c
index 37e0c4f..f131d00 100644
--- a/librpc/rpc/binding.c
+++ b/librpc/rpc/binding.c
@@ -596,11 +596,11 @@ _PUBLIC_ void dcerpc_binding_get_auth_info(const struct dcerpc_binding *b,
auth_level = DCERPC_AUTH_LEVEL_NONE;
}
- if (_auth_type == NULL) {
+ if (_auth_type != NULL) {
*_auth_type = auth_type;
}
- if (_auth_level == NULL) {
+ if (_auth_level != NULL) {
*_auth_level = auth_level;
}
}
diff --git a/selftest/target/Samba.pm b/selftest/target/Samba.pm
index 4949086..e128fd3 100644
--- a/selftest/target/Samba.pm
+++ b/selftest/target/Samba.pm
@@ -177,6 +177,7 @@ sub get_interface($)
$interfaces{"chgdcpass"} = 32;
$interfaces{"promotedvdc"} = 33;
$interfaces{"rfc2307member"} = 34;
+ $interfaces{"fileserver"} = 35;
# update lib/socket_wrapper/socket_wrapper.c
# #define MAX_WRAPPED_INTERFACES 32
diff --git a/selftest/target/Samba3.pm b/selftest/target/Samba3.pm
index a380e7a..03c78f2 100755
--- a/selftest/target/Samba3.pm
+++ b/selftest/target/Samba3.pm
@@ -178,6 +178,8 @@ sub setup_env($$$)
return $self->setup_nt4_dc_schannel("$path/nt4_dc_schannel");
} elsif ($envname eq "simpleserver") {
return $self->setup_simpleserver("$path/simpleserver");
+ } elsif ($envname eq "fileserver") {
+ return $self->setup_fileserver("$path/fileserver");
} elsif ($envname eq "maptoguest") {
return $self->setup_maptoguest("$path/maptoguest");
} elsif ($envname eq "ktest") {
@@ -526,7 +528,7 @@ sub setup_simpleserver($$)
{
my ($self, $path) = @_;
- print "PROVISIONING server with security=share...";
+ print "PROVISIONING simple server...";
my $prefix_abs = abs_path($path);
@@ -557,6 +559,98 @@ sub setup_simpleserver($$)
return $vars;
}
+sub setup_fileserver($$)
+{
+ my ($self, $path) = @_;
+ my $prefix_abs = abs_path($path);
+
+ print "PROVISIONING file server ...\n";
+
+ my @dirs = ();
+
+ mkdir($prefix_abs, 0777);
+
+ my $share_dir="$prefix_abs/share";
+
+ # Create share directory structure
+ my $lower_case_share_dir="$share_dir/lower-case";
+ push(@dirs, $lower_case_share_dir);
+
+ my $lower_case_share_dir_30000="$share_dir/lower-case-30000";
+ push(@dirs, $lower_case_share_dir_30000);
+
+ my $fileserver_options = "
+[lowercase]
+ path = $lower_case_share_dir
+ comment = smb username is [%U]
+ case sensitive = True
+ default case = lower
+ preserve case = no
+ short preserve case = no
+[lowercase-30000]
+ path = $lower_case_share_dir_30000
+ comment = smb username is [%U]
+ case sensitive = True
+ default case = lower
+ preserve case = no
+ short preserve case = no
+ ";
+
+ my $vars = $self->provision($path,
+ "FILESERVER",
+ "fileserver_secret",
+ $fileserver_options,
+ undef,
+ undef,
+ 1);
+
+ $vars or return undef;
+
+ if (not $self->check_or_start($vars, "yes", "no", "yes")) {
+ return undef;
+ }
+
+ $self->{vars}->{fileserver} = $vars;
+
+ mkdir($_, 0777) foreach(@dirs);
+
+ ## Create case sensitive lower case share dir
+ foreach my $file ('a'..'z') {
+ my $full_path = $lower_case_share_dir . '/' . $file;
+ open my $fh, '>', $full_path;
+ # Add some content to file
+ print $fh $full_path;
+ close $fh;
+ }
+
+ for (my $file = 1; $file < 51; ++$file) {
+ my $full_path = $lower_case_share_dir . '/' . $file;
+ open my $fh, '>', $full_path;
+ # Add some content to file
+ print $fh $full_path;
+ close $fh;
+ }
+
+ # Create content for 30000 share
+ foreach my $file ('a'..'z') {
+ my $full_path = $lower_case_share_dir_30000 . '/' . $file;
+ open my $fh, '>', $full_path;
+ # Add some content to file
+ print $fh $full_path;
+ close $fh;
+ }
+
+ for (my $file = 1; $file < 30001; ++$file) {
+ my $full_path = $lower_case_share_dir_30000 . '/' . $file;
+ open my $fh, '>', $full_path;
+ # Add some content to file
+ print $fh $full_path;
+ close $fh;
+ }
+
+ return $vars;
+}
+
sub setup_ktest($$$)
{
my ($self, $prefix) = @_;
diff --git a/source3/libsmb/namequery.c b/source3/libsmb/namequery.c
index 5e48474..7eb5dff 100644
--- a/source3/libsmb/namequery.c
+++ b/source3/libsmb/namequery.c
@@ -2478,6 +2478,13 @@ static NTSTATUS resolve_ads(const char *name,
return status;
}
+ if (numdcs == 0) {
+ *return_iplist = NULL;
+ *return_count = 0;
+ talloc_destroy(ctx);
+ return NT_STATUS_OK;
+ }
+
for (i=0;i<numdcs;i++) {
if (!dcs[i].ss_s) {
numaddrs += 1;
diff --git a/source3/modules/vfs_default.c b/source3/modules/vfs_default.c
index 9b434a0..6982634 100644
--- a/source3/modules/vfs_default.c
+++ b/source3/modules/vfs_default.c
@@ -1395,7 +1395,7 @@ static NTSTATUS vfswrap_fsctl(struct vfs_handle_struct *handle,
struct vfs_cc_state {
off_t copied;
- uint8_t buf[65536];
+ uint8_t *buf;
};
static struct tevent_req *vfswrap_copy_chunk_send(struct vfs_handle_struct *handle,
@@ -1419,6 +1419,12 @@ static struct tevent_req *vfswrap_copy_chunk_send(struct vfs_handle_struct *hand
return NULL;
}
+ vfs_cc_state->buf = talloc_array(vfs_cc_state, uint8_t,
+ MIN(num, 8*1024*1024));
+ if (tevent_req_nomem(vfs_cc_state->buf, req)) {
+ return tevent_req_post(req, ev);
+ }
+
status = vfs_stat_fsp(src_fsp);
if (tevent_req_nterror(req, status)) {
return tevent_req_post(req, ev);
@@ -1444,7 +1450,7 @@ static struct tevent_req *vfswrap_copy_chunk_send(struct vfs_handle_struct *hand
struct lock_struct lck;
int saved_errno;
- off_t this_num = MIN(sizeof(vfs_cc_state->buf),
+ off_t this_num = MIN(talloc_array_length(vfs_cc_state->buf),
num - vfs_cc_state->copied);
if (src_fsp->op == NULL) {
diff --git a/source3/script/tests/test_preserve_case.sh b/source3/script/tests/test_preserve_case.sh
new file mode 100755
index 0000000..2e49b0c
--- /dev/null
+++ b/source3/script/tests/test_preserve_case.sh
@@ -0,0 +1,78 @@
+#!/bin/sh
+#
+# Blackbox test for share with preserve case options
+#
+# https://bugzilla.samba.org/show_bug.cgi?id=10650
+
+if [ $# -lt 6 ]; then
+cat <<EOF
+Usage: test_preserve_case.sh SERVER DOMAIN USERNAME PASSWORD PREFIX SMBCLIENT
+EOF
+exit 1;
+fi
+
+SERVER=$1
+DOMAIN=$2
+USERNAME=$3
+PASSWORD=$4
+PREFIX=$5
+smbclient=$6
+shift 6
+failed=0
+
+incdir=`dirname $0`/../../../testprogs/blackbox
+. $incdir/subunit.sh
+
+test_smbclient() {
+ name="$1"
+ share="$2"
+ cmd="$3"
+ shift
+ shift
+ subunit_start_test "$name"
+ output=$($VALGRIND $smbclient //$SERVER/$share -c "$cmd" $@ 2>&1)
+ status=$?
+ if [ x$status = x0 ]; then
+ subunit_pass_test "$name"
+ else
+ echo "$output" | subunit_fail_test "$name"
+ fi
+ return $status
+}
+
+PROTOCOL_LIST="NT1 SMB2 SMB3"
+SHARE="lowercase"
+
+for PROTOCOL in $PROTOCOL_LIST; do
+ test_smbclient "Test lowercase ls 1 ($PROTOCOL)" $SHARE "ls 1" -U$USERNAME%$PASSWORD -m$PROTOCOL || failed=`expr $failed + 1`
+ test_smbclient "Test lowercase get 1 ($PROTOCOL)" $SHARE "get 1 LOCAL_1" -U$USERNAME%$PASSWORD -m$PROTOCOL || failed=`expr $failed + 1`
+ rm -f LOCAL_1
+
+ test_smbclient "Test lowercase ls A ($PROTOCOL)" $SHARE "ls A" -U$USERNAME%$PASSWORD -m$PROTOCOL || failed=`expr $failed + 1`
+ test_smbclient "Test lowercase get A ($PROTOCOL)" $SHARE "get A LOCAL_A" -U$USERNAME%$PASSWORD -m$PROTOCOL || failed=`expr $failed + 1`
+ rm -f LOCAL_A
+
+ test_smbclient "Test lowercase ls z ($PROTOCOL)" $SHARE "ls z" -U$USERNAME%$PASSWORD -m$PROTOCOL || failed=`expr $failed + 1`
+ test_smbclient "Test lowercase get z ($PROTOCOL)" $SHARE "get z LOCAL_Z" -U$USERNAME%$PASSWORD -m$PROTOCOL || failed=`expr $failed + 1`
+ rm -f LOCAL_Z
+done
+
+SHARE="lowercase-30000"
+
+for PROTOCOL in $PROTOCOL_LIST; do
+ test_smbclient "Test lowercase ls 25839 ($PROTOCOL)" $SHARE "ls 25839" -U$USERNAME%$PASSWORD -m$PROTOCOL || failed=`expr $failed + 1`
+
+ test_smbclient "Test lowercase ls 1 ($PROTOCOL)" $SHARE "ls 1" -U$USERNAME%$PASSWORD -m$PROTOCOL || failed=`expr $failed + 1`
+ test_smbclient "Test lowercase get 1 ($PROTOCOL)" $SHARE "get 1 LOCAL_1" -U$USERNAME%$PASSWORD -m$PROTOCOL || failed=`expr $failed + 1`
+ rm -f LOCAL_1
+
+ test_smbclient "Test lowercase ls A ($PROTOCOL)" $SHARE "ls A" -U$USERNAME%$PASSWORD -m$PROTOCOL || failed=`expr $failed + 1`
+ test_smbclient "Test lowercase get A ($PROTOCOL)" $SHARE "get A LOCAL_A" -U$USERNAME%$PASSWORD -m$PROTOCOL || failed=`expr $failed + 1`
+ rm -f LOCAL_A
+
+ test_smbclient "Test lowercase ls z ($PROTOCOL)" $SHARE "ls z" -U$USERNAME%$PASSWORD -m$PROTOCOL || failed=`expr $failed + 1`
+ test_smbclient "Test lowercase get z ($PROTOCOL)" $SHARE "get z LOCAL_Z" -U$USERNAME%$PASSWORD -m$PROTOCOL || failed=`expr $failed + 1`
+ rm -f LOCAL_Z
+done
+
+exit $failed
diff --git a/source3/selftest/tests.py b/source3/selftest/tests.py
index 1e5bc71..1f6174c 100755
--- a/source3/selftest/tests.py
+++ b/source3/selftest/tests.py
@@ -174,6 +174,8 @@ for env in ["nt4_dc"]:
# encrypted
plantestsuite("samba3.blackbox.smbclient_s3.crypt (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_smbclient_s3.sh"), '$SERVER', '$SERVER_IP', '$DOMAIN', '$USERNAME', '$PASSWORD', '$USERID', '$LOCAL_PATH', '$PREFIX', smbclient3, wbinfo, net, configuration, "-e"])
+for env in ["fileserver"]:
+ plantestsuite("samba3.blackbox.preserve_case (%s)" % env, env, [os.path.join(samba3srcdir, "script/tests/test_preserve_case.sh"), '$SERVER', '$DOMAIN', '$USERNAME', '$PASSWORD', '$PREFIX', smbclient3])
#
# tar command tests
--
Samba Shared Repository
More information about the samba-cvs
mailing list