From 0263ec1c894c46a479b472d65dc5f3ce48c57673 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Wed, 26 Apr 2006 00:08:39 +0000 Subject: r15260: Don't dereference NULL pointers to obtain array lengths - found by the IBM checker (This used to be commit a492cd4bd49b6922d91d4ce5f1247bad0d0d6a7e) --- source4/pidl/lib/Parse/Pidl/Samba4/EJS.pm | 14 ++++++++++++++ 1 file changed, 14 insertions(+) (limited to 'source4/pidl/lib/Parse/Pidl/Samba4') diff --git a/source4/pidl/lib/Parse/Pidl/Samba4/EJS.pm b/source4/pidl/lib/Parse/Pidl/Samba4/EJS.pm index 550499a5f3..b9d8a1251c 100644 --- a/source4/pidl/lib/Parse/Pidl/Samba4/EJS.pm +++ b/source4/pidl/lib/Parse/Pidl/Samba4/EJS.pm @@ -116,6 +116,18 @@ sub get_value_of($) } } +##################################################################### +# check that a variable we get from ParseExpr isn't a null pointer +sub check_null_pointer($) +{ + my $size = shift; + if ($size =~ /^\*/) { + my $size2 = substr($size, 1); + pidl "if ($size2 == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;"; + } +} + + ##################################################################### # work out is a parse function should be declared static or not sub fn_declare($$) @@ -196,6 +208,7 @@ sub EjsPullArray($$$$$) if (!$l->{IS_FIXED}) { pidl "EJS_ALLOC_N(ejs, $var, $size);"; } + check_null_pointer($length); pidl "ejs_pull_array_uint8(ejs, v, $name, $var, $length);"; return; } @@ -492,6 +505,7 @@ sub EjsPushArray($$$$$) } # uint8 arrays are treated as data blobs if ($nl->{TYPE} eq 'DATA' && $e->{TYPE} eq 'uint8') { + check_null_pointer($length); pidl "ejs_push_array_uint8(ejs, v, $name, $var, $length);"; return; } -- cgit