s3/smbd: sticky write time offset miscalculation causes broken timestamps
authorRalph Boehme <slow@samba.org>
Fri, 8 Sep 2017 10:19:03 +0000 (12:19 +0200)
committerRalph Boehme <slow@samba.org>
Tue, 12 Sep 2017 00:45:46 +0000 (02:45 +0200)
The offset calculation for the offset that got passed to
fetch_write_time_send() in the enumeration loop was wrong as it passed
the offset before smbd_dirptr_lanman2_entry() added required padding.

This resulted in broken timestamps in the find response.

Bug: https://bugzilla.samba.org/show_bug.cgi?id=13024

Signed-off-by: Ralph Boehme <slow@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
Autobuild-User(master): Ralph B√∂hme <slow@samba.org>
Autobuild-Date(master): Tue Sep 12 02:45:46 CEST 2017 on sn-devel-144

source3/smbd/smb2_query_directory.c

index 3e0abdf770af37c0a2797713895e1e2aa3990ec9..430fdca90de6c90c8207ea0c8dd0bb98ba4ab353 100644 (file)
@@ -501,7 +501,6 @@ static struct tevent_req *smbd_smb2_query_directory_send(TALLOC_CTX *mem_ctx,
        while (true) {
                bool got_exact_match = false;
                int space_remaining = in_output_buffer_length - off;
-               int cur_off = off;
                struct file_id file_id;
                bool stop = false;
 
@@ -556,7 +555,7 @@ static struct tevent_req *smbd_smb2_query_directory_send(TALLOC_CTX *mem_ctx,
                                                       conn,
                                                       file_id,
                                                       info_level,
-                                                      base_data + cur_off,
+                                                      base_data + last_entry_off,
                                                       &stop);
                        if (tevent_req_nomem(subreq, req)) {
                                return tevent_req_post(req, ev);