The branch, master has been updated via 08b91f5e037 gitlab-ci: Rename DOCKER to CONTAINER via 6d232f3f7c6 waf: Do not install internal header via 96df6878ed5 lib:util: Move discard_const(_p) to own header for libndr.h via 532ce0d20a8 pidl: Use NDR_ZERO_STRUCT(P) macros via 666802a3db3 librpc:ndr: Add NDR_ZERO_STRUCT(P) macros via 2a7086f1ac4 librpc:ndr: Implement ndr_zero_memory() via eeabe171152 lib:util: Add GPL header to tftw.c via 4985d73c256 lib:util: Add missing "replace.h" header in tftw from ea2de21dd8a s4 dsdb util: samdb_client_site_name clean up
https://git.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 08b91f5e0373e3b76a8d3968013b9fc13c9fc82e Author: Andreas Schneider <a...@samba.org> Date: Thu Feb 14 08:19:46 2019 +0100 gitlab-ci: Rename DOCKER to CONTAINER This is just a runc container, not tied to docker. See podman.io Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Björn Jacke <b...@sernet.de> Autobuild-User(master): Andreas Schneider <a...@cryptomilk.org> Autobuild-Date(master): Thu Feb 14 17:32:38 CET 2019 on sn-devel-144 commit 6d232f3f7c64f9b01439326e0e9b6d9df9a0bcbb Author: Andreas Schneider <a...@samba.org> Date: Wed Feb 13 10:44:45 2019 +0100 waf: Do not install internal header We should not install header files without an public API: - memory.h - safe_strings.h - talloc_stack.h BUG: https://bugzilla.samba.org/show_bug.cgi?id=13778 Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit 96df6878ed521b7e744d703abb32a585500d3b94 Author: Andreas Schneider <a...@samba.org> Date: Wed Feb 6 16:05:48 2019 +0100 lib:util: Move discard_const(_p) to own header for libndr.h BUG: https://bugzilla.samba.org/show_bug.cgi?id=13778 Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Guenther Deschner <g...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit 532ce0d20a8016c1270ea689de627da8aa4abfdd Author: Andreas Schneider <a...@samba.org> Date: Wed Feb 13 10:41:19 2019 +0100 pidl: Use NDR_ZERO_STRUCT(P) macros BUG: https://bugzilla.samba.org/show_bug.cgi?id=13778 Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit 666802a3db3115ca09f3ffed58c8e4a8cabd65de Author: Andreas Schneider <a...@samba.org> Date: Wed Feb 13 10:38:02 2019 +0100 librpc:ndr: Add NDR_ZERO_STRUCT(P) macros BUG: https://bugzilla.samba.org/show_bug.cgi?id=13778 Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit 2a7086f1ac4ad91fb7cd958e9386abb996794ed1 Author: Andreas Schneider <a...@samba.org> Date: Wed Feb 13 10:35:13 2019 +0100 librpc:ndr: Implement ndr_zero_memory() BUG: https://bugzilla.samba.org/show_bug.cgi?id=13778 Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit eeabe171152fdb09fe2f51a0a41b1c5e4df25efd Author: Andreas Schneider <a...@samba.org> Date: Wed Feb 6 17:03:59 2019 +0100 lib:util: Add GPL header to tftw.c BUG: https://bugzilla.samba.org/show_bug.cgi?id=13778 Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Guenther Deschner <g...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> commit 4985d73c256d763909618a3d5ca4e66ab8f19337 Author: Andreas Schneider <a...@samba.org> Date: Wed Feb 6 17:03:28 2019 +0100 lib:util: Add missing "replace.h" header in tftw BUG: https://bugzilla.samba.org/show_bug.cgi?id=13778 Signed-off-by: Andreas Schneider <a...@samba.org> Reviewed-by: Guenther Deschner <g...@samba.org> Reviewed-by: Stefan Metzmacher <me...@samba.org> ----------------------------------------------------------------------- Summary of changes: .gitlab-ci.yml | 10 +++--- lib/util/discard.h | 51 +++++++++++++++++++++++++++ lib/util/memory.h | 27 -------------- lib/util/samba_util.h | 1 + lib/util/tftw.c | 14 ++++++++ lib/util/wscript_build | 18 +++++++++- librpc/ABI/{ndr-0.1.2.sigs => ndr-0.2.0.sigs} | 1 + librpc/ndr/libndr.h | 10 +++++- librpc/ndr/util.c | 5 +++ librpc/wscript_build | 2 +- pidl/lib/Parse/Pidl/Samba3/ServerNDR.pm | 2 +- pidl/lib/Parse/Pidl/Samba4/COM/Proxy.pm | 2 +- pidl/lib/Parse/Pidl/Samba4/NDR/Client.pm | 6 ++-- pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm | 6 ++-- source3/libsmb/samlogon_cache.c | 1 + 15 files changed, 113 insertions(+), 43 deletions(-) create mode 100644 lib/util/discard.h copy librpc/ABI/{ndr-0.1.2.sigs => ndr-0.2.0.sigs} (99%) Changeset truncated at 500 lines: diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 53b2acf121f..8dce4af6e0b 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -3,15 +3,15 @@ variables: # we run autobuild.py inside a samba CI docker image located on gitlab's registry - SAMBA_CI_DOCKER_REGISTRY: registry.gitlab.com - SAMBA_CI_DOCKER_NAME: samba-team/samba - SAMBA_CI_DOCKER_TAG: latest - SAMBA_CI_DOCKER_IMAGE: $SAMBA_CI_DOCKER_REGISTRY/$SAMBA_CI_DOCKER_NAME:$SAMBA_CI_DOCKER_TAG + SAMBA_CI_CONTAINER_REGISTRY: registry.gitlab.com + SAMBA_CI_CONTAINER_NAME: samba-team/samba + SAMBA_CI_CONTAINER_TAG: latest + SAMBA_CI_CONTAINER_IMAGE: $SAMBA_CI_CONTAINER_REGISTRY/$SAMBA_CI_CONTAINER_NAME:$SAMBA_CI_CONTAINER_TAG GIT_STRATEGY: fetch GIT_DEPTH: "3" .shared_template: - image: $SAMBA_CI_DOCKER_IMAGE + image: $SAMBA_CI_CONTAINER_IMAGE stage: build tags: - docker diff --git a/lib/util/discard.h b/lib/util/discard.h new file mode 100644 index 00000000000..d2b74ac989c --- /dev/null +++ b/lib/util/discard.h @@ -0,0 +1,51 @@ +/* + Unix SMB/CIFS implementation. + Samba utility functions + Copyright (C) Andrew Tridgell 1992-1999 + Copyright (C) Jelmer Vernooij <jel...@samba.org> 2008 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <http://www.gnu.org/licenses/>. +*/ + +#ifndef _SAMBA_DISCARD_H_ +#define _SAMBA_DISCARD_H_ + +/** + this is a warning hack. The idea is to use this everywhere that we + get the "discarding const" warning from gcc. That doesn't actually + fix the problem of course, but it means that when we do get to + cleaning them up we can do it by searching the code for + discard_const. + + It also means that other error types aren't as swamped by the noise + of hundreds of const warnings, so we are more likely to notice when + we get new errors. + + Please only add more uses of this macro when you find it + _really_ hard to fix const warnings. Our aim is to eventually use + this function in only a very few places. + + Also, please call this via the discard_const_p() macro interface, as that + makes the return type safe. +*/ +#ifndef discard_const +#define discard_const(ptr) ((void *)((uintptr_t)(ptr))) +#endif + +/** Type-safe version of discard_const */ +#ifndef discard_const_p +#define discard_const_p(type, ptr) ((type *)discard_const(ptr)) +#endif + +#endif /* _SAMBA_DISCARD_H_ */ diff --git a/lib/util/memory.h b/lib/util/memory.h index 3278f6b3c21..0e151cc5f66 100644 --- a/lib/util/memory.h +++ b/lib/util/memory.h @@ -94,31 +94,4 @@ #define PTR_DIFF(p1,p2) ((ptrdiff_t)(((const char *)(p1)) - (const char *)(p2))) #endif -/** - this is a warning hack. The idea is to use this everywhere that we - get the "discarding const" warning from gcc. That doesn't actually - fix the problem of course, but it means that when we do get to - cleaning them up we can do it by searching the code for - discard_const. - - It also means that other error types aren't as swamped by the noise - of hundreds of const warnings, so we are more likely to notice when - we get new errors. - - Please only add more uses of this macro when you find it - _really_ hard to fix const warnings. Our aim is to eventually use - this function in only a very few places. - - Also, please call this via the discard_const_p() macro interface, as that - makes the return type safe. -*/ -#ifndef discard_const -#define discard_const(ptr) ((void *)((uintptr_t)(ptr))) -#endif - -/** Type-safe version of discard_const */ -#ifndef discard_const_p -#define discard_const_p(type, ptr) ((type *)discard_const(ptr)) -#endif - #endif /* _SAMBA_MEMORY_H_ */ diff --git a/lib/util/samba_util.h b/lib/util/samba_util.h index 8c21c30ebc9..615bb13d6c2 100644 --- a/lib/util/samba_util.h +++ b/lib/util/samba_util.h @@ -54,6 +54,7 @@ extern const char *panic_action; #endif #include "lib/util/memory.h" +#include "lib/util/discard.h" #include "fault.h" diff --git a/lib/util/tftw.c b/lib/util/tftw.c index c460e32be04..b731a2ef03a 100644 --- a/lib/util/tftw.c +++ b/lib/util/tftw.c @@ -2,8 +2,22 @@ * Copyright (c) 2008-2018 by Andreas Schneider <a...@samba.org> * * Adopted from the csync source code + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. */ +#include "replace.h" #include <errno.h> #include <sys/types.h> #include <dirent.h> diff --git a/lib/util/wscript_build b/lib/util/wscript_build index 64778b3e4c3..5ca72c5c03c 100644 --- a/lib/util/wscript_build +++ b/lib/util/wscript_build @@ -127,7 +127,23 @@ else: tftw.c''', deps='samba-util-core DYNCONFIG close-low-fd tiniparser genrand util_str_hex', public_deps='talloc tevent execinfo pthread LIBCRYPTO charset util_setid', - public_headers='debug.h attr.h byteorder.h data_blob.h memory.h safe_string.h time.h talloc_stack.h string_wrappers.h idtree.h idtree_random.h blocking.h signal.h substitute.h fault.h genrand.h tfork.h', + public_headers=''' + attr.h + byteorder.h + data_blob.h + debug.h + discard.h + time.h + string_wrappers.h + idtree.h + idtree_random.h + blocking.h + signal.h + substitute.h + fault.h + genrand.h + tfork.h + ''', header_path= [ ('dlinklist.h samba_util.h', '.'), ('*', 'util') ], local_include=False, vnum='0.0.1', diff --git a/librpc/ABI/ndr-0.1.2.sigs b/librpc/ABI/ndr-0.2.0.sigs similarity index 99% copy from librpc/ABI/ndr-0.1.2.sigs copy to librpc/ABI/ndr-0.2.0.sigs index bf9fdfc922c..6346f2fb491 100644 --- a/librpc/ABI/ndr-0.1.2.sigs +++ b/librpc/ABI/ndr-0.2.0.sigs @@ -261,3 +261,4 @@ ndr_token_retrieve_cmp_fn: enum ndr_err_code (struct ndr_token_list *, const voi ndr_token_store: enum ndr_err_code (TALLOC_CTX *, struct ndr_token_list *, const void *, uint32_t) ndr_transfer_syntax_ndr: uuid = {time_low = 2324192516, time_mid = 7403, time_hi_and_version = 4553, clock_seq = "\237\350", node = "\b\000+\020H`"}, if_version = 2 ndr_transfer_syntax_ndr64: uuid = {time_low = 1903232307, time_mid = 48826, time_hi_and_version = 18743, clock_seq = "\203\031", node = "\265\333\357\234\314\066"}, if_version = 1 +ndr_zero_memory: void (void *, size_t) diff --git a/librpc/ndr/libndr.h b/librpc/ndr/libndr.h index c31496fe1dc..8a15fccfe09 100644 --- a/librpc/ndr/libndr.h +++ b/librpc/ndr/libndr.h @@ -26,7 +26,7 @@ #define __LIBNDR_H__ #include <talloc.h> -#include "../lib/util/memory.h" /* for discard_const */ +#include "../lib/util/discard.h" /* for discard_const */ #include "../lib/util/byteorder.h" #include "../lib/util/data_blob.h" #include "../lib/util/time.h" @@ -411,6 +411,13 @@ enum ndr_compression_alg { if (unlikely(!(s))) return ndr_push_error(ndr, NDR_ERR_ALLOC, "push alloc %s failed: %s\n", # s, __location__); \ } while (0) +#define NDR_ZERO_STRUCT(x) ndr_zero_memory(&(x), sizeof(x)) +#define NDR_ZERO_STRUCTP(x) do { \ + if ((x) != NULL) { \ + ndr_zero_memory((x), sizeof(*(x))); \ + } \ +} while(0) + /* these are used when generic fn pointers are needed for ndr push/pull fns */ typedef enum ndr_err_code (*ndr_push_flags_fn_t)(struct ndr_push *, int ndr_flags, const void *); typedef enum ndr_err_code (*ndr_pull_flags_fn_t)(struct ndr_pull *, int ndr_flags, void *); @@ -493,6 +500,7 @@ void ndr_print_dom_sid0(struct ndr_print *ndr, const char *name, const struct do size_t ndr_size_dom_sid0(const struct dom_sid *sid, int flags); void ndr_print_GUID(struct ndr_print *ndr, const char *name, const struct GUID *guid); void ndr_print_sockaddr_storage(struct ndr_print *ndr, const char *name, const struct sockaddr_storage *ss); +void ndr_zero_memory(void *ptr, size_t len); bool ndr_syntax_id_equal(const struct ndr_syntax_id *i1, const struct ndr_syntax_id *i2); char *ndr_syntax_id_to_string(TALLOC_CTX *mem_ctx, const struct ndr_syntax_id *id); bool ndr_syntax_id_from_string(const char *s, struct ndr_syntax_id *id); diff --git a/librpc/ndr/util.c b/librpc/ndr/util.c index b2df28dde09..0eb7eba9e5e 100644 --- a/librpc/ndr/util.c +++ b/librpc/ndr/util.c @@ -29,3 +29,8 @@ _PUBLIC_ void ndr_print_sockaddr_storage(struct ndr_print *ndr, const char *name char addr[INET6_ADDRSTRLEN]; ndr->print(ndr, "%-25s: %s", name, print_sockaddr(addr, sizeof(addr), ss)); } + +_PUBLIC_ void ndr_zero_memory(void *ptr, size_t len) +{ + memset_s(ptr, len, 0, len); +} diff --git a/librpc/wscript_build b/librpc/wscript_build index 9669dfce2bf..8e113c422b2 100644 --- a/librpc/wscript_build +++ b/librpc/wscript_build @@ -725,7 +725,7 @@ bld.SAMBA_LIBRARY('ndr', public_deps='samba-errors talloc samba-util util_str_hex', public_headers='gen_ndr/misc.h gen_ndr/ndr_misc.h ndr/libndr.h:ndr.h', header_path= [('*gen_ndr*', 'gen_ndr')], - vnum='0.1.2', + vnum='0.2.0', abi_directory='ABI', abi_match='ndr_* GUID_*', ) diff --git a/pidl/lib/Parse/Pidl/Samba3/ServerNDR.pm b/pidl/lib/Parse/Pidl/Samba3/ServerNDR.pm index c87d17a5a78..fa7303b8543 100644 --- a/pidl/lib/Parse/Pidl/Samba3/ServerNDR.pm +++ b/pidl/lib/Parse/Pidl/Samba3/ServerNDR.pm @@ -103,7 +103,7 @@ sub CallWithStruct($$$$$$) if (grep(/out/, @{$_->{DIRECTION}})) { $hasout = 1; } } - pidl "ZERO_STRUCT(r->out);" if ($hasout); + pidl "NDR_ZERO_STRUCT(r->out);" if ($hasout); foreach (@{$fn->{ELEMENTS}}) { my @dir = @{$_->{DIRECTION}}; diff --git a/pidl/lib/Parse/Pidl/Samba4/COM/Proxy.pm b/pidl/lib/Parse/Pidl/Samba4/COM/Proxy.pm index 35e6e3f0d19..de050e8f8c6 100644 --- a/pidl/lib/Parse/Pidl/Samba4/COM/Proxy.pm +++ b/pidl/lib/Parse/Pidl/Samba4/COM/Proxy.pm @@ -101,7 +101,7 @@ static $tn dcom_proxy_$interface->{NAME}_$name(struct $interface->{NAME} *d, TAL return status; } - ZERO_STRUCT(r.in.ORPCthis); + NDR_ZERO_STRUCT(r.in.ORPCthis); r.in.ORPCthis.version.MajorVersion = COM_MAJOR_VERSION; r.in.ORPCthis.version.MinorVersion = COM_MINOR_VERSION; "; diff --git a/pidl/lib/Parse/Pidl/Samba4/NDR/Client.pm b/pidl/lib/Parse/Pidl/Samba4/NDR/Client.pm index 040cd5a4bd3..734e86dd183 100644 --- a/pidl/lib/Parse/Pidl/Samba4/NDR/Client.pm +++ b/pidl/lib/Parse/Pidl/Samba4/NDR/Client.pm @@ -496,7 +496,7 @@ sub ParseFunction_Send($$$$) if (defined($fn->{RETURN_TYPE})) { $self->pidl("/* Result */"); - $self->pidl("ZERO_STRUCT(state->orig.out.result);"); + $self->pidl("NDR_ZERO_STRUCT(state->orig.out.result);"); $self->pidl(""); } @@ -585,7 +585,7 @@ sub ParseFunction_Done($$$$) } $self->pidl("/* Reset temporary structure */"); - $self->pidl("ZERO_STRUCT(state->tmp);"); + $self->pidl("NDR_ZERO_STRUCT(state->tmp);"); $self->pidl(""); $self->pidl("tevent_req_done(req);"); @@ -698,7 +698,7 @@ sub ParseFunction_Sync($$$$) if (defined($fn->{RETURN_TYPE})) { $self->pidl("/* Result */"); - $self->pidl("ZERO_STRUCT(r.out.result);"); + $self->pidl("NDR_ZERO_STRUCT(r.out.result);"); $self->pidl(""); } diff --git a/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm b/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm index eae58a9a432..432e52f89c4 100644 --- a/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm +++ b/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm @@ -1134,7 +1134,7 @@ sub ParseElementPullLevel if (has_property($e, "skip") or has_property($e, "skip_noinit")) { $self->pidl("/* [skip] '$var_name' */"); if (not has_property($e, "skip_noinit")) { - $self->pidl("ZERO_STRUCT($var_name);"); + $self->pidl("NDR_ZERO_STRUCT($var_name);"); } return; } @@ -2551,7 +2551,7 @@ sub ParseFunctionPull($$) # out to be too tricky (tridge) foreach my $e (@{$fn->{ELEMENTS}}) { next unless grep(/out/, @{$e->{DIRECTION}}); - $self->pidl("ZERO_STRUCT(r->out);"); + $self->pidl("NDR_ZERO_STRUCT(r->out);"); $self->pidl(""); last; } @@ -2600,7 +2600,7 @@ sub ParseFunctionPull($$) if (grep(/in/, @{$e->{DIRECTION}})) { $self->pidl("*r->out.$e->{NAME} = *r->in.$e->{NAME};"); } else { - $self->pidl("ZERO_STRUCTP(r->out.$e->{NAME});"); + $self->pidl("NDR_ZERO_STRUCTP(r->out.$e->{NAME});"); } } } diff --git a/source3/libsmb/samlogon_cache.c b/source3/libsmb/samlogon_cache.c index 494eb10a6a8..a9ddaab1a41 100644 --- a/source3/libsmb/samlogon_cache.c +++ b/source3/libsmb/samlogon_cache.c @@ -27,6 +27,7 @@ #include "system/time.h" #include "lib/util/debug.h" #include "lib/util/talloc_stack.h" +#include "lib/util/memory.h" /* for SAFE_FREE() */ #include "source3/lib/util_path.h" #include "librpc/gen_ndr/ndr_krb5pac.h" #include "../libcli/security/security.h" -- Samba Shared Repository