The branch, v4-8-test has been updated via 7f32430 python: Fix talloc frame use in make_simple_acl(). via 6121a6f s3: smbd: printing: Re-implement delete-on-close semantics for print files missing since 3.5.x. via e5ffffd s3: torture: Add DELETE-PRINT test. via 0e3d52f lib: Fix array size in audit_logging via fd83672 s4:ntvfs: Fix string copy of share_name via 15c13f7 lib:util: Fix size types in debug.c via 05dab79 lib:util: Fix parameter aliasing in tfork test via ca1aced s3:winbind: Fix uninitialzed variable warning via aa833e8 s3:passdb: Fix size of ascii_p16 via aff1261 s3:lib: Use memcpy() in escape_ldap_string() via 3ef6d6a s4:torture: Use strlcpy() in gen_name() via c16e479 lib:util: Fix string check in mkdir_p() via 3e42a24 s3-utils: fix format-truncation in smbpasswd via 23f19c8 s4-torture: fix format-truncation warning in smb2 session tests. via 1b420a2 s3-printing: fix format-truncation in print_queue_update() via 35de20b s3-winbindd: remove unused fill_domain_username() via c70a0d5 s3-winbindd: use fill_domain_username_talloc() in winbind. via c5f3606 s4-heimdal: Fix the format-truncation errors. via 2839bf2 s3: smbtorture: Add new SMB2-DIR-FSYNC test to show behavior of FSYNC on directories. via ce89931 s3: smbd: Fix SMB2-FLUSH against directories. from a7a51bd smbd: Flush dfree memcache on service reload
https://git.samba.org/?p=samba.git;a=shortlog;h=v4-8-test - Log ----------------------------------------------------------------- commit 7f32430cb99fdae882889b8dc460883dc1511906 Author: Jeremy Allison <j...@samba.org> Date: Thu Jun 14 14:08:36 2018 -0700 python: Fix talloc frame use in make_simple_acl(). BUG: https://bugzilla.samba.org/show_bug.cgi?id=13474 Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> This was fixed differently by commit 539f51f0dfbe4ce317a2978982fd0fc9a7fd6922 in master. Autobuild-User(v4-8-test): Karolin Seeger <ksee...@samba.org> Autobuild-Date(v4-8-test): Wed Jun 20 13:53:29 CEST 2018 on sn-devel-144 commit 6121a6fec193b28e04329a4fde4ea058b9b7cfec Author: Jeremy Allison <j...@samba.org> Date: Thu May 31 10:35:48 2018 -0700 s3: smbd: printing: Re-implement delete-on-close semantics for print files missing since 3.5.x. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13457 Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Andreas Schneider <a...@samba.org> Autobuild-User(master): Jeremy Allison <j...@samba.org> Autobuild-Date(master): Fri Jun 1 20:32:03 CEST 2018 on sn-devel-144 (cherry picked from commit 364175b359f018c8641359440fa07b0ea567b045) commit e5ffffddfe580698624c832ad9b2e32c93fd5974 Author: Jeremy Allison <j...@samba.org> Date: Thu May 31 10:18:21 2018 -0700 s3: torture: Add DELETE-PRINT test. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13457 Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Andreas Schneider <a...@samba.org> (cherry picked from commit 42f049858f2037aab5b2097036db3e0375fdbf30) commit 0e3d52f547805a2ee0ea5389ced05b5237fb0eac Author: Andreas Schneider <a...@samba.org> Date: Wed May 16 13:59:55 2018 +0200 lib: Fix array size in audit_logging ../lib/audit_logging/audit_logging.c: In function ‘json_add_timestamp’: ../lib/audit_logging/audit_logging.c:603:12: error: ‘%s’ directive output may be truncated writing up to 9 bytes into a region of size between 0 and 43 [-Werror=format-truncation=] "%s.%06ld%s", ^~ ../lib/audit_logging/audit_logging.c:606:3: tz); ~~ ../lib/audit_logging/audit_logging.c:600:2: note: ‘snprintf’ output between 8 and 70 bytes into a destination of size 50 snprintf( ^~~~~~~~~ timestamp, ~~~~~~~~~~ sizeof(timestamp), ~~~~~~~~~~~~~~~~~~ "%s.%06ld%s", ~~~~~~~~~~~~~ buffer, ~~~~~~~ tv.tv_usec, ~~~~~~~~~~~ tz); ~~~ BUG: https://bugzilla.samba.org/show_bug.cgi?id=13437 Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Guenther Deschner <g...@samba.org> (cherry picked from commit 8b7c8eb3907e2123acee67949e88c26072afc81a) commit fd836721cf2a3d4e08f7fa6486aa98c306a6f8cb Author: Andreas Schneider <a...@samba.org> Date: Tue May 15 17:55:22 2018 +0200 s4:ntvfs: Fix string copy of share_name ../source4/ntvfs/ipc/rap_server.c:70:3: error: ‘strncpy’ specified bound 13 equals destination size [-Werror=stringop-truncation] strncpy((char *)r->out.info[j].info1.share_name, ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ snames[i], ~~~~~~~~~~ sizeof(r->out.info[0].info1.share_name)); ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Guenther Deschner <g...@samba.org> (cherry picked from commit 609ef35c12900bbd5ecaa557f7b5d71b5784a103) commit 15c13f7372ca6c980d38a3be83225eb3cfd18f21 Author: Andreas Schneider <a...@samba.org> Date: Tue May 8 09:31:51 2018 +0200 lib:util: Fix size types in debug.c BUG: https://bugzilla.samba.org/show_bug.cgi?id=13437 Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Guenther Deschner <g...@samba.org> (cherry picked from commit fb6cd9c44ac6fcc9f6abe3b63fc742aeac42969a) commit 05dab794c2f15701f5ecb3909e4fa714b74c16c8 Author: Andreas Schneider <a...@samba.org> Date: Wed May 9 17:52:19 2018 +0200 lib:util: Fix parameter aliasing in tfork test ../lib/util/tests/tfork.c:483:24: error: passing argument 1 to restrict-qualified parameter aliases with argument 4 [-Werror=restrict] ret = pthread_create(&threads[i], ^~~~~~~~~~~ ../lib/util/tests/tfork.c:486:10: (void *)&threads[i]); ~~~~~~~~~~~~~~~~~~~ BUG: https://bugzilla.samba.org/show_bug.cgi?id=13437 Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Guenther Deschner <g...@samba.org> (cherry picked from commit 6f06a0154f5769cb85f6e189eecd78cd7805090a) commit ca1acededa6905927c7768e1a33bee5358013ebe Author: Andreas Schneider <a...@samba.org> Date: Wed May 9 18:07:47 2018 +0200 s3:winbind: Fix uninitialzed variable warning Raised by GCC8. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13437 Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Guenther Deschner <g...@samba.org> (cherry picked from commit 6b728b87bf5726f14100d76956c3df3fd9bb1058) commit aa833e8b00cf5ce0b363328a20f42390e0ea63d1 Author: Andreas Schneider <a...@samba.org> Date: Wed May 9 18:05:01 2018 +0200 s3:passdb: Fix size of ascii_p16 ../source3/passdb/pdb_smbpasswd.c: In function ‘mod_smbfilepwd_entry’: ../source3/passdb/pdb_smbpasswd.c:1015:7: error: ‘:LCT-’ directive output may be truncated writing 5 bytes into a region of size between 0 and 255 [-Werror=format-truncat ion=] "%s:LCT-%08X:", ^~~~~ ../source3/passdb/pdb_smbpasswd.c:1015:4: note: using the range [0, 4294967295] for directive argument "%s:LCT-%08X:", ^~~~~~~~~~~~~~ In file included from ../source3/include/includes.h:23, from ../source3/passdb/pdb_smbpasswd.c:23: ../lib/replace/../replace/replace.h:514:18: note: ‘snprintf’ output between 15 and 270 bytes into a destination of size 255 #define slprintf snprintf ../source3/passdb/pdb_smbpasswd.c:1013:3: note: in expansion of macro ‘slprintf’ slprintf(&ascii_p16[strlen(ascii_p16)], ^~~~~~~~ BUG: https://bugzilla.samba.org/show_bug.cgi?id=13437 Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Guenther Deschner <g...@samba.org> (cherry picked from commit 728297ca889b39ce2006778bf6a5bf1c3ce82d6d) commit aff126166a1539504e0d471b890f28d21f649648 Author: Andreas Schneider <a...@samba.org> Date: Wed May 9 17:29:39 2018 +0200 s3:lib: Use memcpy() in escape_ldap_string() ../source3/lib/ldap_escape.c: In function ‘escape_ldap_string’: ../source3/lib/ldap_escape.c:79:4: error: ‘strncpy’ output truncated before terminating nul copying 3 bytes from a string of the same length [-Werror=stringop-truncation] strncpy (p, sub, 3); ^~~~~~~~~~~~~~~~~~~ We concatenat and do not care about NUL-termination till the loop has finished. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13437 Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Guenther Deschner <g...@samba.org> (cherry picked from commit ff7568daaeb19ff30f47f7f600ead247eaf4e826) commit 3ef6d6ab6dc1d8f220d0d9e3c8e47af682f3e115 Author: Andreas Schneider <a...@samba.org> Date: Wed May 9 17:35:45 2018 +0200 s4:torture: Use strlcpy() in gen_name() ../source4/torture/basic/mangle_test.c: In function ‘gen_name’: ../source4/torture/basic/mangle_test.c:148:3: error: ‘strncpy’ output truncated before terminating nul copying 5 bytes from a string of the same length [-Werror=stringop-truncation] strncpy(p, "ABCDE", 5); ^~~~~~~~~~~~~~~~~~~~~~ BUG: https://bugzilla.samba.org/show_bug.cgi?id=13437 Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Guenther Deschner <g...@samba.org> (cherry picked from commit 7a00d90d668f53914ffe035c41a5e79e60b51521) commit c16e479f49f5bf010f61a923435ca16393747340 Author: Andreas Schneider <a...@samba.org> Date: Tue May 8 09:22:00 2018 +0200 lib:util: Fix string check in mkdir_p() BUG: https://bugzilla.samba.org/show_bug.cgi?id=13437 Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Guenther Deschner <g...@samba.org> (cherry picked from commit 7cec343a89a0862c09f5ddd4707eb442157a4af2) commit 3e42a24ce882a90b3a5d567c47870f53d8e5f265 Author: Günther Deschner <g...@samba.org> Date: Tue May 8 14:13:56 2018 +0200 s3-utils: fix format-truncation in smbpasswd ../source3/utils/smbpasswd.c: In function ‘process_root’: ../source3/utils/smbpasswd.c:414:37: error: ‘$’ directive output may be truncated writing 1 byte into a region of size between 0 and 255 [-Werror=format-truncation=] slprintf(buf, sizeof(buf) - 1, "%s$", user_name); ^ In file included from ../source3/include/includes.h:23, from ../source3/utils/smbpasswd.c:19: ../lib/replace/../replace/replace.h:514:18: note: ‘snprintf’ output between 2 and 257 bytes into a destination of size 255 #define slprintf snprintf ../source3/utils/smbpasswd.c:414:3: note: in expansion of macro ‘slprintf’ slprintf(buf, sizeof(buf) - 1, "%s$", user_name); ^~~~~~~~ ../source3/utils/smbpasswd.c:397:35: error: ‘$’ directive output may be truncated writing 1 byte into a region of size between 0 and 255 [-Werror=format-truncation=] slprintf(buf, sizeof(buf)-1, "%s$", user_name); ^ In file included from ../source3/include/includes.h:23, from ../source3/utils/smbpasswd.c:19: ../lib/replace/../replace/replace.h:514:18: note: ‘snprintf’ output between 2 and 257 bytes into a destination of size 255 #define slprintf snprintf ../source3/utils/smbpasswd.c:397:3: note: in expansion of macro ‘slprintf’ slprintf(buf, sizeof(buf)-1, "%s$", user_name); ^~~~~~~~ cc1: some warnings being treated as errors BUG: https://bugzilla.samba.org/show_bug.cgi?id=13437 Pair-Programmed-With: Andreas Schneider <a...@samba.org> Signed-off-by: Guenther Deschner <g...@samba.org> Signed-off-by: Andreas Schneider <a...@samba.org> (cherry picked from commit 9b6dc8f504c406ed8a044e5becca7e8f01da6c84) commit 23f19c835e018b85918c0302407da114e9738e31 Author: Günther Deschner <g...@samba.org> Date: Tue May 8 13:54:53 2018 +0200 s4-torture: fix format-truncation warning in smb2 session tests. ../source4/torture/smb2/session.c: In function ‘test_session_reauth5’: ../source4/torture/smb2/session.c:645:36: error: ‘\file.dat’ directive output may be truncated writing 9 bytes into a region of size between 1 and 256 [-Werror=format-truncation=] snprintf(fname, sizeof(fname), "%s\\file.dat", dname); ^~~~~~~~~~ ../source4/torture/smb2/session.c:645:2: note: ‘snprintf’ output between 10 and 265 bytes into a destination of size 256 snprintf(fname, sizeof(fname), "%s\\file.dat", dname); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../source4/torture/smb2/session.c:696:38: error: ‘\file2.dat’ directive output may be truncated writing 10 bytes into a region of size between 1 and 256 [-Werror=format-truncation=] snprintf(fname2, sizeof(fname2), "%s\\file2.dat", dname); ^~~~~~~~~~~ ../source4/torture/smb2/session.c:696:2: note: ‘snprintf’ output between 11 and 266 bytes into a destination of size 256 snprintf(fname2, sizeof(fname2), "%s\\file2.dat", dname); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ cc1: some warnings being treated as errors BUG: https://bugzilla.samba.org/show_bug.cgi?id=13437 Guenther Signed-off-by: Guenther Deschner <g...@samba.org> Reviewed-by: Andreas Schneider <a...@samba.org> (cherry picked from commit 5729898248041794ffdd0b769332e015baf12cce) commit 1b420a212e38760d801449932d1905cd74f98979 Author: Günther Deschner <g...@samba.org> Date: Tue May 8 13:46:11 2018 +0200 s3-printing: fix format-truncation in print_queue_update() ../source3/printing/printing.c: In function ‘print_queue_update’: ../source3/printing/printing.c:1809:42: error: ‘%s’ directive output may be truncated writing up to 255 bytes into a region of size 244 [-Werror=format-truncation=] snprintf(key, sizeof(key), "MSG_PENDING/%s", sharename); ^~ ~~~~~~~~~ ../source3/printing/printing.c:1809:2: note: ‘snprintf’ output between 13 and 268 bytes into a destination of size 256 snprintf(key, sizeof(key), "MSG_PENDING/%s", sharename); BUG: https://bugzilla.samba.org/show_bug.cgi?id=13437 Guenther Signed-off-by: Guenther Deschner <g...@samba.org> Reviewed-by: Andreas Schneider <a...@samba.org> (cherry picked from commit 6326b3415f3e225aafd5912d0965c80abcd7b22c) commit 35de20bd3c7f5f4e73dda5070da05b0d081c3090 Author: Günther Deschner <g...@samba.org> Date: Tue May 8 11:19:42 2018 +0200 s3-winbindd: remove unused fill_domain_username() BUG: https://bugzilla.samba.org/show_bug.cgi?id=13437 Guenther Signed-off-by: Guenther Deschner <g...@samba.org> Reviewed-by: Andreas Schneider <a...@samba.org> (cherry picked from commit b24d4eb7afad82afc3a9bab65e1d799edc4b5172) commit c70a0d52afbfb600ce2c060379c66d3280b7d5fc Author: Günther Deschner <g...@samba.org> Date: Tue May 8 11:18:56 2018 +0200 s3-winbindd: use fill_domain_username_talloc() in winbind. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13437 Guenther Signed-off-by: Guenther Deschner <g...@samba.org> Reviewed-by: Andreas Schneider <a...@samba.org> (cherry picked from commit 3c6481d75cea175d0a69988577163efb40e2316b) commit c5f3606ca2574fc4e16b51eb857aafd8912f12a2 Author: Günther Deschner <g...@samba.org> Date: Wed May 30 09:27:49 2018 +0200 s4-heimdal: Fix the format-truncation errors. ../source4/heimdal/lib/com_err/compile_et.c: In function ‘generate_h’: ../source4/heimdal/lib/com_err/compile_et.c:138:33: error: ‘%s’ directive output may be truncated writing up to 127 bytes into a region of size 126 [-Werror=format-truncation=] snprintf(fn, sizeof(fn), "__%s__", hfn); ^~ ~~~ ../source4/heimdal/lib/com_err/compile_et.c:138:5: note: ‘snprintf’ output between 5 and 132 bytes into a destination of size 128 snprintf(fn, sizeof(fn), "__%s__", hfn); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../source4/heimdal/lib/com_err/compile_et.c: In function ‘main’: ../source4/heimdal/lib/com_err/compile_et.c:234:35: error: ‘.h’ directive output may be truncated writing 2 bytes into a region of size between 1 and 128 [-Werror=format-truncation=] snprintf(hfn, sizeof(hfn), "%s.h", Basename); ^~ ../source4/heimdal/lib/com_err/compile_et.c:234:5: note: ‘snprintf’ output between 3 and 130 bytes into a destination of size 128 snprintf(hfn, sizeof(hfn), "%s.h", Basename); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ../source4/heimdal/lib/com_err/compile_et.c:235:35: error: ‘.c’ directive output may be truncated writing 2 bytes into a region of size between 1 and 128 [-Werror=format-truncation=] snprintf(cfn, sizeof(cfn), "%s.c", Basename); ^~ ../source4/heimdal/lib/com_err/compile_et.c:235:5: note: ‘snprintf’ output between 3 and 130 bytes into a destination of size 128 snprintf(cfn, sizeof(cfn), "%s.c", Basename); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ cc1: some warnings being treated as errors BUG: https://bugzilla.samba.org/show_bug.cgi?id=13437 Guenther Signed-off-by: Günther Deschner <g...@samba.org> Reviewed-by: Andreas Schneider <a...@samba.org> Autobuild-User(master): Andreas Schneider <a...@cryptomilk.org> Autobuild-Date(master): Fri Jun 8 13:23:51 CEST 2018 on sn-devel-144 commit 2839bf2ea38a63bebae88611a5766c9d0351d8d3 Author: Jeremy Allison <j...@samba.org> Date: Thu May 10 11:30:24 2018 -0700 s3: smbtorture: Add new SMB2-DIR-FSYNC test to show behavior of FSYNC on directories. Tests against a directory handle on the root of a share, and a directory handle on a sub-directory in a share. Check SEC_DIR_ADD_FILE and SEC_DIR_ADD_SUBDIR separately, either allows flush to succeed. Passes against Windows. Regression test for: BUG: https://bugzilla.samba.org/show_bug.cgi?id=13428 Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> Autobuild-User(master): Jeremy Allison <j...@samba.org> Autobuild-Date(master): Fri May 18 02:38:50 CEST 2018 on sn-devel-144 (cherry picked from commit d42f467a25e75e5487a00378609a24809ddc83ee) commit ce89931796ff0fc52c16b8d9595f83e10e1e80dd Author: Jeremy Allison <j...@samba.org> Date: Thu May 10 10:26:52 2018 -0700 s3: smbd: Fix SMB2-FLUSH against directories. Directories opened with either FILE_ADD_FILE or FILE_ADD_SUBDIRECTORY can be flushed even if they're not writable in the conventional sense. BUG: https://bugzilla.samba.org/show_bug.cgi?id=13428 Signed-off-by: Jeremy Allison <j...@samba.org> Reviewed-by: Ralph Boehme <s...@samba.org> (cherry picked from commit 42aadf42f27053e621f2a6b72448afebb3f5082a) ----------------------------------------------------------------------- Summary of changes: auth/auth_log.c | 2 +- lib/util/debug.c | 14 +- lib/util/mkdir_p.c | 4 +- lib/util/tests/tfork.c | 7 +- selftest/knownfail | 1 + source3/lib/ldap_escape.c | 2 +- source3/passdb/pdb_smbpasswd.c | 2 +- source3/printing/printing.c | 2 +- source3/printing/printspoolss.c | 17 ++ source3/script/tests/test_smbspool.sh | 63 ++++++++ source3/selftest/tests.py | 2 +- source3/smbd/pysmbd.c | 49 +++--- source3/smbd/smb2_flush.c | 26 ++- source3/torture/proto.h | 1 + source3/torture/test_smb2.c | 270 +++++++++++++++++++++++++++++++ source3/torture/torture.c | 74 +++++++++ source3/utils/smbpasswd.c | 49 +++--- source3/winbindd/wb_getpwsid.c | 15 +- source3/winbindd/wb_query_user_list.c | 9 +- source3/winbindd/winbindd_group.c | 12 +- source3/winbindd/winbindd_list_groups.c | 14 +- source3/winbindd/winbindd_pam.c | 13 +- source3/winbindd/winbindd_proto.h | 1 - source3/winbindd/winbindd_util.c | 20 --- source4/heimdal/lib/com_err/compile_et.c | 6 +- source4/ntvfs/ipc/rap_server.c | 9 +- source4/torture/basic/mangle_test.c | 2 +- source4/torture/smb2/session.c | 2 +- 28 files changed, 576 insertions(+), 112 deletions(-) Changeset truncated at 500 lines: diff --git a/auth/auth_log.c b/auth/auth_log.c index d4c6c44..72d8f81 100644 --- a/auth/auth_log.c +++ b/auth/auth_log.c @@ -350,7 +350,7 @@ static void add_version(struct json_context *context, int major, int minor) static void add_timestamp(struct json_context *context) { char buffer[40]; /* formatted time less usec and timezone */ - char timestamp[50]; /* the formatted ISO 8601 time stamp */ + char timestamp[65]; /* the formatted ISO 8601 time stamp */ char tz[10]; /* formatted time zone */ struct tm* tm_info; /* current local time */ struct timeval tv; /* current system time */ diff --git a/lib/util/debug.c b/lib/util/debug.c index d010b72..b58303e 100644 --- a/lib/util/debug.c +++ b/lib/util/debug.c @@ -480,8 +480,8 @@ static void debug_set_backends(const char *param) static void debug_backends_log(const char *msg, int msg_level) { char msg_no_nl[FORMAT_BUFR_SIZE]; - unsigned i; - int len; + size_t i; + size_t len; /* * Some backends already add an extra newline, so also provide @@ -551,7 +551,7 @@ static const char *default_classname_table[] = { */ static const int debug_class_list_initial[ARRAY_SIZE(default_classname_table)]; -static int debug_num_classes = 0; +static size_t debug_num_classes = 0; int *DEBUGLEVEL_CLASS = discard_const_p(int, debug_class_list_initial); @@ -630,7 +630,7 @@ utility lists registered debug class names's char *debug_list_class_names_and_levels(void) { char *buf = NULL; - int i; + size_t i; /* prepare strings */ for (i = 0; i < debug_num_classes; i++) { buf = talloc_asprintf_append(buf, @@ -651,7 +651,7 @@ char *debug_list_class_names_and_levels(void) static int debug_lookup_classname_int(const char* classname) { - int i; + size_t i; if (!classname) return -1; @@ -741,7 +741,7 @@ static int debug_lookup_classname(const char *classname) static void debug_dump_status(int level) { - int q; + size_t q; DEBUG(level, ("INFO: Current debug levels:\n")); for (q = 0; q < debug_num_classes; q++) { @@ -790,7 +790,7 @@ bool debug_parse_levels(const char *params_str) size_t str_len = strlen(params_str); char str[str_len+1]; char *tok, *saveptr; - int i; + size_t i; /* Just in case */ debug_init(); diff --git a/lib/util/mkdir_p.c b/lib/util/mkdir_p.c index 290a1f3..87a3f79 100644 --- a/lib/util/mkdir_p.c +++ b/lib/util/mkdir_p.c @@ -49,11 +49,11 @@ int mkdir_p(const char *dir, int mode) /* Create ancestors */ len = strlen(dir); - if (len >= PATH_MAX) { + ret = snprintf(t, sizeof(t), "%s", dir); + if (ret != len) { errno = ENAMETOOLONG; return -1; } - strncpy(t, dir, len+1); ret = mkdir_p(dirname(t), mode); if (ret != 0) { diff --git a/lib/util/tests/tfork.c b/lib/util/tests/tfork.c index 9bcdc2f..3c73355 100644 --- a/lib/util/tests/tfork.c +++ b/lib/util/tests/tfork.c @@ -417,8 +417,7 @@ static void *tfork_thread(void *p) struct tfork *t = NULL; int status; pid_t child; - pthread_t *ptid = (pthread_t *)p; - uint64_t tid; + uint64_t tid = (uint64_t)pthread_self(); uint64_t *result = NULL; int up[2]; ssize_t nread; @@ -429,8 +428,6 @@ static void *tfork_thread(void *p) pthread_exit(NULL); } - tid = (uint64_t)*ptid; - t = tfork_create(); if (t == NULL) { pthread_exit(NULL); @@ -480,7 +477,7 @@ static bool test_tfork_threads(struct torture_context *tctx) #endif for (i = 0; i < num_threads; i++) { - ret = pthread_create(&threads[i], NULL, tfork_thread, &threads[i]); + ret = pthread_create(&threads[i], NULL, tfork_thread, NULL); torture_assert_goto(tctx, ret == 0, ok, done, "pthread_create failed\n"); } diff --git a/selftest/knownfail b/selftest/knownfail index 710fd33..eaddaec 100644 --- a/selftest/knownfail +++ b/selftest/knownfail @@ -8,6 +8,7 @@ .*driver.add_driver_timestamps # we only can store dates, not timestamps ^samba3.smbtorture_s3.crypt_server\(nt4_dc\).SMB2-SESSION-REAUTH # expected to give ACCESS_DENIED SMB2.1 doesn't have encryption ^samba3.smbtorture_s3.crypt_server\(nt4_dc\).SMB2-SESSION-RECONNECT # expected to give CONNECTION_DISCONNECTED, we need to fix the test +^samba3.smbtorture_s3.*ad_dc_ntvfs.*SMB2-DIR-FSYNC.* ^samba3.smb2.session enc.reconnect # expected to give CONNECTION_DISCONNECTED, we need to fix the test ^samba3.raw.session enc # expected to give ACCESS_DENIED as SMB1 encryption isn't used ^samba3.smbtorture_s3.crypt_server # expected to give ACCESS_DENIED as SMB1 encryption isn't used diff --git a/source3/lib/ldap_escape.c b/source3/lib/ldap_escape.c index fa75dab..0d2b8f5 100644 --- a/source3/lib/ldap_escape.c +++ b/source3/lib/ldap_escape.c @@ -76,7 +76,7 @@ char *escape_ldap_string(TALLOC_CTX *mem_ctx, const char *s) output = tmp; p = &output[i]; - strncpy (p, sub, 3); + memcpy(p, sub, 3); p += 3; i += 3; diff --git a/source3/passdb/pdb_smbpasswd.c b/source3/passdb/pdb_smbpasswd.c index 9c38147..ec184ca 100644 --- a/source3/passdb/pdb_smbpasswd.c +++ b/source3/passdb/pdb_smbpasswd.c @@ -741,7 +741,7 @@ static bool mod_smbfilepwd_entry(struct smbpasswd_privates *smbpasswd_state, con char linebuf[LINEBUF_SIZE + 1]; char readbuf[1024]; int c; - fstring ascii_p16; + char ascii_p16[FSTRING_LEN + 20]; fstring encode_bits; unsigned char *p = NULL; size_t linebuf_len = 0; diff --git a/source3/printing/printing.c b/source3/printing/printing.c index e4bb1d8..38d7180 100644 --- a/source3/printing/printing.c +++ b/source3/printing/printing.c @@ -1693,7 +1693,7 @@ extern pid_t background_lpq_updater_pid; static void print_queue_update(struct messaging_context *msg_ctx, int snum, bool force) { - fstring key; + char key[268]; fstring sharename; char *lpqcommand = NULL; char *lprmcommand = NULL; diff --git a/source3/printing/printspoolss.c b/source3/printing/printspoolss.c index 6000202..9d565de 100644 --- a/source3/printing/printspoolss.c +++ b/source3/printing/printspoolss.c @@ -309,6 +309,23 @@ void print_spool_end(files_struct *fsp, enum file_close_type close_type) WERROR werr; struct dcerpc_binding_handle *b = NULL; + if (fsp->fh->private_options & + NTCREATEX_OPTIONS_PRIVATE_DELETE_ON_CLOSE) { + int ret; + + /* + * Job was requested to be cancelled by setting + * delete on close so truncate the job file. + * print_job_end() which is called from + * _spoolss_EndDocPrinter() will take + * care of deleting it for us. + */ + ret = ftruncate(fsp->fh->fd, 0); + if (ret == -1) { + DBG_ERR("ftruncate failed: %s\n", strerror(errno)); + } + } + b = fsp->conn->spoolss_pipe->binding_handle; switch (close_type) { diff --git a/source3/script/tests/test_smbspool.sh b/source3/script/tests/test_smbspool.sh index 899b34d..d95ed06 100755 --- a/source3/script/tests/test_smbspool.sh +++ b/source3/script/tests/test_smbspool.sh @@ -22,6 +22,7 @@ incdir=`dirname $0`/../../../testprogs/blackbox samba_bindir="$BINDIR" samba_vlp="$samba_bindir/vlp" samba_smbspool="$samba_bindir/smbspool" +samba_smbtorture3="$samba_bindir/smbtorture3" samba_smbspool_krb5="$samba_bindir/smbspool_krb5_wrapper" test_smbspool_noargs() @@ -119,6 +120,64 @@ test_vlp_verify() fi } +test_delete_on_close() +{ + tdbfile="$PREFIX_ABS/$TARGET_ENV/lockdir/vlp.tdb" + if [ ! -w $tdbfile ]; then + echo "vlp tdbfile $tdbfile doesn't exist or is not writeable!" + return 1 + fi + + cmd='$samba_vlp tdbfile=$tdbfile lpq print1 2>&1' + eval echo "$cmd" + out=$(eval $cmd) + ret=$? + if [ $ret != 0 ]; then + echo "failed to lpq jobs on print1 with $samba_vlp" + echo "$out" + return 1 + fi + + num_jobs=$(echo "$out" | wc -l) + # + # Now run the test DELETE-PRINT from smbtorture3 + # + cmd='$samba_smbtorture3 //$SERVER_IP/print1 -U$USERNAME%$PASSWORD DELETE-PRINT 2>&1' + eval echo "$cmd" + out_t=$(eval $cmd) + ret=$? + if [ $ret != 0 ]; then + echo "failed to run DELETE-PRINT on print1" + echo "$out_t" + return 1 + fi + + cmd='$samba_vlp tdbfile=$tdbfile lpq print1 2>&1' + eval echo "$cmd" + out1=$(eval $cmd) + ret=$? + if [ $ret != 0 ]; then + echo "(2) failed to lpq jobs on print1 with $samba_vlp" + echo "$out1" + return 1 + fi + num_jobs1=$(echo "$out1" | wc -l) + + # + # Number of jobs should not change. Job + # should not have made it to backend. + # + if [ "$num_jobs1" -ne "$num_jobs" ]; then + echo "delete-on-close fail $num_jobs1 -ne $num_jobs" + echo "$out" + echo "$out_t" + echo "$out1" + return 1 + fi + + return 0 +} + testit "smbspool no args" \ test_smbspool_noargs $samba_smbspool || \ failed=$(expr $failed + 1) @@ -180,4 +239,8 @@ testit "vlp verify example.ps" \ failed=$(expr $failed + 1) unset AUTH_INFO_REQUIRED +testit "delete on close" \ + test_delete_on_close \ + || failed=$(expr $failed + 1) + exit $failed diff --git a/source3/selftest/tests.py b/source3/selftest/tests.py index ac21284..f43d2b1 100755 --- a/source3/selftest/tests.py +++ b/source3/selftest/tests.py @@ -78,7 +78,7 @@ tests = ["FDPASS", "LOCK1", "LOCK2", "LOCK3", "LOCK4", "LOCK5", "LOCK6", "LOCK7" "UID-REGRESSION-TEST", "SHORTNAME-TEST", "CASE-INSENSITIVE-CREATE", "SMB2-BASIC", "NTTRANS-FSCTL", "SMB2-NEGPROT", "SMB2-SESSION-REAUTH", "SMB2-SESSION-RECONNECT", "SMB2-FTRUNCATE", - "SMB2-ANONYMOUS", + "SMB2-ANONYMOUS", "SMB2-DIR-FSYNC", "CLEANUP1", "CLEANUP2", "CLEANUP4", diff --git a/source3/smbd/pysmbd.c b/source3/smbd/pysmbd.c index be30b86..41b44ad 100644 --- a/source3/smbd/pysmbd.c +++ b/source3/smbd/pysmbd.c @@ -268,101 +268,101 @@ static int set_acl_entry_perms(SMB_ACL_ENTRY_T entry, mode_t perm_mask) return 0; } -static SMB_ACL_T make_simple_acl(gid_t gid, mode_t chmod_mode) +static SMB_ACL_T make_simple_acl(TALLOC_CTX *mem_ctx, + gid_t gid, + mode_t chmod_mode) { - TALLOC_CTX *frame = talloc_stackframe(); - mode_t mode = SMB_ACL_READ|SMB_ACL_WRITE|SMB_ACL_EXECUTE; mode_t mode_user = (chmod_mode & 0700) >> 6; mode_t mode_group = (chmod_mode & 070) >> 3; mode_t mode_other = chmod_mode & 07; SMB_ACL_ENTRY_T entry; - SMB_ACL_T acl = sys_acl_init(frame); + SMB_ACL_T acl = sys_acl_init(mem_ctx); if (!acl) { return NULL; } if (sys_acl_create_entry(&acl, &entry) != 0) { - TALLOC_FREE(frame); + TALLOC_FREE(acl); return NULL; } if (sys_acl_set_tag_type(entry, SMB_ACL_USER_OBJ) != 0) { - TALLOC_FREE(frame); + TALLOC_FREE(acl); return NULL; } if (set_acl_entry_perms(entry, mode_user) != 0) { - TALLOC_FREE(frame); + TALLOC_FREE(acl); return NULL; } if (sys_acl_create_entry(&acl, &entry) != 0) { - TALLOC_FREE(frame); + TALLOC_FREE(acl); return NULL; } if (sys_acl_set_tag_type(entry, SMB_ACL_GROUP_OBJ) != 0) { - TALLOC_FREE(frame); + TALLOC_FREE(acl); return NULL; } if (set_acl_entry_perms(entry, mode_group) != 0) { - TALLOC_FREE(frame); + TALLOC_FREE(acl); return NULL; } if (sys_acl_create_entry(&acl, &entry) != 0) { - TALLOC_FREE(frame); + TALLOC_FREE(acl); return NULL; } if (sys_acl_set_tag_type(entry, SMB_ACL_OTHER) != 0) { - TALLOC_FREE(frame); + TALLOC_FREE(acl); return NULL; } if (set_acl_entry_perms(entry, mode_other) != 0) { - TALLOC_FREE(frame); + TALLOC_FREE(acl); return NULL; } if (gid != -1) { if (sys_acl_create_entry(&acl, &entry) != 0) { - TALLOC_FREE(frame); + TALLOC_FREE(acl); return NULL; } if (sys_acl_set_tag_type(entry, SMB_ACL_GROUP) != 0) { - TALLOC_FREE(frame); + TALLOC_FREE(acl); return NULL; } if (sys_acl_set_qualifier(entry, &gid) != 0) { - TALLOC_FREE(frame); + TALLOC_FREE(acl); return NULL; } if (set_acl_entry_perms(entry, mode_group) != 0) { - TALLOC_FREE(frame); + TALLOC_FREE(acl); return NULL; } } if (sys_acl_create_entry(&acl, &entry) != 0) { - TALLOC_FREE(frame); + TALLOC_FREE(acl); return NULL; } if (sys_acl_set_tag_type(entry, SMB_ACL_MASK) != 0) { - TALLOC_FREE(frame); + TALLOC_FREE(acl); return NULL; } if (set_acl_entry_perms(entry, mode) != 0) { - TALLOC_FREE(frame); + TALLOC_FREE(acl); return NULL; } return acl; @@ -386,17 +386,20 @@ static PyObject *py_smbd_set_simple_acl(PyObject *self, PyObject *args, PyObject &fname, &mode, &gid, &service)) return NULL; - acl = make_simple_acl(gid, mode); - frame = talloc_stackframe(); + acl = make_simple_acl(frame, gid, mode); + if (acl == NULL) { + TALLOC_FREE(frame); + return NULL; + } + conn = get_conn(frame, service); if (!conn) { return NULL; } ret = set_sys_acl_conn(fname, SMB_ACL_TYPE_ACCESS, acl, conn); - TALLOC_FREE(acl); if (ret != 0) { TALLOC_FREE(frame); diff --git a/source3/smbd/smb2_flush.c b/source3/smbd/smb2_flush.c index d1ab3a0..ef9b7fd 100644 --- a/source3/smbd/smb2_flush.c +++ b/source3/smbd/smb2_flush.c @@ -23,6 +23,7 @@ #include "smbd/globals.h" #include "../libcli/smb/smb_common.h" #include "../lib/util/tevent_ntstatus.h" +#include "libcli/security/security.h" #undef DBGC_CLASS #define DBGC_CLASS DBGC_SMB2 @@ -147,8 +148,29 @@ static struct tevent_req *smbd_smb2_flush_send(TALLOC_CTX *mem_ctx, } if (!CHECK_WRITE(fsp)) { - tevent_req_nterror(req, NT_STATUS_ACCESS_DENIED); - return tevent_req_post(req, ev); + bool allow_dir_flush = false; + uint32_t flush_access = FILE_ADD_FILE | FILE_ADD_SUBDIRECTORY; + + if (!fsp->is_directory) { + tevent_req_nterror(req, NT_STATUS_ACCESS_DENIED); + return tevent_req_post(req, ev); + } + + /* + * Directories are not writable in the conventional + * sense, but if opened with *either* + * FILE_ADD_FILE or FILE_ADD_SUBDIRECTORY + * they can be flushed. + */ + + if ((fsp->access_mask & flush_access) != 0) { + allow_dir_flush = true; + } + + if (allow_dir_flush == false) { + tevent_req_nterror(req, NT_STATUS_ACCESS_DENIED); + return tevent_req_post(req, ev); + } } if (fsp->fh->fd == -1) { diff --git a/source3/torture/proto.h b/source3/torture/proto.h index 45870c9..1634da4 100644 --- a/source3/torture/proto.h +++ b/source3/torture/proto.h @@ -101,6 +101,7 @@ bool run_smb2_tcon_dependence(int dummy); -- Samba Shared Repository