From cd39847e815bea73b6bcae63541dd36b1715aa6c Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Fri, 17 Jun 2005 16:29:27 +0000 Subject: r7695: Add support for the [string] attribute that works in the traditional sense. Not used anywhere yet. (This used to be commit a73a35cfc7b5b92cd95bd0d0fbd64d04acecccf3) --- source4/librpc/ndr/ndr_string.c | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'source4/librpc/ndr/ndr_string.c') diff --git a/source4/librpc/ndr/ndr_string.c b/source4/librpc/ndr/ndr_string.c index aa612eca38..af9783ed95 100644 --- a/source4/librpc/ndr/ndr_string.c +++ b/source4/librpc/ndr/ndr_string.c @@ -569,3 +569,30 @@ void ndr_print_string_array(struct ndr_print *ndr, const char *name, const char } ndr->depth--; } + +/* Return number of elements in a string including the last (zeroed) element */ +uint32_t ndr_string_length(void *_var, uint32_t element_size) +{ + uint32_t i; + uint8_t zero[4] = {0,0,0,0}; + char *var = _var; + + for (i = 0; memcmp(var+i*element_size,zero,element_size) != 0; i++); + + return i+1; +} + +NTSTATUS ndr_check_string_terminator(struct ndr_pull *ndr, const void *_var, uint32_t count, uint32_t element_size) +{ + const char *var = _var; + uint32_t i; + + for (i = 0; i < element_size; i++) { + if (var+element_size*(count-1)+i != 0) { + return NT_STATUS_UNSUCCESSFUL; + } + } + + return NT_STATUS_OK; + +} -- cgit