pidl: added checking of NDR flags in generated code
authorAndrew Tridgell <tridge@samba.org>
Wed, 7 Sep 2011 05:34:43 +0000 (15:34 +1000)
committerAndrew Tridgell <tridge@samba.org>
Thu, 8 Sep 2011 01:35:27 +0000 (03:35 +0200)
Pair-Programmed-With: Andrew Bartlett <abartlet@samba.org>

pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm

index 3d31366abf7ab82965895dccdab5ea8a03c0fc80..19c3cc802433b35a3d31facfd012a4264892702b 100644 (file)
@@ -1332,6 +1332,7 @@ sub ParseStructPush($$$$)
 
        $self->start_flags($struct, $ndr);
 
+       $self->pidl("NDR_PUSH_CHECK_FLAGS(ndr, ndr_flags);");
        $self->pidl("if (ndr_flags & NDR_SCALARS) {");
        $self->indent;
        $self->ParseStructPushPrimitives($struct, $ndr, $varname, $env);
@@ -1645,6 +1646,7 @@ sub ParseStructPull($$$$)
 
        my $env = GenerateStructEnv($struct, $varname);
 
+       $self->pidl("NDR_PULL_CHECK_FLAGS(ndr, ndr_flags);");
        $self->pidl("if (ndr_flags & NDR_SCALARS) {");
        $self->indent;
        $self->ParseStructPullPrimitives($struct,$ndr,$varname,$env);
@@ -1808,6 +1810,7 @@ sub ParseUnionPush($$$$)
 
        $self->start_flags($e, $ndr);
 
+       $self->pidl("NDR_PUSH_CHECK_FLAGS(ndr, ndr_flags);");
        $self->pidl("if (ndr_flags & NDR_SCALARS) {");
        $self->indent;
        $self->ParseUnionPushPrimitives($e, $ndr, $varname);
@@ -1985,6 +1988,7 @@ sub ParseUnionPull($$$$)
 
        $self->pidl("level = ndr_pull_get_switch_value($ndr, $varname);");
 
+       $self->pidl("NDR_PULL_CHECK_FLAGS(ndr, ndr_flags);");
        $self->pidl("if (ndr_flags & NDR_SCALARS) {");
        $self->indent;
        $self->ParseUnionPullPrimitives($e,$ndr,$varname,$switch_type);
@@ -2267,6 +2271,8 @@ sub ParseFunctionPush($$)
                $self->DeclareArrayVariables($e);
        }
 
+       $self->pidl("NDR_PUSH_CHECK_FN_FLAGS(ndr, flags);");
+
        $self->pidl("if (flags & NDR_IN) {");
        $self->indent;
 
@@ -2354,6 +2360,8 @@ sub ParseFunctionPull($$)
                $double_cases{"$e->{NAME}"} = 1;
        }
 
+       $self->pidl("NDR_PULL_CHECK_FN_FLAGS(ndr, flags);");
+
        $self->pidl("if (flags & NDR_IN) {");
        $self->indent;