ParseElementPull($e, "ndr", "r->", $env, 1, 0);
}
+ add_deferred();
+
deindent;
pidl "}";
pidl "if (ndr_flags & NDR_BUFFERS) {";
ParseElementPull($e, "ndr", "r->", $env, 0, 1);
}
+ add_deferred();
+
deindent;
pidl "}";
- add_deferred();
-
end_flags($struct);
# restore the old relative_base_offset
pidl "ndr_pull_restore_relative_base_offset(ndr, _save_relative_base_offset);" if defined($struct->{PROPERTIES}{relative_base});
NTSTATUS ndr_check_array_size(struct ndr_pull *ndr, void *p, uint32_t size)
{
uint32_t stored;
+ /* a NULL array is OK */
+ if (*(void **)p == NULL) {
+ return NT_STATUS_OK;
+ }
stored = ndr_token_peek(&ndr->array_size_list, p);
if (stored != size) {
return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE,
NTSTATUS ndr_check_array_length(struct ndr_pull *ndr, void *p, uint32_t length)
{
uint32_t stored;
+ /* a NULL array is OK */
+ if (*(void **)p == NULL) {
+ return NT_STATUS_OK;
+ }
stored = ndr_token_peek(&ndr->array_length_list, p);
if (stored != length) {
return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE,