1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-05 09:18:06 +03:00
Commit Graph

48 Commits

Author SHA1 Message Date
Samuel Cabrero
1903467014 pidl:NDR/ServerCompat: Compat server PIDL parser
Signed-off-by: Samuel Cabrero <scabrero@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
2020-03-20 15:36:31 +00:00
Andrew Bartlett
e6fc8e79ae lib/fuzzing: Split up automatically build fuzzers into TYPE_{IN,OUT,STRUCT}
The advise is that a fuzz target should be as small as possible
so we split this up.  Splitting up by function would build too
many fuzzers, but this should help a little.

See for example:
https://github.com/google/fuzzing/blob/master/docs/good-fuzz-target.md#large-apis

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Gary Lockyer <gary@samba.org>
2019-12-11 02:55:32 +00:00
Andrew Bartlett
6f7a9e8788 lib/fuzzing: Link only the required NDR_ subsystems into ndr_fuzz_X binaries
This reduces the binary size and shows that we are linked against the correct
ndr_table_ global variable.  This might help the fuzzing engine know there
is not much more of the binary to find if unreachable code is not included.

Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
2019-12-10 07:50:28 +00:00
Douglas Bagnall
7b265830ad lib/fuzzing: add fuzz_ndr_X
This NDR fuzzer links with each "interface" in the IDL files to
create avsingle binary.  This tries to matches what the fuzzing
engines desire.

It started as a copy of ndrdump but very little of that remains
in place.

The fancy build rules try to avoid needing a lof of boilerplate
in the wscript_build files and ensure new fuzzers are generated
and run when new IDL is added automatically.

Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Signed-off-by: Andrew Bartlett <abartlet@samba.org>
Pair-programmed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
2019-12-10 07:50:28 +00:00
Douglas Bagnall
a78f69cb7d pidl: optionally annotate output for debug purposes
It can sometimes be hard to tell which bit of pidl generated which bit
of C. This commit wants to help.

If the PIDL_DEVELOPER environment variable is set (via waf
--pidl-developer or some other means), pidl will annotate *most* C
indicating which lines were generated by which bits of pidl. It looks
something like this:

_PUBLIC_ enum ndr_err_code ndr_push_auth_session_info(struct ndr_push *ndr, int ndr_flags, const struct auth_session_info *r)
{  //:PIDL: Parse::Pidl::Samba4::NDR::Parser::ParseTypePushFunction  lib/Parse/Pidl/Samba4/NDR/Parser.pm:3079
	NDR_PUSH_CHECK_FLAGS(ndr, ndr_flags);  //:PIDL: Parse::Pidl::Samba4::NDR::Parser::ParseStructPush  lib/Parse/Pidl/Samba4/NDR/Parser.pm:604
	if (ndr_flags & NDR_SCALARS) {
		NDR_CHECK(ndr_push_align(ndr, 5));  //:PIDL: Parse::Pidl::Samba4::NDR::Parser::ParseStructPushPrimitives  lib/Parse/Pidl/Samba4/NDR/Parser.pm:1448
		NDR_CHECK(ndr_push_unique_ptr(ndr, r->security_token));  //:PIDL: Parse::Pidl::Samba4::NDR::Parser::ParsePtrPush  lib/Parse/Pidl/Samba4/NDR/Parser.pm:604
		NDR_CHECK(ndr_push_unique_ptr(ndr, r->unix_token));
		NDR_CHECK(ndr_push_unique_ptr(ndr, r->info));
		NDR_CHECK(ndr_push_unique_ptr(ndr, r->unix_info));
		NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));
		/* [ignore] 'torture' */  //:PIDL: Parse::Pidl::Samba4::NDR::Parser::ParseElementPushLevel  lib/Parse/Pidl/Samba4/NDR/Parser.pm:729
		NDR_CHECK(ndr_push_DATA_BLOB(ndr, NDR_SCALARS, r->session_key));  //:PIDL: Parse::Pidl::Samba4::NDR::Parser::ParseDataPush  lib/Parse/Pidl/Samba4/NDR/Parser.pm:604
		NDR_CHECK(ndr_push_uint3264(ndr, NDR_SCALARS, 0));  //:PIDL: Parse::Pidl::Samba4::NDR::Parser::ParsePtrPush  lib/Parse/Pidl/Samba4/NDR/Parser.pm:604
		/* [ignore] 'credentials' */  //:PIDL: Parse::Pidl::Samba4::NDR::Parser::ParseElementPushLevel  lib/Parse/Pidl/Samba4/NDR/Parser.pm:729

The comments starting with '//:PIDL:' have the function name, the filename,
and line number. The comment follows the ordinary output, and uses the '//'
style so as not to interfere with multiline /* */ comments if they happen
to exist.

A '//:PIDL:' comment is added whenever the pidl function or indentation
level changes, and very occasionally at other places if pidl runs for a
while without either of these things happening.

This does not affect pidl parsers that do not inherit from Parse::Pidl::Base,
and is careful to have no performance impact on non-debug generation.

