svn commit: samba r18839 - in branches/SAMBA_4_0/source/smb_server: .

tridge at samba.org tridge at samba.org
Sat Sep 23 02:45:07 GMT 2006


Author: tridge
Date: 2006-09-23 02:45:06 +0000 (Sat, 23 Sep 2006)
New Revision: 18839

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=18839

Log:

align all directory search blobs on an 8 byte boundary to keep the
current vista release happy.

Modified:
   branches/SAMBA_4_0/source/smb_server/blob.c


Changeset:
Modified: branches/SAMBA_4_0/source/smb_server/blob.c
===================================================================
--- branches/SAMBA_4_0/source/smb_server/blob.c	2006-09-23 02:32:47 UTC (rev 18838)
+++ branches/SAMBA_4_0/source/smb_server/blob.c	2006-09-23 02:45:06 UTC (rev 18839)
@@ -38,6 +38,15 @@
 	} \
 } while (0)
 
+
+/* align the end of the blob on an 8 byte boundary */
+#define BLOB_ALIGN(blob, alignment) do { \
+	if ((blob)->length & ((alignment)-1)) { \
+		uint8_t _pad = (alignment) - ((blob)->length & ((alignment)-1)); \
+		BLOB_CHECK(smbsrv_blob_fill_data(blob, blob, (blob)->length+_pad)); \
+	} \
+} while (0)
+
 /* grow the data size of a trans2 reply */
 NTSTATUS smbsrv_blob_grow_data(TALLOC_CTX *mem_ctx,
 			       DATA_BLOB *blob,
@@ -616,6 +625,7 @@
 		BLOB_CHECK(smbsrv_blob_append_string(mem_ctx, blob, file->directory_info.name.s,
 						     ofs + 60, default_str_flags,
 						     STR_TERMINATE_ASCII));
+		BLOB_ALIGN(blob, 8);
 		data = blob->data + ofs;
 		SIVAL(data,          0, blob->length - ofs);
 		return NT_STATUS_OK;
@@ -635,6 +645,7 @@
 		BLOB_CHECK(smbsrv_blob_append_string(mem_ctx, blob, file->full_directory_info.name.s, 
 						     ofs + 60, default_str_flags,
 						     STR_TERMINATE_ASCII));
+		BLOB_ALIGN(blob, 8);
 		data = blob->data + ofs;
 		SIVAL(data,          0, blob->length - ofs);
 		return NT_STATUS_OK;
@@ -646,6 +657,7 @@
 		BLOB_CHECK(smbsrv_blob_append_string(mem_ctx, blob, file->name_info.name.s, 
 						     ofs + 8, default_str_flags,
 						     STR_TERMINATE_ASCII));
+		BLOB_ALIGN(blob, 8);
 		data = blob->data + ofs;
 		SIVAL(data,          0, blob->length - ofs);
 		return NT_STATUS_OK;
@@ -672,10 +684,7 @@
 		BLOB_CHECK(smbsrv_blob_append_string(mem_ctx, blob, file->both_directory_info.name.s, 
 						     ofs + 60, default_str_flags,
 						     STR_TERMINATE_ASCII));
-		/* align the end of the blob on an even boundary */
-		if (blob->length & 1) {
-			BLOB_CHECK(smbsrv_blob_fill_data(blob, blob, blob->length+1));
-		}
+		BLOB_ALIGN(blob, 8);
 		data = blob->data + ofs;
 		SIVAL(data,          0, blob->length - ofs);
 		return NT_STATUS_OK;
@@ -697,6 +706,7 @@
 		BLOB_CHECK(smbsrv_blob_append_string(mem_ctx, blob, file->id_full_directory_info.name.s, 
 						     ofs + 60, default_str_flags,
 						     STR_TERMINATE_ASCII));
+		BLOB_ALIGN(blob, 8);
 		data = blob->data + ofs;
 		SIVAL(data,          0, blob->length - ofs);
 		return NT_STATUS_OK;
@@ -724,6 +734,7 @@
 		BLOB_CHECK(smbsrv_blob_append_string(mem_ctx, blob, file->id_both_directory_info.name.s, 
 						     ofs + 60, default_str_flags,
 						     STR_TERMINATE_ASCII));
+		BLOB_ALIGN(blob, 8);
 		data = blob->data + ofs;
 		SIVAL(data,          0, blob->length - ofs);
 		return NT_STATUS_OK;



More information about the samba-cvs mailing list