pidl: fix printing of server side ndr request debug messages
authorMichael Adam <obnox@samba.org>
Fri, 13 Aug 2010 15:29:07 +0000 (17:29 +0200)
committerMichael Adam <obnox@samba.org>
Fri, 13 Aug 2010 21:50:41 +0000 (23:50 +0200)
The macros NDR_PRINT_IN_DEBUG and NDR_PRINT_OUT_DEBUG are made for
the client side. For the server side, the NDR_SET_VALUES flag needs
to be added for the OUT struct and not for the IN struct, otherwise,
the OUT part can print uninitialized data and the IN part may
recalculate string lengths illegally.

pidl/lib/Parse/Pidl/Samba3/ServerNDR.pm

index 1f6641522c8b18fdfa728d99851793995ce09dac..1cbf1876015bb96eb4e05880c6e540cd10ff2a53 100644 (file)
@@ -171,7 +171,7 @@ sub ParseFunction($$)
        pidl "}";
        pidl "";
        pidl "if (DEBUGLEVEL >= 10) {";
        pidl "}";
        pidl "";
        pidl "if (DEBUGLEVEL >= 10) {";
-       pidl "\tNDR_PRINT_IN_DEBUG($fn->{NAME}, r);";
+       pidl "\tNDR_PRINT_FUNCTION_DEBUG($fn->{NAME}, NDR_IN, r);";
        pidl "}";
        pidl "";
 
        pidl "}";
        pidl "";
 
@@ -190,7 +190,7 @@ sub ParseFunction($$)
        pidl "}";
        pidl "";
        pidl "if (DEBUGLEVEL >= 10) {";
        pidl "}";
        pidl "";
        pidl "if (DEBUGLEVEL >= 10) {";
-       pidl "\tNDR_PRINT_OUT_DEBUG($fn->{NAME}, r);";
+       pidl "\nNDR_PRINT_FUNCTION_DEBUG($fn->{NAME}, NDR_OUT | NDR_SET_VALUES, r);";
        pidl "}";
        pidl "";
        pidl "push = ndr_push_init_ctx(r);";
        pidl "}";
        pidl "";
        pidl "push = ndr_push_init_ctx(r);";