The branch, master has been updated via 232054c09b1 lib/util: remove extra safe_string.h file via c2ac923c6a5 s3: safe_string: do not include string_wrappers.h via 1fde7db3bc5 string_wrappers: include replace.h via d485f369e92 lib/util: do not make string_wrappers.h public via 87bf6aa7168 s3: safe_string: remove unnecessary include from afb5cee6e78 s3:smbd: Fix strict aliasing in get_socket_port()
https://git.samba.org/?p=samba.git;a=shortlog;h=master - Log ----------------------------------------------------------------- commit 232054c09b1932b3940f08aa818703b51d29d968 Author: Matthew DeVore <matv...@google.com> Date: Fri Aug 7 13:27:39 2020 -0700 lib/util: remove extra safe_string.h file lib/util/safe_string.h is similar to source3/include/safe_string.h, but the former has fewer checks. It is missing bcopy, strcasecmp, and strncasecmp. Add the missing elements to lib/util/safe_string.h remove the other safe_string.h which is in the source3-specific path. To accomodate existing uses of str(n?)casecmp, add #undef lines to source files where they are used. Signed-off-by: Matthew DeVore <matv...@google.com> Reviewed-by: David Mulder <dmul...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> Autobuild-User(master): Jeremy Allison <j...@samba.org> Autobuild-Date(master): Fri Aug 28 02:18:40 UTC 2020 on sn-devel-184 commit c2ac923c6a5d089fe110eb3eb6cf78298b46992d Author: Matthew DeVore <matv...@google.com> Date: Fri Aug 7 11:17:34 2020 -0700 s3: safe_string: do not include string_wrappers.h Rather than have safe_string.h #include string_wrappers.h, make users of string_wrappers.h include it explicitly. includes.h now no longer includes string_wrappers.h transitively. Still allow includes.h to #include safe_string.h for now so that as many modules as possible get the safety checks in it. Signed-off-by: Matthew DeVore <matv...@google.com> Reviewed-by: David Mulder <dmul...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 1fde7db3bc51b1f9a13388315b09ab3ce7f20b80 Author: Matthew DeVore <matv...@google.com> Date: Fri Aug 7 11:14:57 2020 -0700 string_wrappers: include replace.h To ensure we always get the right value for the config.h macro `HAVE_COMPILER_WILL_OPTIMIZE_OUT_FNS`, #include "lib/util/replace.h" rather than rely on it being included by the API user. Signed-off-by: Matthew DeVore <matv...@google.com> Reviewed-by: David Mulder <dmul...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit d485f369e92b5eb5c6482989c397a4eec29cd824 Author: Matthew DeVore <matv...@google.com> Date: Fri Aug 7 11:27:53 2020 -0700 lib/util: do not make string_wrappers.h public string_wrappers.h is a collection of macros. All but one of the macros rely on symbols not defined in public headers, so it is not useful as a public header. For instance, fstring is defined in includes.h. PTR_DIFF is defined in lib/util/memory.h, which is not public. checked_strlcpy is actually self-contained and is usable outside of a Samba build, but without a Samba config.h, it is just aliased to strlcpy. Signed-off-by: Matthew DeVore <matv...@google.com> Reviewed-by: David Mulder <dmul...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> commit 87bf6aa7168a6e44d52d91fb804b210a5fadbce6 Author: Matthew DeVore <matv...@google.com> Date: Thu Aug 6 15:42:46 2020 -0700 s3: safe_string: remove unnecessary include safe_string.h is only included by source3/include/includes.h, which already includes ntstatus.h, so it is not necessary to include it from within safe_string.h. Signed-off-by: Matthew DeVore <matv...@google.com> Reviewed-by: David Mulder <dmul...@samba.org> Reviewed-by: Jeremy Allison <j...@samba.org> ----------------------------------------------------------------------- Summary of changes: auth/credentials/credentials_krb5.c | 2 + auth/gensec/gensec_start.c | 2 + dfs_server/dfs_server_ad.c | 2 + lib/ldb/include/ldb.h | 1 + lib/util/charset/tests/charset.c | 3 + lib/util/charset/util_str.c | 4 ++ lib/util/safe_string.h | 22 ++++++- lib/util/string_wrappers.h | 2 + lib/util/util_net.c | 2 + lib/util/wscript_build | 1 - libcli/http/gensec/generic.c | 2 + libcli/http/http.c | 1 + libcli/http/http_auth.c | 3 + libcli/security/util_sid.c | 3 + libgpo/gpext/gpext.c | 1 + libgpo/gpo_filesync.c | 1 + librpc/rpc/dcerpc_util.c | 2 + librpc/rpc/dcesrv_core.c | 2 + nsswitch/wbinfo.c | 1 + nsswitch/wins.c | 1 + source3/auth/auth_builtin.c | 1 + source3/auth/pampass.c | 1 + source3/client/client.c | 1 + source3/include/includes.h | 2 +- source3/include/safe_string.h | 68 ---------------------- source3/lib/idmap_cache.c | 1 + source3/lib/privileges.c | 1 + source3/lib/string_replace.c | 1 + source3/lib/substitute.c | 1 + source3/lib/username.c | 1 + source3/lib/util.c | 1 + source3/lib/util_sd.c | 1 + source3/lib/util_sid.c | 1 + source3/lib/wins_srv.c | 1 + source3/libnet/libnet_dssync_passdb.c | 1 + source3/librpc/crypto/gse_krb5.c | 1 + source3/libsmb/cli_smb2_fnum.c | 1 + source3/libsmb/clidgram.c | 1 + source3/libsmb/cliprint.c | 1 + source3/libsmb/clirap.c | 1 + source3/libsmb/libsmb_dir.c | 1 + source3/libsmb/libsmb_xattr.c | 1 + source3/libsmb/namequery.c | 1 + source3/libsmb/namequery_dc.c | 1 + source3/libsmb/nmblib.c | 1 + source3/modules/vfs_afsacl.c | 1 + source3/modules/vfs_default.c | 1 + source3/modules/vfs_full_audit.c | 1 + source3/modules/vfs_vxfs.c | 2 + source3/nmbd/nmbd_become_lmb.c | 1 + source3/nmbd/nmbd_browserdb.c | 1 + source3/nmbd/nmbd_browsesync.c | 1 + source3/nmbd/nmbd_elections.c | 1 + source3/nmbd/nmbd_incomingdgrams.c | 1 + source3/nmbd/nmbd_nameregister.c | 1 + source3/nmbd/nmbd_packets.c | 1 + source3/nmbd/nmbd_sendannounce.c | 1 + source3/nmbd/nmbd_serverlistdb.c | 1 + source3/nmbd/nmbd_synclists.c | 1 + source3/nmbd/nmbd_workgroupdb.c | 1 + source3/param/loadparm.c | 1 + source3/passdb/machine_account_secrets.c | 1 + source3/passdb/passdb.c | 1 + source3/passdb/pdb_interface.c | 1 + source3/passdb/pdb_ldap.c | 1 + source3/passdb/pdb_smbpasswd.c | 1 + source3/passdb/pdb_tdb.c | 1 + source3/passdb/py_passdb.c | 1 + source3/printing/lpq_parse.c | 1 + source3/printing/notify.c | 1 + source3/printing/nt_printing.c | 1 + source3/printing/nt_printing_tdb.c | 1 + source3/printing/print_cups.c | 1 + source3/printing/print_iprint.c | 1 + source3/printing/printing.c | 1 + source3/printing/printing_db.c | 1 + source3/registry/reg_objects.c | 1 + source3/rpc_server/spoolss/srv_spoolss_nt.c | 1 + source3/rpcclient/cmd_spoolss.c | 1 + source3/rpcclient/cmd_srvsvc.c | 1 + source3/smbd/dir.c | 1 + source3/smbd/dosmode.c | 1 + source3/smbd/lanman.c | 1 + source3/smbd/negprot.c | 1 + source3/smbd/reply.c | 1 + source3/smbd/service.c | 1 + source3/smbd/sesssetup.c | 1 + source3/smbd/srvstr.c | 1 + source3/smbd/trans2.c | 1 + source3/torture/locktest2.c | 1 + source3/torture/mangle_test.c | 1 + source3/torture/masktest.c | 1 + source3/torture/torture.c | 1 + source3/torture/utable.c | 1 + source3/utils/conn_tdb.c | 1 + source3/utils/eventlogadm.c | 1 + source3/utils/net_ads.c | 1 + source3/utils/net_groupmap.c | 1 + source3/utils/net_rpc.c | 1 + source3/utils/net_rpc_printer.c | 1 + source3/utils/net_rpc_rights.c | 1 + source3/utils/net_rpc_service.c | 1 + source3/utils/net_sam.c | 1 + source3/utils/net_usershare.c | 1 + source3/utils/nmblookup.c | 1 + source3/utils/ntlm_auth.c | 1 + source3/utils/sharesec.c | 1 + source3/utils/smbcontrol.c | 1 + source3/utils/smbpasswd.c | 1 + source3/utils/status.c | 1 + source3/winbindd/idmap_autorid.c | 1 + source3/winbindd/idmap_autorid_tdb.c | 1 + source3/winbindd/idmap_tdb.c | 1 + source3/winbindd/wb_getpwsid.c | 1 + source3/winbindd/winbindd_cache.c | 1 + source3/winbindd/winbindd_cm.c | 1 + source3/winbindd/winbindd_domain_info.c | 1 + source3/winbindd/winbindd_dsgetdcname.c | 1 + source3/winbindd/winbindd_dual.c | 1 + source3/winbindd/winbindd_getdcname.c | 1 + source3/winbindd/winbindd_getgrnam.c | 1 + source3/winbindd/winbindd_lookuprids.c | 1 + source3/winbindd/winbindd_lookupsid.c | 1 + source3/winbindd/winbindd_misc.c | 1 + source3/winbindd/winbindd_pam.c | 1 + source3/winbindd/winbindd_pam_auth.c | 1 + source3/winbindd/winbindd_pam_auth_crap.c | 1 + source3/winbindd/winbindd_pam_chauthtok.c | 1 + source3/winbindd/winbindd_util.c | 1 + source3/winbindd/winbindd_wins_byip.c | 1 + source4/auth/ntlm/auth_developer.c | 2 + source4/client/client.c | 2 + source4/dns_server/dlz_bind9.c | 2 + source4/dns_server/dnsserver_common.c | 2 + source4/dsdb/common/util.c | 2 + source4/dsdb/common/util_trusts.c | 2 + source4/dsdb/repl/drepl_partitions.c | 2 + source4/dsdb/samdb/cracknames.c | 2 + source4/dsdb/samdb/ldb_modules/acl.c | 3 + source4/dsdb/samdb/ldb_modules/count_attrs.c | 2 + source4/dsdb/samdb/ldb_modules/encrypted_secrets.c | 1 + source4/dsdb/samdb/ldb_modules/extended_dn_in.c | 2 + source4/dsdb/samdb/ldb_modules/extended_dn_out.c | 3 + source4/dsdb/samdb/ldb_modules/linked_attributes.c | 1 + source4/dsdb/samdb/ldb_modules/netlogon.c | 2 + source4/dsdb/samdb/ldb_modules/password_hash.c | 2 + source4/dsdb/samdb/ldb_modules/ranged_results.c | 2 + source4/dsdb/samdb/ldb_modules/repl_meta_data.c | 2 + source4/dsdb/samdb/ldb_modules/rootdse.c | 2 + source4/dsdb/samdb/ldb_modules/samldb.c | 2 + source4/dsdb/samdb/ldb_modules/schema_data.c | 2 + source4/dsdb/schema/schema_convert_to_ol.c | 2 + source4/dsdb/schema/schema_description.c | 2 + source4/dsdb/schema/schema_init.c | 1 + source4/dsdb/schema/schema_query.c | 3 + source4/dsdb/schema/schema_set.c | 2 + source4/dsdb/schema/schema_syntax.c | 2 + source4/kdc/db-glue.c | 2 + source4/ldap_server/ldap_server.c | 2 + source4/lib/com/dcom/main.c | 2 + source4/lib/registry/interface.c | 1 + source4/lib/registry/patchfile_preg.c | 3 + source4/lib/registry/regf.c | 1 + source4/lib/socket/socket_ip.c | 2 + source4/libcli/dgram/mailslot.c | 2 + source4/libcli/resolve/resolve.c | 2 + source4/librpc/rpc/dcerpc_connect.c | 2 + source4/librpc/rpc/dcerpc_smb.c | 2 + source4/nbt_server/wins/winsdb.c | 2 + source4/ntvfs/ipc/vfs_ipc.c | 2 + source4/ntvfs/ntvfs_generic.c | 2 + source4/ntvfs/posix/pvfs_shortname.c | 2 + source4/ntvfs/sysdep/sys_lease.c | 2 + source4/ntvfs/sysdep/sys_notify.c | 2 + source4/param/share_ldb.c | 2 + source4/rpc_server/backupkey/dcesrv_backupkey.c | 2 + source4/rpc_server/common/share_info.c | 2 + source4/rpc_server/dnsserver/dcerpc_dnsserver.c | 2 + source4/rpc_server/dnsserver/dnsdata.c | 1 + source4/rpc_server/dnsserver/dnsdb.c | 2 + source4/rpc_server/dnsserver/dnsutils.c | 2 + source4/rpc_server/drsuapi/writespn.c | 2 + source4/rpc_server/lsa/dcesrv_lsa.c | 2 + source4/rpc_server/netlogon/dcerpc_netlogon.c | 2 + source4/rpc_server/samr/dcesrv_samr.c | 2 + source4/rpc_server/srvsvc/dcesrv_srvsvc.c | 3 + source4/smb_server/smb/service.c | 2 + source4/smbd/service.c | 2 + source4/torture/basic/mangle_test.c | 2 + source4/torture/gpo/apply.c | 2 + source4/torture/krb5/kdc-canon-heimdal.c | 2 + source4/torture/ldap/basic.c | 1 + source4/torture/ldap/netlogon.c | 2 + source4/torture/libnetapi/libnetapi_group.c | 2 + source4/torture/libnetapi/libnetapi_user.c | 2 + source4/torture/raw/search.c | 1 + source4/torture/rpc/drsuapi_cracknames.c | 2 + source4/torture/rpc/forest_trust.c | 2 + source4/torture/rpc/netlogon.c | 2 + source4/torture/rpc/samr.c | 2 + source4/torture/smb2/mangle.c | 2 + source4/torture/unix/whoami.c | 1 + source4/torture/winbind/struct_based.c | 1 + source4/utils/oLschema2ldif/lib.c | 2 + testsuite/smbd/se_access_check_utils.c | 1 + 205 files changed, 310 insertions(+), 71 deletions(-) delete mode 100644 source3/include/safe_string.h Changeset truncated at 500 lines: diff --git a/auth/credentials/credentials_krb5.c b/auth/credentials/credentials_krb5.c index 259b35b73b0..c321f713130 100644 --- a/auth/credentials/credentials_krb5.c +++ b/auth/credentials/credentials_krb5.c @@ -38,6 +38,8 @@ #undef DBGC_CLASS #define DBGC_CLASS DBGC_AUTH +#undef strncasecmp + static void cli_credentials_invalidate_client_gss_creds( struct cli_credentials *cred, enum credentials_obtained obtained); diff --git a/auth/gensec/gensec_start.c b/auth/gensec/gensec_start.c index d2d62d6652e..d34ef2d5e39 100644 --- a/auth/gensec/gensec_start.c +++ b/auth/gensec/gensec_start.c @@ -37,6 +37,8 @@ #undef DBGC_CLASS #define DBGC_CLASS DBGC_AUTH +#undef strcasecmp + /* the list of currently registered GENSEC backends */ static const struct gensec_security_ops **generic_security_ops; static int gensec_num_backends; diff --git a/dfs_server/dfs_server_ad.c b/dfs_server/dfs_server_ad.c index 84a19bd3805..7f4384f443e 100644 --- a/dfs_server/dfs_server_ad.c +++ b/dfs_server/dfs_server_ad.c @@ -31,6 +31,8 @@ #define MAX_DFS_RESPONSE 56*1024 /* 56 Kb */ +#undef strcasecmp + /* A DC set is a group of DC, they might have been grouped together because they belong to the same site, or to site with same cost ... */ diff --git a/lib/ldb/include/ldb.h b/lib/ldb/include/ldb.h index 7f53e6420e1..08e2096b914 100644 --- a/lib/ldb/include/ldb.h +++ b/lib/ldb/include/ldb.h @@ -1944,6 +1944,7 @@ int ldb_dn_update_components(struct ldb_dn *dn, const struct ldb_dn *ref_dn); strcasecmp and toupper here is ok. return 0 for match */ +#undef strcasecmp #define ldb_attr_cmp(a, b) strcasecmp(a, b) char *ldb_attr_casefold(TALLOC_CTX *mem_ctx, const char *s); int ldb_attr_dn(const char *attr); diff --git a/lib/util/charset/tests/charset.c b/lib/util/charset/tests/charset.c index 71635c6fea3..547dc51e59d 100644 --- a/lib/util/charset/tests/charset.c +++ b/lib/util/charset/tests/charset.c @@ -21,6 +21,9 @@ #include "includes.h" #include "torture/torture.h" +#undef strcasecmp +#undef strncasecmp + struct torture_suite *torture_local_charset(TALLOC_CTX *mem_ctx); static bool test_toupper_m(struct torture_context *tctx) diff --git a/lib/util/charset/util_str.c b/lib/util/charset/util_str.c index 3f5b247bd92..d1148c7387a 100644 --- a/lib/util/charset/util_str.c +++ b/lib/util/charset/util_str.c @@ -28,6 +28,10 @@ #ifdef strcasecmp #undef strcasecmp #endif +#ifdef strncasecmp +#undef strncasecmp +#endif + /** Case insensitive string compararison, handle specified for testing diff --git a/lib/util/safe_string.h b/lib/util/safe_string.h index a6c052f8746..edff296f028 100644 --- a/lib/util/safe_string.h +++ b/lib/util/safe_string.h @@ -2,6 +2,7 @@ Unix SMB/CIFS implementation. Safe string handling routines. Copyright (C) Andrew Tridgell 1994-1998 + Copyright (C) Andrew Bartlett <abart...@samba.org> 2003 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 @@ -19,11 +20,16 @@ #ifndef _SAFE_STRING_H #define _SAFE_STRING_H - #ifndef _SPLINT_ /* http://www.splint.org */ + /* Some macros to ensure people don't use buffer overflow vulnerable string functions. */ +#ifdef bcopy +#undef bcopy +#endif /* bcopy */ +#define bcopy(src,dest,size) __ERROR__XX__NEVER_USE_BCOPY___; + #ifdef strcpy #undef strcpy #endif /* strcpy */ @@ -39,6 +45,20 @@ #endif /* sprintf */ #define sprintf __ERROR__XX__NEVER_USE_SPRINTF__; +/* + * strcasecmp/strncasecmp aren't an error, but it means you're not thinking about + * multibyte. Don't use them. JRA. + */ +#ifdef strcasecmp +#undef strcasecmp +#endif +#define strcasecmp __ERROR__XX__NEVER_USE_STRCASECMP__; + +#ifdef strncasecmp +#undef strncasecmp +#endif +#define strncasecmp __ERROR__XX__NEVER_USE_STRNCASECMP__; + #endif /* !_SPLINT_ */ #endif diff --git a/lib/util/string_wrappers.h b/lib/util/string_wrappers.h index 1feea8cbc07..00bce079fbf 100644 --- a/lib/util/string_wrappers.h +++ b/lib/util/string_wrappers.h @@ -23,6 +23,8 @@ #ifndef _STRING_WRAPPERS_H #define _STRING_WRAPPERS_H +#include "lib/replace/replace.h" /* for config symbols */ + #define strlcpy_base(dest, src, base, size) \ do { \ const char *_strlcpy_base_src = (const char *)src; \ diff --git a/lib/util/util_net.c b/lib/util/util_net.c index daaf9808b8f..8376f8876a4 100644 --- a/lib/util/util_net.c +++ b/lib/util/util_net.c @@ -28,7 +28,9 @@ #include "system/locale.h" #include "system/filesys.h" #include "lib/util/util_net.h" + #undef strcasecmp +#undef strncasecmp /******************************************************************* Set an address to INADDR_ANY. diff --git a/lib/util/wscript_build b/lib/util/wscript_build index 0a730c17c88..7ae14130173 100644 --- a/lib/util/wscript_build +++ b/lib/util/wscript_build @@ -163,7 +163,6 @@ else: debug.h discard.h time.h - string_wrappers.h idtree.h idtree_random.h blocking.h diff --git a/libcli/http/gensec/generic.c b/libcli/http/gensec/generic.c index 5bafb839d65..2f09b9d5eac 100644 --- a/libcli/http/gensec/generic.c +++ b/libcli/http/gensec/generic.c @@ -27,6 +27,8 @@ #include "auth/gensec/gensec_internal.h" #include "lib/util/base64.h" +#undef strncasecmp + _PUBLIC_ NTSTATUS gensec_http_generic_init(TALLOC_CTX *); struct gensec_http_generic_state { diff --git a/libcli/http/http.c b/libcli/http/http.c index 6be053136c8..d20fc25f9e2 100644 --- a/libcli/http/http.c +++ b/libcli/http/http.c @@ -26,6 +26,7 @@ #include "util/tevent_werror.h" #include "lib/util/dlinklist.h" +#undef strcasecmp /** * Determines if a response should have a body. diff --git a/libcli/http/http_auth.c b/libcli/http/http_auth.c index ece660584f6..3dcf52c626e 100644 --- a/libcli/http/http_auth.c +++ b/libcli/http/http_auth.c @@ -29,6 +29,9 @@ #include "auth/credentials/credentials.h" #include "lib/util/data_blob.h" +#undef strcasecmp +#undef strncasecmp + /** * Copy the request headers from src to dst */ diff --git a/libcli/security/util_sid.c b/libcli/security/util_sid.c index e47ed04c30f..634628f04d9 100644 --- a/libcli/security/util_sid.c +++ b/libcli/security/util_sid.c @@ -28,6 +28,9 @@ #include "../librpc/gen_ndr/netlogon.h" #include "../libcli/security/security.h" +#undef strcasecmp +#undef strncasecmp + /* * Some useful sids, more well known sids can be found at * http://support.microsoft.com/kb/243330/EN-US/ diff --git a/libgpo/gpext/gpext.c b/libgpo/gpext/gpext.c index 73bebf1879f..45c89707720 100644 --- a/libgpo/gpext/gpext.c +++ b/libgpo/gpext/gpext.c @@ -27,6 +27,7 @@ #include "registry.h" #include "registry/reg_api.h" #include "lib/util/util_paths.h" +#include "lib/util/string_wrappers.h" static struct gp_extension *extensions = NULL; diff --git a/libgpo/gpo_filesync.c b/libgpo/gpo_filesync.c index 28637619226..3cd94706551 100644 --- a/libgpo/gpo_filesync.c +++ b/libgpo/gpo_filesync.c @@ -22,6 +22,7 @@ #include "libsmb/libsmb.h" #include "../libgpo/gpo.h" #include "libgpo/gpo_proto.h" +#include "lib/util/string_wrappers.h" struct sync_context { TALLOC_CTX *mem_ctx; diff --git a/librpc/rpc/dcerpc_util.c b/librpc/rpc/dcerpc_util.c index 3d622b2be49..42e8e611019 100644 --- a/librpc/rpc/dcerpc_util.c +++ b/librpc/rpc/dcerpc_util.c @@ -33,6 +33,8 @@ #include "lib/crypto/gnutls_helpers.h" #include <gnutls/crypto.h> +#undef strncasecmp + /* we need to be able to get/set the fragment length without doing a full decode */ void dcerpc_set_frag_length(DATA_BLOB *blob, uint16_t v) diff --git a/librpc/rpc/dcesrv_core.c b/librpc/rpc/dcesrv_core.c index 88838121f2f..a12bf134077 100644 --- a/librpc/rpc/dcesrv_core.c +++ b/librpc/rpc/dcesrv_core.c @@ -37,6 +37,8 @@ #undef DBGC_CLASS #define DBGC_CLASS DBGC_RPC_SRV +#undef strcasecmp + static NTSTATUS dcesrv_negotiate_contexts(struct dcesrv_call_state *call, const struct dcerpc_bind *b, struct dcerpc_ack_ctx *ack_ctx_list); diff --git a/nsswitch/wbinfo.c b/nsswitch/wbinfo.c index 39e3878b396..6cd795ea72e 100644 --- a/nsswitch/wbinfo.c +++ b/nsswitch/wbinfo.c @@ -28,6 +28,7 @@ #include "lib/cmdline/popt_common.h" #include "lib/afs/afs_settoken.h" #include "lib/util/smb_strtox.h" +#include "lib/util/string_wrappers.h" #ifdef DBGC_CLASS #undef DBGC_CLASS diff --git a/nsswitch/wins.c b/nsswitch/wins.c index 371ab78d2f8..4f79cc67a1d 100644 --- a/nsswitch/wins.c +++ b/nsswitch/wins.c @@ -21,6 +21,7 @@ #include "includes.h" #include "nsswitch/winbind_client.h" #include "nsswitch/libwbclient/wbclient.h" +#include "lib/util/string_wrappers.h" #ifdef HAVE_NS_API_H diff --git a/source3/auth/auth_builtin.c b/source3/auth/auth_builtin.c index f16b3cc2934..046b9793e33 100644 --- a/source3/auth/auth_builtin.c +++ b/source3/auth/auth_builtin.c @@ -20,6 +20,7 @@ #include "includes.h" #include "auth.h" +#include "lib/util/string_wrappers.h" #undef DBGC_CLASS #define DBGC_CLASS DBGC_AUTH diff --git a/source3/auth/pampass.c b/source3/auth/pampass.c index 751cee61ce1..c3c3d82c77d 100644 --- a/source3/auth/pampass.c +++ b/source3/auth/pampass.c @@ -29,6 +29,7 @@ #include "includes.h" #include "auth.h" #include "../libcli/auth/pam_errors.h" +#include "lib/util/string_wrappers.h" #undef DBGC_CLASS #define DBGC_CLASS DBGC_AUTH diff --git a/source3/client/client.c b/source3/client/client.c index 30287ffd253..3d467498920 100644 --- a/source3/client/client.c +++ b/source3/client/client.c @@ -40,6 +40,7 @@ #include "include/ntioctl.h" #include "../libcli/smb/smbXcli_base.h" #include "lib/util/time_basic.h" +#include "lib/util/string_wrappers.h" #ifndef REGISTER #define REGISTER 0 diff --git a/source3/include/includes.h b/source3/include/includes.h index 8fa65cc3122..33bca3363b7 100644 --- a/source3/include/includes.h +++ b/source3/include/includes.h @@ -297,7 +297,7 @@ typedef char fstring[FSTRING_LEN]; /* String routines */ #include "srvstr.h" -#include "safe_string.h" +#include "lib/util/safe_string.h" #ifndef SIGCLD #define SIGCLD SIGCHLD diff --git a/source3/include/safe_string.h b/source3/include/safe_string.h deleted file mode 100644 index e77017c61c9..00000000000 --- a/source3/include/safe_string.h +++ /dev/null @@ -1,68 +0,0 @@ -/* - Unix SMB/CIFS implementation. - Safe string handling routines. - Copyright (C) Andrew Tridgell 1994-1998 - Copyright (C) Andrew Bartlett <abart...@samba.org> 2003 - - 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 _SAFE_STRING_H -#define _SAFE_STRING_H - -#ifndef _SPLINT_ /* http://www.splint.org */ - -/* Some macros to ensure people don't use buffer overflow vulnerable string - functions. */ - -#ifdef bcopy -#undef bcopy -#endif /* bcopy */ -#define bcopy(src,dest,size) __ERROR__XX__NEVER_USE_BCOPY___; - -#ifdef strcpy -#undef strcpy -#endif /* strcpy */ -#define strcpy(dest,src) __ERROR__XX__NEVER_USE_STRCPY___; - -#ifdef strcat -#undef strcat -#endif /* strcat */ -#define strcat(dest,src) __ERROR__XX__NEVER_USE_STRCAT___; - -#ifdef sprintf -#undef sprintf -#endif /* sprintf */ -#define sprintf __ERROR__XX__NEVER_USE_SPRINTF__; - -/* - * strcasecmp/strncasecmp aren't an error, but it means you're not thinking about - * multibyte. Don't use them. JRA. - */ -#ifdef strcasecmp -#undef strcasecmp -#endif -#define strcasecmp __ERROR__XX__NEVER_USE_STRCASECMP__; - -#ifdef strncasecmp -#undef strncasecmp -#endif -#define strncasecmp __ERROR__XX__NEVER_USE_STRNCASECMP__; - -#endif /* !_SPLINT_ */ - -#include "../libcli/util/ntstatus.h" -#include "lib/util/string_wrappers.h" - -#endif diff --git a/source3/lib/idmap_cache.c b/source3/lib/idmap_cache.c index d5a60e73403..a4b8861f466 100644 --- a/source3/lib/idmap_cache.c +++ b/source3/lib/idmap_cache.c @@ -22,6 +22,7 @@ #include "../libcli/security/security.h" #include "../librpc/gen_ndr/idmap.h" #include "lib/gencache.h" +#include "lib/util/string_wrappers.h" /** * Find a sid2xid mapping diff --git a/source3/lib/privileges.c b/source3/lib/privileges.c index 19412133342..9900aa6f93b 100644 --- a/source3/lib/privileges.c +++ b/source3/lib/privileges.c @@ -27,6 +27,7 @@ #include "libcli/security/privileges_private.h" #include "../libcli/security/security.h" #include "passdb.h" +#include "lib/util/string_wrappers.h" #define PRIVPREFIX "PRIV_" diff --git a/source3/lib/string_replace.c b/source3/lib/string_replace.c index 25486afcbd4..42022d78ab9 100644 --- a/source3/lib/string_replace.c +++ b/source3/lib/string_replace.c @@ -23,6 +23,7 @@ #include "includes.h" #include "smbd/smbd.h" #include "string_replace.h" +#include "lib/util/string_wrappers.h" #define MAP_SIZE 0xFF #define MAP_NUM 0x101 /* max unicode charval / MAP_SIZE */ diff --git a/source3/lib/substitute.c b/source3/lib/substitute.c index 833af10b6f0..e359ef89494 100644 --- a/source3/lib/substitute.c +++ b/source3/lib/substitute.c @@ -23,6 +23,7 @@ #include "system/passwd.h" #include "secrets.h" #include "auth.h" +#include "lib/util/string_wrappers.h" /* Max DNS name is 253 + '\0' */ #define MACHINE_NAME_SIZE 254 diff --git a/source3/lib/username.c b/source3/lib/username.c index f69d9c3bf22..280285e25d2 100644 --- a/source3/lib/username.c +++ b/source3/lib/username.c @@ -23,6 +23,7 @@ #include "system/passwd.h" #include "../lib/util/memcache.h" #include "../lib/util/util_pw.h" +#include "lib/util/string_wrappers.h" /* internal functions */ static struct passwd *uname_string_combinations(char *s, TALLOC_CTX *mem_ctx, diff --git a/source3/lib/util.c b/source3/lib/util.c index a51c4aaf514..62584bc7ca2 100644 --- a/source3/lib/util.c +++ b/source3/lib/util.c @@ -37,6 +37,7 @@ #include "lib/util/util_process.h" #include "lib/dbwrap/dbwrap_ctdb.h" #include "lib/gencache.h" +#include "lib/util/string_wrappers.h" #ifdef HAVE_SYS_PRCTL_H #include <sys/prctl.h> diff --git a/source3/lib/util_sd.c b/source3/lib/util_sd.c index 39083b15438..bcf152b22cf 100644 --- a/source3/lib/util_sd.c +++ b/source3/lib/util_sd.c @@ -28,6 +28,7 @@ #include "../libcli/security/security.h" #include "rpc_client/cli_pipe.h" #include "rpc_client/cli_lsarpc.h" -- Samba Shared Repository