From 4f28519223e99f650388e03be45e7d149119e087 Mon Sep 17 00:00:00 2001 From: Tal Aloni Date: Tue, 23 May 2017 10:57:42 +0300 Subject: [PATCH] Bugfix: SMB2 QUERY_DIRECTORY response buffer length sometimes exceeded the request's OutputBufferLength --- SMBLibrary/Server/SMB2/QueryDirectoryHelper.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/SMBLibrary/Server/SMB2/QueryDirectoryHelper.cs b/SMBLibrary/Server/SMB2/QueryDirectoryHelper.cs index c7f1cf0..7f34f12 100644 --- a/SMBLibrary/Server/SMB2/QueryDirectoryHelper.cs +++ b/SMBLibrary/Server/SMB2/QueryDirectoryHelper.cs @@ -78,10 +78,12 @@ namespace SMBLibrary.Server.SMB2 return new ErrorResponse(request.CommandName, NTStatus.STATUS_INVALID_PARAMETER); } - if (pageLength + fileInformation.Length <= request.OutputBufferLength) + int entryLength = fileInformation.Length; + if (pageLength + entryLength <= request.OutputBufferLength) { page.Add(fileInformation); - pageLength += fileInformation.Length; + int paddedLength = (int)Math.Ceiling((double)entryLength / 8) * 8; + pageLength += paddedLength; openSearch.EnumerationLocation = index + 1; } else