summaryrefslogtreecommitdiff
path: root/source3/smbd/trans2.c
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2009-11-03 11:19:24 -0800
committerJeremy Allison <jra@samba.org>2009-11-03 11:19:24 -0800
commit6a61befe3798ecf0996887164f7437c3f25c33f9 (patch)
tree86a2aea727ce1a9d0e94d6c113a14eb93b9d4d55 /source3/smbd/trans2.c
parent97a32035bec03b76b67cb7088a7be1b7b3b9ac48 (diff)
downloadsamba-6a61befe3798ecf0996887164f7437c3f25c33f9.tar.gz
samba-6a61befe3798ecf0996887164f7437c3f25c33f9.tar.bz2
samba-6a61befe3798ecf0996887164f7437c3f25c33f9.zip
Fix more of the RAW-SEARCH test. Older info levels are
not 4 byte aligned (levels 1 - 3). Jeremy.
Diffstat (limited to 'source3/smbd/trans2.c')
-rw-r--r--source3/smbd/trans2.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/source3/smbd/trans2.c b/source3/smbd/trans2.c
index bc7a38719d..178c02a31c 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,