svn commit: samba r4139 - in branches/SAMBA_4_0/source: build/pidl librpc/ndr

tridge at samba.org tridge at samba.org
Fri Dec 10 22:36:47 GMT 2004


Author: tridge
Date: 2004-12-10 22:36:46 +0000 (Fri, 10 Dec 2004)
New Revision: 4139

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

Log:
2nd attempt at fixing the null ptr in size_is() problem.


Modified:
   branches/SAMBA_4_0/source/build/pidl/parser.pm
   branches/SAMBA_4_0/source/librpc/ndr/ndr.c


Changeset:
Modified: branches/SAMBA_4_0/source/build/pidl/parser.pm
===================================================================
--- branches/SAMBA_4_0/source/build/pidl/parser.pm	2004-12-10 22:35:35 UTC (rev 4138)
+++ branches/SAMBA_4_0/source/build/pidl/parser.pm	2004-12-10 22:36:46 UTC (rev 4139)
@@ -288,14 +288,18 @@
 
 	if (util::has_property($e, "size_is")) {
 		my $size = find_size_var($e, util::array_size($e), $var_prefix);
+		pidl "\tif ($var_prefix$e->{NAME}) {\n";
 		check_null_pointer($size);
-		pidl "\tNDR_CHECK(ndr_check_array_size(ndr, (void*)&$var_prefix$e->{NAME}, $size));\n";
+		pidl "\t\tNDR_CHECK(ndr_check_array_size(ndr, (void*)&$var_prefix$e->{NAME}, $size));\n";
+		pidl "\t}\n";
 	}
 
 	if (my $length = util::has_property($e, "length_is")) {
 		$length = find_size_var($e, $length, $var_prefix);
+		pidl "\tif ($var_prefix$e->{NAME}) {\n";
 		check_null_pointer($length);
-		pidl "\tNDR_CHECK(ndr_check_array_length(ndr, (void*)&$var_prefix$e->{NAME}, $length));\n";
+		pidl "\t\tNDR_CHECK(ndr_check_array_length(ndr, (void*)&$var_prefix$e->{NAME}, $length));\n";
+		pidl "\t}\n";
 	}
 }
 

Modified: branches/SAMBA_4_0/source/librpc/ndr/ndr.c
===================================================================
--- branches/SAMBA_4_0/source/librpc/ndr/ndr.c	2004-12-10 22:35:35 UTC (rev 4138)
+++ branches/SAMBA_4_0/source/librpc/ndr/ndr.c	2004-12-10 22:36:46 UTC (rev 4139)
@@ -700,12 +700,9 @@
 /*
   check the stored array size field
 */
-NTSTATUS ndr_check_array_size(struct ndr_pull *ndr, const void **p, uint32_t size)
+NTSTATUS ndr_check_array_size(struct ndr_pull *ndr, void *p, uint32_t size)
 {
-	uint32 stored;
-	if (*p == NULL) {
-		return NT_STATUS_OK;
-	}
+	uint32_t stored;
 	NDR_CHECK(ndr_token_retrieve(&ndr->array_size_list, p, &stored));
 	if (stored != size) {
 		return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, 
@@ -744,9 +741,6 @@
 NTSTATUS ndr_check_array_length(struct ndr_pull *ndr, void *p, uint32_t length)
 {
 	uint32_t stored;
-	if (*(void **)p == NULL) {
-		return NT_STATUS_OK;
-	}
 	NDR_CHECK(ndr_token_retrieve(&ndr->array_length_list, p, &stored));
 	if (stored != length) {
 		return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, 



More information about the samba-cvs mailing list