Fix more of the RAW-SEARCH test. Older info levels are
authorJeremy Allison <jra@samba.org>
Tue, 3 Nov 2009 19:19:24 +0000 (11:19 -0800)
committerJeremy Allison <jra@samba.org>
Tue, 3 Nov 2009 19:19:24 +0000 (11:19 -0800)
not 4 byte aligned (levels 1 - 3).
Jeremy.

source3/smbd/trans2.c

index bc7a38719db633a35907cd80274184008a78c08d..178c02a31cf780f919f07083e9fa83f89a05aa30 100644 (file)
@@ -1525,7 +1525,9 @@ static bool smbd_marshall_dir_entry(TALLOC_CTX *ctx,
        pad -= off;
        off += pad;
        /* initialize padding to 0 */
-       memset(pdata, 0, pad);
+       if (pad) {
+               memset(pdata, 0, pad);
+       }
        space_remaining -= pad;
 
        pdata += pad;
@@ -2159,13 +2161,18 @@ static bool get_lanman2_dir_entry(TALLOC_CTX *ctx,
                                struct ea_list *name_list)
 {
        bool resume_key = false;
-       const uint8_t align = 4;
+       uint8_t align = 4;
        const bool do_pad = true;
 
        if (requires_resume_key) {
                resume_key = true;
        }
 
+       if (info_level >= 1 && info_level <= 3) {
+               /* No alignment on earlier info levels. */
+               align = 1;
+       }
+
        return smbd_dirptr_lanman2_entry(ctx, conn, dirptr, flags2,
                                         path_mask, dirtype, info_level,
                                         resume_key, dont_descend, ask_sharemode,