This may help with semi-automated flow analysis.

Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
2019-12-04 05:10:31 +00:00
Stefan Metzmacher
660b872163 wafsamba: fix pidl dependencies to rebuild on pidl changes
Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
2018-12-13 08:52:23 +01:00
Stefan Metzmacher
65f7f7ffe5 wafsamba: simplify SAMBA_PIDL_TABLES() rule
The builddir is not bin/default/ instead of just bin/,
so we don't need to strip 'default/' anymore.

And the '--output ${TGT}' part is not really implemented.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
2018-11-20 01:33:34 +01:00
Stefan Metzmacher
076afab4cf wafsamba: remove unused Build.BuildContext.pre_build overload
This is not needed and also fixed the interaction between
vim and ':make'

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
2018-11-20 01:33:34 +01:00
Stefan Metzmacher
c0104a4a04 wafsamba: remove hardcoded '..' and '/default/' from SAMBA_PIDL()
This makes it possible to remove some move waf 1.8 compat code.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
2018-11-20 01:33:34 +01:00
Alexander Bokovoy
4e65b33c1d third_party:waf: update to upstream 2.0.4 release
Update third_party/waf/ to 2.0.4 to bring us closer to Python 3

This change requires a number of changes in buildtools/ too.

Signed-off-by: Alexander Bokovoy <ab@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
2018-09-05 06:37:22 +02:00
Thomas Nagy
8077f462c9 build:wafsamba: Build on waf 1.9
Signed-off-by: Thomas Nagy <tnagy@waf.io>
Reviewed-by: Alexander Bokovoy <ab@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
2018-09-05 06:37:21 +02:00
Thomas Nagy
2666d06f29 build:wafsamba: removed most import * statements
The 'import *' statements make it more difficult to reason about
the modules and tends to conceal bugs. These changes enable running
pyflakes against most of the build scripts.

Signed-off-by: Thomas Nagy <tnagy@waf.io>
Reviewed-by: Andrew Bartlet <abartlet@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>

Autobuild-User(master): Andreas Schneider <asn@cryptomilk.org>
Autobuild-Date(master): Wed Oct 28 12:52:17 CET 2015 on sn-devel-104
2015-10-28 12:52:17 +01:00
Thomas Nagy
ba6c7df7f9 build:wafsamba: Use the Waf 1.8 API get_tgen_by_name instead of name_to_obj
Signed-off-by: Thomas Nagy <tnagy@waf.io>
Reviewed-by: Michael Adam <obnox@samba.org>
Reviewed-by: Andrew Bartlett <abartlet@samba.org>

Autobuild-User(master): Andrew Bartlett <abartlet@samba.org>
Autobuild-Date(master): Wed Sep  2 03:49:51 CEST 2015 on sn-devel-104
2015-09-02 03:49:51 +02:00
Thomas Nagy
5771276be9 Transition to waf 1.8: replaced on_results by update_outputs
Reviewed-By: Jelmer Vernooij <jelmer@samba.org>

Reviewed-by: Andrew Bartlett <abartlet@samba.org>
2015-03-16 03:00:07 +01:00
Andrew Bartlett
afe9343880 build: Do not pass CPP="" to pidl, skip the env variable entirely
This will cause pidl to use $CC -E instead.

Andrew Bartlett

Reviewed-by: Stefan Metzmacher <metze@samba.org>
2013-03-25 10:25:36 +01:00
Andrew Bartlett
7dc6dfd90c build: Remove the forced use of only the first part of the compiler string
This corrects parts of 378295c3fe and
301d59caf2.  This is seen if CC="ccache
gcc" and CPP isn't used for some reason.

Andrew Bartlett

Reviewed-by: Stefan Metzmacher <metze@samba.org>
2013-03-25 10:23:00 +01:00
Andrew Bartlett
06eee7f50b build: Remove support for IDL-generated files in git tree
This was added in a9ea3d6fa5 but is no
longer required, as we do not store IDL-generated files in GIT.

Andrew Bartlett
2012-10-28 19:39:00 +11:00
Jelmer Vernooij
88a041aa21 wafsamba: Expand tabs. 2012-02-10 00:07:56 +01:00
Stefan Metzmacher
dd141cf5f7 wafsamba: quote CPP and CC values when calling pidl
metze

Autobuild-User: Stefan Metzmacher <metze@samba.org>
Autobuild-Date: Wed Jan 19 20:23:50 CET 2011 on sn-devel-104
2011-01-19 20:23:50 +01:00
Stefan Metzmacher
e0a9b58de8 buildtools/wafsamba: import 'sys' and 'Logs' if we use them
We should avoid generating a backtrace in a normal
error case, just because sys.exit(1) isn't known.

