From 83a24ff2efd48b0e192024798695f6cfec9000b5 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 16 Sep 2010 16:57:21 +1000 Subject: pidl: prevent ndr_print_*() dying on NULL pointers when using ndrdump you can get uninitialised structures containing pointers. Don't segfault when trying to print them --- librpc/ndr/ndr_basic.c | 10 ++++++++++ 1 file changed, 10 insertions(+) (limited to 'librpc/ndr/ndr_basic.c') diff --git a/librpc/ndr/ndr_basic.c b/librpc/ndr/ndr_basic.c index 58d4e46e72..c27faa2398 100644 --- a/librpc/ndr/ndr_basic.c +++ b/librpc/ndr/ndr_basic.c @@ -854,6 +854,11 @@ _PUBLIC_ void ndr_print_struct(struct ndr_print *ndr, const char *name, const ch ndr->print(ndr, "%s: struct %s", name, type); } +_PUBLIC_ void ndr_print_null(struct ndr_print *ndr) +{ + ndr->print(ndr, "UNEXPECTED NULL POINTER"); +} + _PUBLIC_ void ndr_print_enum(struct ndr_print *ndr, const char *name, const char *type, const char *val, uint32_t value) { @@ -1005,6 +1010,11 @@ _PUBLIC_ void ndr_print_array_uint8(struct ndr_print *ndr, const char *name, { int i; + if (data == NULL) { + ndr->print(ndr, "%s: ARRAY(%d) : NULL", name, count); + return; + } + if (count <= 600 && (ndr->flags & LIBNDR_PRINT_ARRAY_HEX)) { char s[1202]; for (i=0;i