1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-23 17:34:34 +03:00

pidl: Generate compatability wrappers for ndr_print functions

This creates wrappers that are compatible with the functions called by
ndrdump which have an extra "int flags" parameter for NDR_IN and
NDR_OUT.  This will make ndrdump of public structures work again.

BUG: https://bugzilla.samba.org/show_bug.cgi?id=14191

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Pair-progammed-with: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
This commit is contained in:
Andrew Bartlett 2019-11-04 12:15:26 +13:00 committed by Douglas Bagnall
parent 1bd1ae0593
commit 78521577eb

View File

@ -2768,7 +2768,7 @@ sub StructEntry($$)
$self->pidl("\t\t.struct_size = sizeof($type_decl),"); $self->pidl("\t\t.struct_size = sizeof($type_decl),");
$self->pidl("\t\t.ndr_push = (ndr_push_flags_fn_t) ndr_push_$d->{NAME},"); $self->pidl("\t\t.ndr_push = (ndr_push_flags_fn_t) ndr_push_$d->{NAME},");
$self->pidl("\t\t.ndr_pull = (ndr_pull_flags_fn_t) ndr_pull_$d->{NAME},"); $self->pidl("\t\t.ndr_pull = (ndr_pull_flags_fn_t) ndr_pull_$d->{NAME},");
$self->pidl("\t\t.ndr_print = (ndr_print_function_t) ndr_print_$d->{NAME},"); $self->pidl("\t\t.ndr_print = (ndr_print_function_t) ndr_print_flags_$d->{NAME},");
$self->pidl("\t},"); $self->pidl("\t},");
return 1; return 1;
} }
@ -3023,6 +3023,18 @@ sub ParseTypePrintFunction($$$)
$self->pidl_hdr("void ".TypeFunctionName("ndr_print", $e)."(struct ndr_print *ndr, const char *name, $args);"); $self->pidl_hdr("void ".TypeFunctionName("ndr_print", $e)."(struct ndr_print *ndr, const char *name, $args);");
if (has_property($e, "public")) {
$self->pidl("static void ".TypeFunctionName("ndr_print_flags", $e).
"(struct ndr_print *$ndr, const char *name, int unused, $args)"
);
$self->pidl("{");
$self->indent;
$self->pidl(TypeFunctionName("ndr_print", $e)."($ndr, name, $varname);");
$self->deindent;
$self->pidl("}");
$self->pidl("");
}
return if (has_property($e, "noprint")); return if (has_property($e, "noprint"));
$self->pidl("_PUBLIC_ void ".TypeFunctionName("ndr_print", $e)."(struct ndr_print *$ndr, const char *name, $args)"); $self->pidl("_PUBLIC_ void ".TypeFunctionName("ndr_print", $e)."(struct ndr_print *$ndr, const char *name, $args)");