metze
2011-01-05 12:30:23 +01:00
Matthieu Patou
a1db341e46 build: cpp is prefixed by CPP=
Autobuild-User: Matthieu Patou <mat@samba.org>
Autobuild-Date: Fri Dec 10 22:34:45 CET 2010 on sn-devel-104
2010-12-10 22:34:45 +01:00
Matthieu Patou
6ef8524840 build: compiler on aix is xlc_r not xlr_c
Autobuild-User: Matthieu Patou <mat@samba.org>
Autobuild-Date: Fri Dec 10 17:54:49 CET 2010 on sn-devel-104
2010-12-10 17:54:49 +01:00
Matthieu Patou
d1bfa333f5 build: reset cpp on host with xlr_c and let pidl use $CC -E
Autobuild-User: Matthieu Patou <mat@samba.org>
Autobuild-Date: Fri Dec 10 13:27:22 CET 2010 on sn-devel-104
2010-12-10 13:27:22 +01:00
Matthieu Patou
378295c3fe build: detect if conf.env['CPP'] is an array or not
Autobuild-User: Matthieu Patou <mat@samba.org>
Autobuild-Date: Fri Dec 10 10:18:20 CET 2010 on sn-devel-104
2010-12-10 10:18:20 +01:00
Matthieu Patou
301d59caf2 build: use CPP and CC values when calling pidl 2010-12-10 02:39:42 +03:00
Andrew Tridgell
fcdbd06136 waf: fixed the build with a space in the source directory 2010-11-21 23:10:14 +11:00
Andrew Tridgell
630a2eb68a waf: make the error msg when gen_ndr directory is missing clearer
the next time someone removes gen_ndr/README the fix should be more
obvious.
2010-07-19 22:17:17 +10:00
Andrew Bartlett
79bd6a6764 waf: Make waf handle IDL files from Samba3
For s3compat, we need to handle IDL files not in the current directory
(so the incoming file names have a directory prefix - so we must use
os.path.basename()).

We also need to be able to disable the addition of some IDL files into
the tables.c/tables.h - some of the Samba3 IDL files are in conflict
with Samba4.

Andrew Bartlett
2010-05-14 23:25:45 +10:00
Andrew Tridgell
69ce29826c build: more dependencies on /usr/bin/perl -> ${PERL} 2010-04-18 23:08:28 +10:00
Andrew Tridgell
3ca5fd8e03 build: cope with perl not being in /usr/bin/perl
This should fixed the pidl build on SerNet-NetBSD5
2010-04-18 22:55:16 +10:00
Andrew Tridgell
4ca46c6b8d build: make the handling of relative paths a bit saner
This should fix a problem that Anatoliy has struck with the PIDL
rules. It also brings us much closer to a working build for a true out
of tree build (ie. with waf configure -b /tmp/build)
2010-04-08 22:11:49 +10:00
Andrew Tridgell
0c294655f6 build: don't depend on the blib/ files in SAMBA_PIDL() 2010-04-06 20:27:23 +10:00
Andrew Tridgell
da1fed0a8f build: nicer progress display for a standard build 2010-04-06 20:27:15 +10:00
Andrew Tridgell
b7ff06b904 build: tidy up the wafsamba rules a bit
use python string conventions for function comments
2010-04-06 20:27:14 +10:00
Andrew Tridgell
92de30dcab build: fixed build group for the PIDL tables generation 2010-04-06 20:27:11 +10:00
Andrew Tridgell
723e9b87ce build: only depend on the actual pidl source files in the pidl rule
We don't need to depend on the wscript files, or any backup editor
files.
2010-04-06 20:27:10 +10:00
Stefan Metzmacher
988bc0cdc2 build: make use on_results=True for some build rules
This makes sure we generate a checksum over the result.
In practice it means we no longer recompile when a proto header
is triggers a rebuild if it hasn't changed its md5sum.

metze
2010-04-06 20:27:05 +10:00
Andrew Tridgell
b7cc6d48d5 build: teach samba_pild.py about the --com-header and --dcom-proxy options 2010-04-06 20:26:52 +10:00
Andrew Tridgell
e4104eb085 build: more efficient pidl rules from ita
Don't re-scan the pidl source tree each time
2010-04-06 20:26:50 +10:00
Andrew Tridgell
a9ea3d6fa5 build: cope with the common gen_ndr files being in the git tree 2010-04-06 20:26:49 +10:00
Andrew Tridgell
844acb2260 build: waf quicktest nearly works
Rewrote wafsamba using a new dependency handling system, and started
adding the waf test code
2010-04-06 20:26:48 +10:00
Andrew Tridgell
8f1b809d2c build: nearly there on samba4 build 2010-04-06 20:26:47 +10:00
Andrew Tridgell
e916aff9e1 build: much nicer pidl rules 2010-04-06 20:26:47 +10:00
Andrew Tridgell
39807fd091 build: smarter list splitting 2010-04-06 20:26:42 +10:00
Andrew Tridgell
8c4e709818 build: use shell for TDR rule, as -- confuses the build rule 2010-04-06 20:26:40 +10:00
Andrew Tridgell
7ed65d2e12 build: result of hack session with ita 2010-04-06 20:26:40 +10:00
Andrew Tridgell
9129c3b3b6 build: fixes from ita 2010-04-06 20:26:40 +10:00
Andrew Tridgell
bc39054bc3 build: rewrote PIDL rules, breaking them into a separate waf tool 2010-04-06 20:26:39 +10:00