From 6a61befe3798ecf0996887164f7437c3f25c33f9 Mon Sep 17 00:00:00 2001 From: Jeremy Allison Date: Tue, 3 Nov 2009 11:19:24 -0800 Subject: [PATCH] Fix more of the RAW-SEARCH test. Older info levels are not 4 byte aligned (levels 1 - 3). Jeremy. --- source3/smbd/trans2.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c index bc7a38719db..178c02a31cf 100644 --- a/source3/smbd/trans2.c +++ b/source3/smbd/trans2.c @@ -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,