diff options
-rw-r--r-- | tools/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm | 2 | ||||
-rw-r--r-- | tools/pidl/lib/Parse/Pidl/Samba3/ServerNDR.pm | 2 | ||||
-rw-r--r-- | tools/pidl/lib/Parse/Pidl/Samba4/EJS.pm | 32 | ||||
-rw-r--r-- | tools/pidl/lib/Parse/Pidl/Samba4/Header.pm | 4 | ||||
-rw-r--r-- | tools/pidl/lib/Parse/Pidl/Samba4/NDR/Client.pm | 2 | ||||
-rw-r--r-- | tools/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm | 54 | ||||
-rw-r--r-- | tools/pidl/lib/Parse/Pidl/Samba4/TDR.pm | 2 | ||||
-rw-r--r-- | tools/pidl/tests/Util.pm | 69 | ||||
-rwxr-xr-x | tools/pidl/tests/ndr_align.pl | 14 | ||||
-rwxr-xr-x | tools/pidl/tests/ndr_alloc.pl | 8 | ||||
-rwxr-xr-x | tools/pidl/tests/ndr_array.pl | 2 | ||||
-rwxr-xr-x | tools/pidl/tests/ndr_fullptr.pl | 2 | ||||
-rwxr-xr-x | tools/pidl/tests/ndr_refptr.pl | 28 | ||||
-rw-r--r-- | tools/pidl/tests/ndr_represent.pl | 8 | ||||
-rwxr-xr-x | tools/pidl/tests/ndr_simple.pl | 30 | ||||
-rwxr-xr-x | tools/pidl/tests/ndr_string.pl | 6 | ||||
-rwxr-xr-x | tools/pidl/tests/ndr_tagtype.pl | 16 |
17 files changed, 157 insertions, 124 deletions
diff --git a/tools/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm b/tools/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm index 9c3f01ad93..f6c9a04a8e 100644 --- a/tools/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm +++ b/tools/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm @@ -91,7 +91,7 @@ sub ParseFunction($$$) if ($e->{LEVELS}[0]->{TYPE} eq "POINTER") { $level = 1; if ($e->{LEVELS}[0]->{POINTER_TYPE} ne "ref") { - $self->pidl("if ( $e->{NAME} ) {"); + $self->pidl("if ($e->{NAME} && r.out.$e->{NAME}) {"); $self->indent; } } diff --git a/tools/pidl/lib/Parse/Pidl/Samba3/ServerNDR.pm b/tools/pidl/lib/Parse/Pidl/Samba3/ServerNDR.pm index b3aa98ee0a..82cadd9bcc 100644 --- a/tools/pidl/lib/Parse/Pidl/Samba3/ServerNDR.pm +++ b/tools/pidl/lib/Parse/Pidl/Samba3/ServerNDR.pm @@ -84,7 +84,7 @@ sub ParseFunction($$) my $op = "NDR_".uc($fn->{NAME}); - pidl "static BOOL api_$fn->{NAME}(pipes_struct *p)"; + pidl "static bool api_$fn->{NAME}(pipes_struct *p)"; pidl "{"; indent; pidl "const struct ndr_interface_call *call;"; diff --git a/tools/pidl/lib/Parse/Pidl/Samba4/EJS.pm b/tools/pidl/lib/Parse/Pidl/Samba4/EJS.pm index 13e38545a7..2e9bc0953c 100644 --- a/tools/pidl/lib/Parse/Pidl/Samba4/EJS.pm +++ b/tools/pidl/lib/Parse/Pidl/Samba4/EJS.pm @@ -128,7 +128,7 @@ sub EjsPullScalar($$$$$$$) } else { $t = $e->{TYPE}; } - $self->pidl("NDR_CHECK(ejs_pull_$t(ejs, v, $name, $var));"); + $self->pidl("EJS_CHECK(ejs_pull_$t(ejs, v, $name, $var));"); } } @@ -164,7 +164,7 @@ sub EjsPullString($$$$$$) if (defined($pl) and $pl->{TYPE} eq "POINTER") { $var = get_pointer_to($var); } - $self->pidl("NDR_CHECK(ejs_pull_string(ejs, v, $name, $var));"); + $self->pidl("EJS_CHECK(ejs_pull_string(ejs, v, $name, $var));"); } ########################### @@ -255,7 +255,7 @@ sub EjsStructPull($$$) { my ($self, $d, $varname) = @_; my $env = GenerateStructEnv($d, $varname); - $self->pidl("NDR_CHECK(ejs_pull_struct_start(ejs, &v, name));"); + $self->pidl("EJS_CHECK(ejs_pull_struct_start(ejs, &v, name));"); foreach my $e (@{$d->{ELEMENTS}}) { $self->EjsPullElementTop($e, $env); } @@ -267,7 +267,7 @@ sub EjsUnionPull($$$) { my ($self, $d, $varname) = @_; my $have_default = 0; - $self->pidl("NDR_CHECK(ejs_pull_struct_start(ejs, &v, name));"); + $self->pidl("EJS_CHECK(ejs_pull_struct_start(ejs, &v, name));"); $self->pidl("switch (ejs->switch_var) {"); $self->indent; foreach my $e (@{$d->{ELEMENTS}}) { @@ -317,7 +317,7 @@ sub EjsEnumPull($$$) my ($self, $d, $varname) = @_; $self->EjsEnumConstant($d); $self->pidl("unsigned e;"); - $self->pidl("NDR_CHECK(ejs_pull_enum(ejs, v, name, &e));"); + $self->pidl("EJS_CHECK(ejs_pull_enum(ejs, v, name, &e));"); $self->pidl("*$varname = e;"); } @@ -327,7 +327,7 @@ sub EjsBitmapPull($$$) { my ($self, $d, $varname) = @_; my $type_fn = $d->{BASE_TYPE}; - $self->pidl("NDR_CHECK(ejs_pull_$type_fn(ejs, v, name, $varname));"); + $self->pidl("EJS_CHECK(ejs_pull_$type_fn(ejs, v, name, $varname));"); } sub EjsTypePullFunction($$$) @@ -388,7 +388,7 @@ sub EjsPullFunction($$) $self->pidl("\nstatic NTSTATUS ejs_pull_$name(struct ejs_rpc *ejs, struct MprVar *v, struct $name *r)"); $self->pidl("{"); $self->indent; - $self->pidl("NDR_CHECK(ejs_pull_struct_start(ejs, &v, \"input\"));"); + $self->pidl("EJS_CHECK(ejs_pull_struct_start(ejs, &v, \"input\"));"); # we pull non-array elements before array elements as arrays # may have length_is() or size_is() properties that depend @@ -427,7 +427,7 @@ sub EjsPushScalar($$$$$$) $var = get_pointer_to($var); } - $self->pidl("NDR_CHECK(".TypeFunctionName("ejs_push", $e->{TYPE})."(ejs, v, $name, $var));"); + $self->pidl("EJS_CHECK(".TypeFunctionName("ejs_push", $e->{TYPE})."(ejs, v, $name, $var));"); } } @@ -440,7 +440,7 @@ sub EjsPushString($$$$$$) if (defined($pl) and $pl->{TYPE} eq "POINTER") { $var = get_pointer_to($var); } - $self->pidl("NDR_CHECK(ejs_push_string(ejs, v, $name, $var));"); + $self->pidl("EJS_CHECK(ejs_push_string(ejs, v, $name, $var));"); } ########################### @@ -453,7 +453,7 @@ sub EjsPushPointer($$$$$$) if ($l->{POINTER_TYPE} eq "ref") { $self->pidl("return NT_STATUS_INVALID_PARAMETER_MIX;"); } else { - $self->pidl("NDR_CHECK(ejs_push_null(ejs, v, $name));"); + $self->pidl("EJS_CHECK(ejs_push_null(ejs, v, $name));"); } $self->deindent; $self->pidl("} else {"); @@ -543,7 +543,7 @@ sub EjsStructPush($$$) { my ($self, $d, $varname) = @_; my $env = GenerateStructEnv($d, $varname); - $self->pidl("NDR_CHECK(ejs_push_struct_start(ejs, &v, name));"); + $self->pidl("EJS_CHECK(ejs_push_struct_start(ejs, &v, name));"); foreach my $e (@{$d->{ELEMENTS}}) { $self->EjsPushElementTop($e, $env); } @@ -555,7 +555,7 @@ sub EjsUnionPush($$$) { my ($self, $d, $varname) = @_; my $have_default = 0; - $self->pidl("NDR_CHECK(ejs_push_struct_start(ejs, &v, name));"); + $self->pidl("EJS_CHECK(ejs_push_struct_start(ejs, &v, name));"); $self->pidl("switch (ejs->switch_var) {"); $self->indent; foreach my $e (@{$d->{ELEMENTS}}) { @@ -587,7 +587,7 @@ sub EjsEnumPush($$$) my ($self, $d, $varname) = @_; $self->EjsEnumConstant($d); $self->pidl("unsigned e = ".get_value_of($varname).";"); - $self->pidl("NDR_CHECK(ejs_push_enum(ejs, v, name, &e));"); + $self->pidl("EJS_CHECK(ejs_push_enum(ejs, v, name, &e));"); } ########################### @@ -604,7 +604,7 @@ sub EjsBitmapPush($$$) $self->{constants}->{$bname} = $v; } } - $self->pidl("NDR_CHECK(ejs_push_$type_fn(ejs, v, name, $varname));"); + $self->pidl("EJS_CHECK(ejs_push_$type_fn(ejs, v, name, $varname));"); } sub EjsTypePushFunction($$$) @@ -667,7 +667,7 @@ sub EjsPushFunction($$) $self->pidl("\nstatic NTSTATUS ejs_push_$d->{NAME}(struct ejs_rpc *ejs, struct MprVar *v, const struct $d->{NAME} *r)"); $self->pidl("{"); $self->indent; - $self->pidl("NDR_CHECK(ejs_push_struct_start(ejs, &v, \"output\"));"); + $self->pidl("EJS_CHECK(ejs_push_struct_start(ejs, &v, \"output\"));"); foreach my $e (@{$d->{ELEMENTS}}) { next unless (grep(/out/, @{$e->{DIRECTION}})); @@ -675,7 +675,7 @@ sub EjsPushFunction($$) } if ($d->{RETURN_TYPE}) { - $self->pidl("NDR_CHECK(".TypeFunctionName("ejs_push", $d->{RETURN_TYPE})."(ejs, v, \"result\", &r->out.result));"); + $self->pidl("EJS_CHECK(".TypeFunctionName("ejs_push", $d->{RETURN_TYPE})."(ejs, v, \"result\", &r->out.result));"); } $self->pidl("return NT_STATUS_OK;"); diff --git a/tools/pidl/lib/Parse/Pidl/Samba4/Header.pm b/tools/pidl/lib/Parse/Pidl/Samba4/Header.pm index 75d4c235cb..7a6ffa46d6 100644 --- a/tools/pidl/lib/Parse/Pidl/Samba4/Header.pm +++ b/tools/pidl/lib/Parse/Pidl/Samba4/Header.pm @@ -10,7 +10,7 @@ use strict; use Parse::Pidl qw(fatal); use Parse::Pidl::Typelist qw(mapTypeName scalar_is_reference); use Parse::Pidl::Util qw(has_property is_constant unmake_str); -use Parse::Pidl::Samba4 qw(is_intree ElementStars ArrayBrackets); +use Parse::Pidl::Samba4 qw(is_intree ElementStars ArrayBrackets choose_header); use vars qw($VERSION); $VERSION = '0.01'; @@ -326,7 +326,7 @@ sub HeaderImport foreach (@imports) { s/\.idl\"$//; s/^\"//; - pidl "#include \"librpc/gen_ndr/$_\.h\"\n"; + pidl choose_header("librpc/gen_ndr/$_\.h", "gen_ndr/$_.h") . "\n"; } } diff --git a/tools/pidl/lib/Parse/Pidl/Samba4/NDR/Client.pm b/tools/pidl/lib/Parse/Pidl/Samba4/NDR/Client.pm index cf14b645a9..e9c158e933 100644 --- a/tools/pidl/lib/Parse/Pidl/Samba4/NDR/Client.pm +++ b/tools/pidl/lib/Parse/Pidl/Samba4/NDR/Client.pm @@ -109,7 +109,7 @@ sub Parse($$$$) $res .= "#include <stdlib.h>\n"; $res .= "#include <stdint.h>\n"; $res .= "#include <stdarg.h>\n"; - $res .= "#include <core/nterr.h>\n"; + $res .= "#include <core/ntstatus.h>\n"; } $res .= "#include \"$ndr_header\"\n"; $res .= "#include \"$client_header\"\n"; diff --git a/tools/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm b/tools/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm index cd3981bb28..3ad9231740 100644 --- a/tools/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm +++ b/tools/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm @@ -423,8 +423,10 @@ sub ParseArrayPullHeader($$$$$$) } elsif ($l->{IS_ZERO_TERMINATED}) { # Noheader arrays $length = $size = "ndr_get_string_size($ndr, sizeof(*$var_name))"; } else { - $length = $size = ParseExprExt($l->{SIZE_IS}, $env, $e->{ORIGINAL}, - check_null_pointer($e, $env, sub { $self->pidl(shift); }, "return NT_STATUS_INVALID_PARAMETER_MIX;"), check_fully_dereferenced($e, $env)); + $length = $size = ParseExprExt($l->{SIZE_IS}, $env, $e->{ORIGINAL}, + check_null_pointer($e, $env, sub { $self->pidl(shift); }, + "return ndr_pull_error(ndr, NDR_ERR_INVALID_POINTER, \"NULL Pointer for size_is()\");"), + check_fully_dereferenced($e, $env)); } if ((!$l->{IS_SURROUNDING}) and $l->{IS_CONFORMANT}) { @@ -447,7 +449,10 @@ sub ParseArrayPullHeader($$$$$$) if ($l->{IS_CONFORMANT} and not $l->{IS_ZERO_TERMINATED}) { $self->defer("if ($var_name) {"); $self->defer_indent; - my $size = ParseExprExt($l->{SIZE_IS}, $env, $e->{ORIGINAL}, check_null_pointer($e, $env, sub { $self->defer(shift); }, "return NT_STATUS_INVALID_PARAMETER_MIX;"), check_fully_dereferenced($e, $env)); + my $size = ParseExprExt($l->{SIZE_IS}, $env, $e->{ORIGINAL}, + check_null_pointer($e, $env, sub { $self->defer(shift); }, + "return ndr_pull_error(ndr, NDR_ERR_INVALID_POINTER, \"NULL Pointer for size_is()\");"), + check_fully_dereferenced($e, $env)); $self->defer("NDR_CHECK(ndr_check_array_size(ndr, (void*)" . get_pointer_to($var_name) . ", $size));"); $self->defer_deindent; $self->defer("}"); @@ -457,7 +462,8 @@ sub ParseArrayPullHeader($$$$$$) $self->defer("if ($var_name) {"); $self->defer_indent; my $length = ParseExprExt($l->{LENGTH_IS}, $env, $e->{ORIGINAL}, - check_null_pointer($e, $env, sub { $self->defer(shift); }, "return NT_STATUS_INVALID_PARAMETER_MIX;"), + check_null_pointer($e, $env, sub { $self->defer(shift); }, + "return ndr_pull_error(ndr, NDR_ERR_INVALID_POINTER, \"NULL Pointer for length_is()\");"), check_fully_dereferenced($e, $env)); $self->defer("NDR_CHECK(ndr_check_array_length(ndr, (void*)" . get_pointer_to($var_name) . ", $length));"); $self->defer_deindent; @@ -740,7 +746,11 @@ sub ParsePtrPush($$$$) my ($self,$e,$l,$var_name) = @_; if ($l->{POINTER_TYPE} eq "ref") { - $self->pidl("if ($var_name == NULL) return NT_STATUS_INVALID_PARAMETER_MIX;"); + $self->pidl("if ($var_name == NULL) {"); + $self->indent; + $self->pidl("return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, \"NULL [ref] pointer\");"); + $self->deindent; + $self->pidl("}"); if ($l->{LEVEL} eq "EMBEDDED") { $self->pidl("NDR_CHECK(ndr_push_ref_ptr(ndr));"); } @@ -875,7 +885,9 @@ sub ParseSwitchPull($$$$$$) { my($self,$e,$l,$ndr,$var_name,$env) = @_; my $switch_var = ParseExprExt($l->{SWITCH_IS}, $env, $e->{ORIGINAL}, - check_null_pointer($e, $env, sub { $self->pidl(shift); }, "return NT_STATUS_INVALID_PARAMETER_MIX;"), check_fully_dereferenced($e, $env)); + check_null_pointer($e, $env, sub { $self->pidl(shift); }, + "return ndr_pull_error(ndr, NDR_ERR_INVALID_POINTER, \"NULL Pointer for switch_is()\");"), + check_fully_dereferenced($e, $env)); $var_name = get_pointer_to($var_name); $self->pidl("NDR_CHECK(ndr_pull_set_switch_value($ndr, $var_name, $switch_var));"); @@ -887,7 +899,9 @@ sub ParseSwitchPush($$$$$$) { my($self,$e,$l,$ndr,$var_name,$env) = @_; my $switch_var = ParseExprExt($l->{SWITCH_IS}, $env, $e->{ORIGINAL}, - check_null_pointer($e, $env, sub { $self->pidl(shift); }, "return NT_STATUS_INVALID_PARAMETER_MIX;"), check_fully_dereferenced($e, $env)); + check_null_pointer($e, $env, sub { $self->pidl(shift); }, + "return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, \"NULL Pointer for switch_is()\");"), + check_fully_dereferenced($e, $env)); $var_name = get_pointer_to($var_name); $self->pidl("NDR_CHECK(ndr_push_set_switch_value($ndr, $var_name, $switch_var));"); @@ -2222,9 +2236,10 @@ sub ParseFunctionPull($$) and $e->{LEVELS}[1]->{IS_ZERO_TERMINATED}); if ($e->{LEVELS}[1]->{TYPE} eq "ARRAY") { - my $size = ParseExprExt($e->{LEVELS}[1]->{SIZE_IS}, $env, $e->{ORIGINAL}, check_null_pointer($e, $env, sub { $self->pidl(shift); }, "return NT_STATUS_INVALID_PARAMETER_MIX;"), + my $size = ParseExprExt($e->{LEVELS}[1]->{SIZE_IS}, $env, $e->{ORIGINAL}, + check_null_pointer($e, $env, sub { $self->pidl(shift); }, + "return ndr_pull_error(ndr, NDR_ERR_INVALID_POINTER, \"NULL Pointer for size_is()\");"), check_fully_dereferenced($e, $env)); - $self->pidl("NDR_PULL_ALLOC_N(ndr, r->out.$e->{NAME}, $size);"); if (grep(/in/, @{$e->{DIRECTION}})) { @@ -2377,13 +2392,15 @@ sub HeaderInclude # generate prototypes and defines for the interface definitions # FIXME: these prototypes are for the DCE/RPC client functions, not the # NDR parser and so do not belong here, technically speaking -sub HeaderInterface($$) +sub HeaderInterface($$$) { - my($self,$interface) = @_; + my($self,$interface,$needed) = @_; my $count = 0; - $self->pidl_hdr(choose_header("librpc/ndr/libndr.h", "ndr.h")); + if ($needed->{"compression"}) { + $self->pidl(choose_header("librpc/ndr/ndr_compression.h", "ndr/compression.h")); + } if (has_property($interface, "object")) { $self->pidl(choose_header("librpc/gen_ndr/ndr_orpc.h", "ndr/orpc.h")); @@ -2544,11 +2561,7 @@ sub ParseInterface($$$) $self->pidl_hdr(""); - if ($needed->{"compression"}) { - $self->pidl(choose_header("librpc/ndr/ndr_compression.h", "ndr/compression.h")); - } - - $self->HeaderInterface($interface); + $self->HeaderInterface($interface, $needed); # Typedefs foreach my $d (@{$interface->{TYPES}}) { @@ -2594,12 +2607,6 @@ sub GenerateIncludes($) $self->pidl("#include <stdarg.h>"); $self->pidl("#include <string.h>"); } - - # Samba3 has everything in include/includes.h - if (is_intree() != 3) { - $self->pidl(choose_header("libcli/util/ntstatus.h", "core/ntstatus.h")); - $self->pidl(choose_header("librpc/gen_ndr/ndr_misc.h", "gen_ndr/ndr_misc.h")); - } } ##################################################################### @@ -2610,6 +2617,7 @@ sub Parse($$$$) $self->pidl_hdr("/* header auto-generated by pidl */"); $self->pidl_hdr(""); + $self->pidl_hdr(choose_header("librpc/ndr/libndr.h", "ndr.h")); $self->pidl_hdr("#include \"$gen_header\"") if ($gen_header); $self->pidl_hdr(""); diff --git a/tools/pidl/lib/Parse/Pidl/Samba4/TDR.pm b/tools/pidl/lib/Parse/Pidl/Samba4/TDR.pm index 832a2c5463..568dff5adf 100644 --- a/tools/pidl/lib/Parse/Pidl/Samba4/TDR.pm +++ b/tools/pidl/lib/Parse/Pidl/Samba4/TDR.pm @@ -265,7 +265,7 @@ sub Parser($$$$) $self->pidl("#include <stdint.h>"); $self->pidl("#include <stdarg.h>"); $self->pidl("#include <string.h>"); - $self->pidl("#include <core/nterr.h>"); + $self->pidl("#include <core/ntstatus.h>"); } $self->pidl("#include \"$hdrname\""); $self->pidl(""); diff --git a/tools/pidl/tests/Util.pm b/tools/pidl/tests/Util.pm index c7fca95aaa..82ab130e5a 100644 --- a/tools/pidl/tests/Util.pm +++ b/tools/pidl/tests/Util.pm @@ -47,6 +47,9 @@ use Parse::Pidl::Samba4::Header; sub test_samba4_ndr { my ($name,$idl,$c,$extra) = @_; + + $extra = "" unless defined($extra); + my $pidl = Parse::Pidl::IDL::parse_string("interface echo { $idl }; ", "<$name>"); ok(defined($pidl), "($name) parse idl"); @@ -66,8 +69,49 @@ SKIP: { skip "no samba environment available, skipping compilation", 3 if (system("pkg-config --exists ndr") != 0); - my $test_data_prefix = $ENV{TEST_DATA_PREFIX}; + my $main = " +#define uint_t unsigned int +#define _GNU_SOURCE +#include <stdint.h> +#include <stdlib.h> +#include <stdio.h> +#include <stdbool.h> +#include <stdarg.h> +#include <util/data_blob.h> + +/* header start */ +$header +/* header end */ + +/* ndrheader start */ +$ndrheader +/* ndrheader end */ + +/* extra start */ +$extra +/* extra end */ + +/* ndrparser start */ +$ndrparser +/* ndrparser end */ + +/* main start */ +int main(int argc, const char **argv) +{ + TALLOC_CTX *mem_ctx = talloc_init(NULL); + +$c + + talloc_free(mem_ctx); + return 0; +} +/* main end */ +\n"; + + my $main_debug = "# ".join("\n# ", split("\n", $main)); + + my $test_data_prefix = $ENV{TEST_DATA_PREFIX}; my $outfile; if (defined($test_data_prefix)) { $outfile = "$test_data_prefix/test-$name"; @@ -95,32 +139,13 @@ SKIP: { my $cmd = "$cc $cflags -x c - -o $outfile $flags $ldflags"; $cmd =~ s/\n//g; open CC, "|$cmd"; - print CC "#define uint_t unsigned int\n"; - print CC "#define _GNU_SOURCE\n"; - print CC "#include <stdint.h>\n"; - print CC "#include <stdlib.h>\n"; - print CC "#include <stdio.h>\n"; - print CC "#include <stdbool.h>\n"; - print CC "#include <stdarg.h>\n"; - print CC "#include <util/data_blob.h>\n"; - print CC $header; - print CC $ndrheader; - print CC $extra if ($extra); - print CC $ndrparser; - print CC "int main(int argc, const char **argv) -{ - TALLOC_CTX *mem_ctx = talloc_init(NULL); - - $c - - talloc_free(mem_ctx); - - return 0; }\n"; + print CC $main; close CC; ok(-f $outfile, "($name) compile"); my $ret = system($outfile, ()) >> 8; + print "# code:\n#\n$main_debug\n" if ($ret != 0); print "# cmd: $cmd\n" if ($ret != 0); print "# return code: $ret\n" if ($ret != 0); diff --git a/tools/pidl/tests/ndr_align.pl b/tools/pidl/tests/ndr_align.pl index 0824acc501..28b29d9196 100755 --- a/tools/pidl/tests/ndr_align.pl +++ b/tools/pidl/tests/ndr_align.pl @@ -24,7 +24,7 @@ test_samba4_ndr('align-uint8-uint16', r.x = 13; r.y = 0xbeef; - if (NT_STATUS_IS_ERR(ndr_push_bla(ndr, NDR_SCALARS|NDR_BUFFERS, &r))) + if (!NT_STATUS_IS_OK(ndr_push_bla(ndr, NDR_SCALARS|NDR_BUFFERS, &r))) return 1; result_blob = ndr_push_blob(ndr); @@ -49,7 +49,7 @@ test_samba4_ndr('align-uint8-uint32', r.x = 13; r.y = 0xbeefbeef; - if (NT_STATUS_IS_ERR(ndr_push_bla(ndr, NDR_SCALARS|NDR_BUFFERS, &r))) + if (!NT_STATUS_IS_OK(ndr_push_bla(ndr, NDR_SCALARS|NDR_BUFFERS, &r))) return 1; result_blob = ndr_push_blob(ndr); @@ -70,13 +70,13 @@ test_samba4_ndr('align-uint8-hyper', struct ndr_push *ndr = ndr_push_init_ctx(NULL); struct bla r; uint8_t expected[] = { 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xef, 0xbe, 0xef, 0xbe, 0xef, 0xbe, 0xef, 0xbe }; + 0xef, 0xbe, 0xef, 0xbe, 0xef, 0xbe, 0xef, 0xbe }; DATA_BLOB expected_blob = { expected, 16 }; DATA_BLOB result_blob; r.x = 13; - r.y = 0xbeefbeefbeefbeef; + r.y = 0xbeefbeefbeefbeefLLU; - if (NT_STATUS_IS_ERR(ndr_push_bla(ndr, NDR_SCALARS|NDR_BUFFERS, &r))) + if (!NT_STATUS_IS_OK(ndr_push_bla(ndr, NDR_SCALARS|NDR_BUFFERS, &r))) return 1; result_blob = ndr_push_blob(ndr); @@ -103,7 +103,7 @@ test_samba4_ndr('noalignflag-uint8-uint16', r.x = 13; r.y = 0xbeef; - if (NT_STATUS_IS_ERR(ndr_push_bla(ndr, NDR_SCALARS|NDR_BUFFERS, &r))) + if (!NT_STATUS_IS_OK(ndr_push_bla(ndr, NDR_SCALARS|NDR_BUFFERS, &r))) return 1; result_blob = ndr_push_blob(ndr); @@ -133,7 +133,7 @@ test_samba4_ndr('align-blob-align2', r.data.data = data; r.data.length = 2; - if (NT_STATUS_IS_ERR(ndr_push_blie(ndr, NDR_SCALARS|NDR_BUFFERS, &r))) + if (!NT_STATUS_IS_OK(ndr_push_blie(ndr, NDR_SCALARS|NDR_BUFFERS, &r))) return 1; result_blob = ndr_push_blob(ndr); diff --git a/tools/pidl/tests/ndr_alloc.pl b/tools/pidl/tests/ndr_alloc.pl index 61df1c3548..b1c7ae08c3 100755 --- a/tools/pidl/tests/ndr_alloc.pl +++ b/tools/pidl/tests/ndr_alloc.pl @@ -23,7 +23,7 @@ test_samba4_ndr("alloc-scalar", struct ndr_pull *ndr = ndr_pull_init_blob(&b, NULL); struct TestAlloc r; - if (NT_STATUS_IS_ERR(ndr_pull_TestAlloc(ndr, NDR_IN, &r))) + if (!NT_STATUS_IS_OK(ndr_pull_TestAlloc(ndr, NDR_IN, &r))) return 1; if (r.in.foo.x == NULL) @@ -47,7 +47,7 @@ test_samba4_ndr("alloc-buffer", struct ndr_pull *ndr = ndr_pull_init_blob(&b, NULL); struct TestAlloc r; - if (NT_STATUS_IS_ERR(ndr_pull_TestAlloc(ndr, NDR_IN, &r))) + if (!NT_STATUS_IS_OK(ndr_pull_TestAlloc(ndr, NDR_IN, &r))) return 1; if (r.in.foo.x == NULL) @@ -86,7 +86,7 @@ test_samba4_ndr("ref-noalloc", uint8_t x; r.in.t = &x; - if (NT_STATUS_IS_ERR(ndr_pull_TestAlloc(ndr, NDR_IN, &r))) + if (!NT_STATUS_IS_OK(ndr_pull_TestAlloc(ndr, NDR_IN, &r))) return 1; if (*r.in.t != 0x03) @@ -106,7 +106,7 @@ test_samba4_ndr("ref-alloc", ndr->flags |= LIBNDR_FLAG_REF_ALLOC; r.in.t = NULL; - if (NT_STATUS_IS_ERR(ndr_pull_TestAlloc(ndr, NDR_IN, &r))) + if (!NT_STATUS_IS_OK(ndr_pull_TestAlloc(ndr, NDR_IN, &r))) return 1; if (r.in.t == NULL) diff --git a/tools/pidl/tests/ndr_array.pl b/tools/pidl/tests/ndr_array.pl index 27f42cd391..8e40d36a10 100755 --- a/tools/pidl/tests/ndr_array.pl +++ b/tools/pidl/tests/ndr_array.pl @@ -25,7 +25,7 @@ test_samba4_ndr( b.length = 10; ndr = ndr_pull_init_blob(&b, mem_ctx); - if (NT_STATUS_IS_ERR(ndr_pull_Test(ndr, NDR_IN, &r))) + if (!NT_STATUS_IS_OK(ndr_pull_Test(ndr, NDR_IN, &r))) return 1; if (ndr->offset != 10) diff --git a/tools/pidl/tests/ndr_fullptr.pl b/tools/pidl/tests/ndr_fullptr.pl index 482edcf030..2188905b13 100755 --- a/tools/pidl/tests/ndr_fullptr.pl +++ b/tools/pidl/tests/ndr_fullptr.pl @@ -23,7 +23,7 @@ test_samba4_ndr("fullptr-push-dup", r.in.x = &v; r.in.y = &v; - if (NT_STATUS_IS_ERR(ndr_push_echo_TestFull(ndr, NDR_IN, &r))) { + if (!NT_STATUS_IS_OK(ndr_push_echo_TestFull(ndr, NDR_IN, &r))) { fprintf(stderr, "push failed\n"); return 1; } diff --git a/tools/pidl/tests/ndr_refptr.pl b/tools/pidl/tests/ndr_refptr.pl index 4a56e3ca38..d5e73559d9 100755 --- a/tools/pidl/tests/ndr_refptr.pl +++ b/tools/pidl/tests/ndr_refptr.pl @@ -23,7 +23,7 @@ test_samba4_ndr("noptr-push", struct echo_TestRef r; r.in.foo.x = v; - if (NT_STATUS_IS_ERR(ndr_push_echo_TestRef(ndr, NDR_IN, &r))) { + if (!NT_STATUS_IS_OK(ndr_push_echo_TestRef(ndr, NDR_IN, &r))) { fprintf(stderr, "push failed\n"); return 1; } @@ -52,7 +52,7 @@ test_samba4_ndr("ptr-embedded-push", struct echo_TestRef r; r.in.foo.x = &v; - if (NT_STATUS_IS_ERR(ndr_push_echo_TestRef(ndr, NDR_IN, &r))) + if (!NT_STATUS_IS_OK(ndr_push_echo_TestRef(ndr, NDR_IN, &r))) return 1; if (ndr->offset != 6) @@ -78,7 +78,7 @@ test_samba4_ndr("ptr-embedded-push-null", struct echo_TestRef r; r.in.foo.x = NULL; - if (NT_STATUS_IS_ERR(ndr_push_echo_TestRef(ndr, NDR_IN, &r))) + if (!NT_STATUS_IS_OK(ndr_push_echo_TestRef(ndr, NDR_IN, &r))) return 1; if (ndr->offset != 4) @@ -103,7 +103,7 @@ test_samba4_ndr("refptr-embedded-push", struct echo_TestRef r; r.in.foo.x = &v; - if (NT_STATUS_IS_ERR(ndr_push_echo_TestRef(ndr, NDR_IN, &r))) + if (!NT_STATUS_IS_OK(ndr_push_echo_TestRef(ndr, NDR_IN, &r))) return 1; if (ndr->offset != 6) @@ -150,7 +150,7 @@ test_samba4_ndr("ptr-top-push", s.x = 13; r.in.foo = &s; - if (NT_STATUS_IS_ERR(ndr_push_echo_TestRef(ndr, NDR_IN, &r))) + if (!NT_STATUS_IS_OK(ndr_push_echo_TestRef(ndr, NDR_IN, &r))) return 1; if (ndr->offset != 2) @@ -195,7 +195,7 @@ test_samba4_ndr("refptr-top-push", s.x = 13; r.in.foo = &s; - if (NT_STATUS_IS_ERR(ndr_push_echo_TestRef(ndr, NDR_IN, &r))) + if (!NT_STATUS_IS_OK(ndr_push_echo_TestRef(ndr, NDR_IN, &r))) return 1; if (ndr->offset != 2) @@ -239,7 +239,7 @@ test_samba4_ndr("uniqueptr-top-push", s.x = 13; r.in.foo = &s; - if (NT_STATUS_IS_ERR(ndr_push_echo_TestRef(ndr, NDR_IN, &r))) + if (!NT_STATUS_IS_OK(ndr_push_echo_TestRef(ndr, NDR_IN, &r))) return 1; if (ndr->offset != 6) @@ -265,7 +265,7 @@ test_samba4_ndr("uniqueptr-top-push-null", struct echo_TestRef r; r.in.foo = NULL; - if (NT_STATUS_IS_ERR(ndr_push_echo_TestRef(ndr, NDR_IN, &r))) + if (!NT_STATUS_IS_OK(ndr_push_echo_TestRef(ndr, NDR_IN, &r))) return 1; if (ndr->offset != 4) @@ -294,7 +294,7 @@ test_samba4_ndr("ptr-top-out-pull", r.out.foo = &s; - if (NT_STATUS_IS_ERR(ndr_pull_echo_TestRef(ndr, NDR_OUT, &r))) + if (!NT_STATUS_IS_OK(ndr_pull_echo_TestRef(ndr, NDR_OUT, &r))) return 1; if (!r.out.foo) @@ -344,7 +344,7 @@ test_samba4_ndr("refptr-top-out-pull", r.out.foo = &s; - if (NT_STATUS_IS_ERR(ndr_pull_echo_TestRef(ndr, NDR_OUT, &r))) + if (!NT_STATUS_IS_OK(ndr_pull_echo_TestRef(ndr, NDR_OUT, &r))) return 1; if (!r.out.foo) @@ -387,7 +387,7 @@ test_samba4_ndr("ptr-top-push-double", uint16_t *pv = &v; r.in.foo = &pv; - if (NT_STATUS_IS_ERR(ndr_push_echo_TestRef(ndr, NDR_IN, &r))) + if (!NT_STATUS_IS_OK(ndr_push_echo_TestRef(ndr, NDR_IN, &r))) return 1; if (ndr->offset != 6) @@ -413,7 +413,7 @@ test_samba4_ndr("ptr-top-push-double-sndnull", uint16_t *pv = NULL; r.in.foo = &pv; - if (NT_STATUS_IS_ERR(ndr_push_echo_TestRef(ndr, NDR_IN, &r))) + if (!NT_STATUS_IS_OK(ndr_push_echo_TestRef(ndr, NDR_IN, &r))) return 1; if (ndr->offset != 4) @@ -451,7 +451,7 @@ test_samba4_ndr("refptr-top-push-double", uint16_t *pv = &v; r.in.foo = &pv; - if (NT_STATUS_IS_ERR(ndr_push_echo_TestRef(ndr, NDR_IN, &r))) + if (!NT_STATUS_IS_OK(ndr_push_echo_TestRef(ndr, NDR_IN, &r))) return 1; if (ndr->offset != 6) @@ -478,7 +478,7 @@ test_samba4_ndr("refptr-top-push-double-sndnull", uint16_t *pv = NULL; r.in.foo = &pv; - if (NT_STATUS_IS_ERR(ndr_push_echo_TestRef(ndr, NDR_IN, &r))) + if (!NT_STATUS_IS_OK(ndr_push_echo_TestRef(ndr, NDR_IN, &r))) return 1; if (ndr->offset != 4) diff --git a/tools/pidl/tests/ndr_represent.pl b/tools/pidl/tests/ndr_represent.pl index 52cd06f817..b5ee312668 100644 --- a/tools/pidl/tests/ndr_represent.pl +++ b/tools/pidl/tests/ndr_represent.pl @@ -18,14 +18,14 @@ test_samba4_ndr('represent_as-simple', struct ndr_pull *ndr = ndr_pull_init_blob(&in_blob, NULL); struct bla r; - if (NT_STATUS_IS_ERR(ndr_pull_bla(ndr, NDR_SCALARS|NDR_BUFFERS, &r))) + if (!NT_STATUS_IS_OK(ndr_pull_bla(ndr, NDR_SCALARS|NDR_BUFFERS, &r))) return 1; if (r.in.x != 13) return 2; ', ' -#include <libcli/util/nterr.h> +#include <libcli/util/ntstatus.h> NTSTATUS ndr_uint8_to_uint32(uint8_t from, uint32_t *to) { @@ -51,14 +51,14 @@ test_samba4_ndr('transmit_as-simple', struct ndr_pull *ndr = ndr_pull_init_blob(&in_blob, NULL); struct bla r; - if (NT_STATUS_IS_ERR(ndr_pull_bla(ndr, NDR_SCALARS|NDR_BUFFERS, &r))) + if (!NT_STATUS_IS_OK(ndr_pull_bla(ndr, NDR_SCALARS|NDR_BUFFERS, &r))) return 1; if (r.in.x != 13) return 2; ', ' -#include <libcli/util/nterr.h> +#include <libcli/util/ntstatus.h> NTSTATUS ndr_uint8_to_uint32(uint8_t from, uint32_t *to) { diff --git a/tools/pidl/tests/ndr_simple.pl b/tools/pidl/tests/ndr_simple.pl index 02803ceea9..466a164df4 100755 --- a/tools/pidl/tests/ndr_simple.pl +++ b/tools/pidl/tests/ndr_simple.pl @@ -9,20 +9,20 @@ use FindBin qw($RealBin); use lib "$RealBin"; use Util qw(test_samba4_ndr); -test_samba4_ndr("simple", "void Test(); ", +test_samba4_ndr("simple", "void Test(); ", " - uint8_t data[] = { 0x02 }; - uint8_t result; - DATA_BLOB b; - struct ndr_pull *ndr; - - b.data = data; - b.length = 1; - ndr = ndr_pull_init_blob(&b, mem_ctx); - - if (NT_STATUS_IS_ERR(ndr_pull_uint8(ndr, NDR_SCALARS, &result))) - return 1; - - if (result != 0x02) - return 2; + uint8_t data[] = { 0x02 }; + uint8_t result; + DATA_BLOB b; + struct ndr_pull *ndr; + + b.data = data; + b.length = 1; + ndr = ndr_pull_init_blob(&b, mem_ctx); + + if (!NT_STATUS_IS_OK(ndr_pull_uint8(ndr, NDR_SCALARS, &result))) + return 1; + + if (result != 0x02) + return 2; "); diff --git a/tools/pidl/tests/ndr_string.pl b/tools/pidl/tests/ndr_string.pl index 23d94be640..4568ec89b8 100755 --- a/tools/pidl/tests/ndr_string.pl +++ b/tools/pidl/tests/ndr_string.pl @@ -18,7 +18,7 @@ test_samba4_ndr("string-pull-empty", struct TestString r; r.in.data = NULL; - if (NT_STATUS_IS_ERR(ndr_pull_TestString(ndr, NDR_IN, &r))) + if (!NT_STATUS_IS_OK(ndr_pull_TestString(ndr, NDR_IN, &r))) return 1; if (r.in.data == NULL) @@ -40,7 +40,7 @@ test_samba4_ndr("string-ascii-pull", struct TestString r; r.in.data = NULL; - if (NT_STATUS_IS_ERR(ndr_pull_TestString(ndr, NDR_IN, &r))) + if (!NT_STATUS_IS_OK(ndr_pull_TestString(ndr, NDR_IN, &r))) return 1; if (r.in.data == NULL) @@ -69,7 +69,7 @@ test_samba4_ndr("string-out", char *str = NULL; r.out.data = &str; - if (NT_STATUS_IS_ERR(ndr_pull_TestString(ndr, NDR_IN, &r))) + if (!NT_STATUS_IS_OK(ndr_pull_TestString(ndr, NDR_IN, &r))) return 1; if (r.out.data == NULL) diff --git a/tools/pidl/tests/ndr_tagtype.pl b/tools/pidl/tests/ndr_tagtype.pl index f8250a90ef..7f5c24627a 100755 --- a/tools/pidl/tests/ndr_tagtype.pl +++ b/tools/pidl/tests/ndr_tagtype.pl @@ -17,7 +17,7 @@ test_samba4_ndr('struct-notypedef', '[public] struct bla { uint8 x; }; ', DATA_BLOB result_blob; r.x = 13; - if (NT_STATUS_IS_ERR(ndr_push_STRUCT_bla(ndr, NDR_SCALARS|NDR_BUFFERS, &r))) + if (!NT_STATUS_IS_OK(ndr_push_STRUCT_bla(ndr, NDR_SCALARS|NDR_BUFFERS, &r))) return 1; result_blob = ndr_push_blob(ndr); @@ -30,13 +30,13 @@ test_samba4_ndr('struct-notypedef-used', '[public] struct bla { uint8 x; }; [public] void myfn([in] struct bla r); ', ' struct ndr_push *ndr = ndr_push_init_ctx(NULL); - struct bla r; + struct myfn fn; uint8_t expected[] = { 0x0D }; DATA_BLOB expected_blob = { expected, 1 }; DATA_BLOB result_blob; - r.x = 13; + fn.in.r.x = 13; - if (NT_STATUS_IS_ERR(ndr_push_myfn(ndr, NDR_IN, &r))) + if (!NT_STATUS_IS_OK(ndr_push_myfn(ndr, NDR_IN, &fn))) return 1; result_blob = ndr_push_blob(ndr); @@ -47,16 +47,16 @@ test_samba4_ndr('struct-notypedef-used', '[public] struct bla { uint8 x; }; test_samba4_ndr('struct-notypedef-embedded', 'struct bla { uint8 x; }; - [public] struct myfn { struct bla r; }; ', + [public] struct myst { struct bla r; }; ', ' struct ndr_push *ndr = ndr_push_init_ctx(NULL); - struct bla r; + struct myst st; uint8_t expected[] = { 0x0D }; DATA_BLOB expected_blob = { expected, 1 }; DATA_BLOB result_blob; - r.x = 13; + st.r.x = 13; - if (NT_STATUS_IS_ERR(ndr_push_STRUCT_myfn(ndr, NDR_IN, &r))) + if (!NT_STATUS_IS_OK(ndr_push_STRUCT_myst(ndr, NDR_IN, &st))) return 1; result_blob = ndr_push_blob(ndr); |