From e90c904a5f9b3b10a2e304be3a532ceb83424cb5 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Sat, 12 Mar 2005 08:29:54 +0000 Subject: r5764: add support for embedded ref pointers metze (This used to be commit 112043b1809a96b1a39ade71ea2885c0d792c79f) --- source4/librpc/ndr/ndr_basic.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) (limited to 'source4/librpc') diff --git a/source4/librpc/ndr/ndr_basic.c b/source4/librpc/ndr/ndr_basic.c index 24ca8dcd0e..0ea38c21c2 100644 --- a/source4/librpc/ndr/ndr_basic.c +++ b/source4/librpc/ndr/ndr_basic.c @@ -118,6 +118,18 @@ NTSTATUS ndr_pull_unique_ptr(struct ndr_pull *ndr, uint32_t *v) return status; } +/* + parse a ref pointer referent identifier +*/ +NTSTATUS ndr_pull_ref_ptr(struct ndr_pull *ndr, uint32_t *v) +{ + NTSTATUS status; + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, v)); + /* ref pointers always point to data */ + *v = 1; + return status; +} + /* parse a udlong */ @@ -506,7 +518,7 @@ void ndr_push_restore(struct ndr_push *ndr, struct ndr_push_save *save) } /* - push a 1 if a pointer is non-NULL, otherwise 0 + push a unique non-zero value if a pointer is non-NULL, otherwise 0 */ NTSTATUS ndr_push_unique_ptr(struct ndr_push *ndr, const void *p) { @@ -518,6 +530,17 @@ NTSTATUS ndr_push_unique_ptr(struct ndr_push *ndr, const void *p) return ndr_push_uint32(ndr, NDR_SCALARS, ptr); } +/* + push always a 0, if a pointer is NULL it's a fatal error +*/ +NTSTATUS ndr_push_ref_ptr(struct ndr_push *ndr, const void *p) +{ + uint32_t ptr = 0; + if (p == NULL) { + return NT_STATUS_INVALID_PARAMETER_MIX; + } + return ndr_push_uint32(ndr, NDR_SCALARS, 0); +} /* pull a general string from the wire -- cgit