svn commit: samba r25777 - in branches/SAMBA_4_0/source/librpc/ndr: .

metze at samba.org metze at samba.org
Thu Nov 1 09:50:26 GMT 2007


Author: metze
Date: 2007-11-01 09:50:24 +0000 (Thu, 01 Nov 2007)
New Revision: 25777

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

Log:
add NDR_ERR_UNREAD_BYTES and don't use NTSTATUS directly

metze
Modified:
   branches/SAMBA_4_0/source/librpc/ndr/libndr.h
   branches/SAMBA_4_0/source/librpc/ndr/ndr.c


Changeset:
Modified: branches/SAMBA_4_0/source/librpc/ndr/libndr.h
===================================================================
--- branches/SAMBA_4_0/source/librpc/ndr/libndr.h	2007-11-01 09:48:42 UTC (rev 25776)
+++ branches/SAMBA_4_0/source/librpc/ndr/libndr.h	2007-11-01 09:50:24 UTC (rev 25777)
@@ -175,7 +175,8 @@
 	NDR_ERR_RANGE,
 	NDR_ERR_TOKEN,
 	NDR_ERR_IPV4ADDRESS,
-	NDR_ERR_INVALID_POINTER
+	NDR_ERR_INVALID_POINTER,
+	NDR_ERR_UNREAD_BYTES
 };
 
 enum ndr_compression_alg {

Modified: branches/SAMBA_4_0/source/librpc/ndr/ndr.c
===================================================================
--- branches/SAMBA_4_0/source/librpc/ndr/ndr.c	2007-11-01 09:48:42 UTC (rev 25776)
+++ branches/SAMBA_4_0/source/librpc/ndr/ndr.c	2007-11-01 09:50:24 UTC (rev 25777)
@@ -367,6 +367,8 @@
 		return NT_STATUS_ARRAY_BOUNDS_EXCEEDED;
 	case NDR_ERR_INVALID_POINTER:
 		return NT_STATUS_INVALID_PARAMETER_MIX;
+	case NDR_ERR_UNREAD_BYTES:
+		return NT_STATUS_PORT_MESSAGE_TOO_LONG;
 	default:
 		break;
 	}
@@ -748,7 +750,9 @@
 	status = fn(ndr, NDR_SCALARS|NDR_BUFFERS, p);
 	if (!NT_STATUS_IS_OK(status)) return status;
 	if (ndr->offset < ndr->data_size) {
-		return NT_STATUS_PORT_MESSAGE_TOO_LONG;
+		return ndr_pull_error(ndr, NDR_ERR_UNREAD_BYTES,
+				      "not all bytes consumed ofs[%u] size[%u]",
+				      ndr->offset, ndr->data_size);
 	}
 	return NT_STATUS_OK;
 }
@@ -786,7 +790,9 @@
 	status = fn(ndr, NDR_SCALARS|NDR_BUFFERS, p);
 	if (!NT_STATUS_IS_OK(status)) return status;
 	if (ndr->offset < ndr->data_size) {
-		return NT_STATUS_PORT_MESSAGE_TOO_LONG;
+		return ndr_pull_error(ndr, NDR_ERR_UNREAD_BYTES,
+				      "not all bytes consumed ofs[%u] size[%u]",
+				      ndr->offset, ndr->data_size);
 	}
 	return NT_STATUS_OK;
 }



More information about the samba-cvs mailing list