mirror of
https://github.com/samba-team/samba.git
synced 2025-03-01 04:58:35 +03:00
* make pidl.pl exit with an error on a parse error
* fixed a buffers/scalars bug in structures (This used to be commit e66daf527357c65228db55a3d3319a0c20d8f51c)
This commit is contained in:
parent
15b258051c
commit
4922823167
@ -221,7 +221,7 @@ sub ParseElementPullSwitch($$$$)
|
|||||||
|
|
||||||
$res .= "\t{ uint16 _level;\n";
|
$res .= "\t{ uint16 _level;\n";
|
||||||
$res .= "\tNDR_CHECK(ndr_pull_$e->{TYPE}(ndr, $ndr_flags, &_level, $cprefix$var_prefix$e->{NAME}));\n";
|
$res .= "\tNDR_CHECK(ndr_pull_$e->{TYPE}(ndr, $ndr_flags, &_level, $cprefix$var_prefix$e->{NAME}));\n";
|
||||||
$res .= "\tif (_level != $switch_var) return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, \"Bad switch value %u in $e->{NAME}\");\n";
|
$res .= "\tif ((($ndr_flags) & NDR_SCALARS) && (_level != $switch_var)) return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, \"Bad switch value %u in $e->{NAME}\");\n";
|
||||||
$res .= "\t}\n";
|
$res .= "\t}\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -309,6 +309,8 @@ sub ParseElementPushBuffer($$$)
|
|||||||
}
|
}
|
||||||
} elsif (util::is_builtin_type($e->{TYPE})) {
|
} elsif (util::is_builtin_type($e->{TYPE})) {
|
||||||
$res .= "\t\tNDR_CHECK(ndr_push_$e->{TYPE}(ndr, $cprefix$var_prefix$e->{NAME}));\n";
|
$res .= "\t\tNDR_CHECK(ndr_push_$e->{TYPE}(ndr, $cprefix$var_prefix$e->{NAME}));\n";
|
||||||
|
} elsif ($e->{POINTERS}) {
|
||||||
|
$res .= "\t\tNDR_CHECK(ndr_push_$e->{TYPE}(ndr, NDR_SCALARS|NDR_BUFFERS, $cprefix$var_prefix$e->{NAME}));\n";
|
||||||
} else {
|
} else {
|
||||||
$res .= "\t\tNDR_CHECK(ndr_push_$e->{TYPE}(ndr, $ndr_flags, $cprefix$var_prefix$e->{NAME}));\n";
|
$res .= "\t\tNDR_CHECK(ndr_push_$e->{TYPE}(ndr, $ndr_flags, $cprefix$var_prefix$e->{NAME}));\n";
|
||||||
}
|
}
|
||||||
@ -441,7 +443,7 @@ sub ParseStructPush($)
|
|||||||
$res .= "buffers:\n";
|
$res .= "buffers:\n";
|
||||||
$res .= "\tif (!(ndr_flags & NDR_BUFFERS)) goto done;\n";
|
$res .= "\tif (!(ndr_flags & NDR_BUFFERS)) goto done;\n";
|
||||||
foreach my $e (@{$struct->{ELEMENTS}}) {
|
foreach my $e (@{$struct->{ELEMENTS}}) {
|
||||||
ParseElementPushBuffer($e, "r->", "ndr_flags");
|
ParseElementPushBuffer($e, "r->", "NDR_BUFFERS");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (defined $struct_len) {
|
if (defined $struct_len) {
|
||||||
@ -541,7 +543,7 @@ sub ParseStructPull($)
|
|||||||
$res .= "buffers:\n";
|
$res .= "buffers:\n";
|
||||||
$res .= "\tif (!(ndr_flags & NDR_BUFFERS)) goto done;\n";
|
$res .= "\tif (!(ndr_flags & NDR_BUFFERS)) goto done;\n";
|
||||||
foreach my $e (@{$struct->{ELEMENTS}}) {
|
foreach my $e (@{$struct->{ELEMENTS}}) {
|
||||||
ParseElementPullBuffer($e, "r->", "ndr_flags");
|
ParseElementPullBuffer($e, "r->", "NDR_BUFFERS");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (defined $struct_len) {
|
if (defined $struct_len) {
|
||||||
@ -817,10 +819,12 @@ sub ParseFunctionPull($)
|
|||||||
$res .= "\t}\n";
|
$res .= "\t}\n";
|
||||||
} else {
|
} else {
|
||||||
ParseElementPullScalar($e, "r->out.", "NDR_SCALARS|NDR_BUFFERS");
|
ParseElementPullScalar($e, "r->out.", "NDR_SCALARS|NDR_BUFFERS");
|
||||||
|
if ($e->{POINTERS}) {
|
||||||
ParseElementPullBuffer($e, "r->out.", "NDR_SCALARS|NDR_BUFFERS");
|
ParseElementPullBuffer($e, "r->out.", "NDR_SCALARS|NDR_BUFFERS");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ($fn->{RETURN_TYPE} && $fn->{RETURN_TYPE} ne "void") {
|
if ($fn->{RETURN_TYPE} && $fn->{RETURN_TYPE} ne "void") {
|
||||||
$res .= "\tNDR_CHECK(ndr_pull_$fn->{RETURN_TYPE}(ndr, &r->out.result));\n";
|
$res .= "\tNDR_CHECK(ndr_pull_$fn->{RETURN_TYPE}(ndr, &r->out.result));\n";
|
||||||
|
@ -111,6 +111,7 @@ my($pidl_file) = util::ChangeExtension($opt_output, "pidl");
|
|||||||
if ($opt_parse) {
|
if ($opt_parse) {
|
||||||
print "Generating $pidl_file from $idl_file\n";
|
print "Generating $pidl_file from $idl_file\n";
|
||||||
my($idl) = IdlParse($idl_file);
|
my($idl) = IdlParse($idl_file);
|
||||||
|
defined $idl || die "Failed to parse $idl_file";
|
||||||
util::SaveStructure($pidl_file, $idl) || die "Failed to save $pidl_file";
|
util::SaveStructure($pidl_file, $idl) || die "Failed to save $pidl_file";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user