pypidl: check the result of py_dcerpc_ndr_pointer_deref()
authorDouglas Bagnall <douglas.bagnall@catalyst.net.nz>
Tue, 14 May 2019 23:53:07 +0000 (11:53 +1200)
committerAndreas Schneider <asn@cryptomilk.org>
Mon, 6 Jul 2020 12:30:33 +0000 (12:30 +0000)
Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andreas Schneider <asn@samba.org>
Reviewed-by: Ralph Boehme <slow@samba.org>
pidl/lib/Parse/Pidl/Samba4/Python.pm

index 344f48987d1a8d69d5d2ac3fd0c1fc76589f8c60..76a094b625bec7f1850a44090d5b06692b54033e 100644 (file)
@@ -1947,6 +1947,11 @@ sub ConvertObjectFromPythonLevel($$$$$$$$$)
                if ($need_deref == 1) {
                        my $ndr_pointer_typename = $self->import_type_variable("samba.dcerpc.base", "ndr_pointer");
                        $self->pidl("$py_var = py_dcerpc_ndr_pointer_deref($ndr_pointer_typename, $py_var);");
+                       $self->pidl("if ($py_var == NULL) {");
+                       $self->indent;
+                        $self->pidl($fail);
+                       $self->deindent;
+                       $self->pidl("}");
                }
                unless ($nl->{TYPE} eq "DATA" and Parse::Pidl::Typelist::scalar_is_reference($nl->{DATA_TYPE})) {
                        $var_name = get_value_of($var_name);