From e87228c6008bded0a9a1f058a6faf5a67e5d0e38 Mon Sep 17 00:00:00 2001 From: se Date: Tue, 27 Oct 2020 11:29:11 +0000 Subject: [PATCH] Replace literal uses of /usr/local in C sources with _PATH_LOCALBASE Literal references to /usr/local exist in a large number of files in the FreeBSD base system. Many are in contributed software, in configuration files, or in the documentation, but 19 uses have been identified in C source files or headers outside the contrib and sys/contrib directories. This commit makes it possible to set _PATH_LOCALBASE in paths.h to use a different prefix for locally installed software. In order to avoid changes to openssh source files, LOCALBASE is passed to the build via Makefiles under src/secure. While _PATH_LOCALBASE could have been used here, there is precedent in the construction of the path used to a xauth program which depends on the LOCALBASE value passed on the compiler command line to select a non-default directory. This could be changed in a later commit to make the openssh build consistently use _PATH_LOCALBASE. It is considered out-of-scope for this commit. Reviewed by: imp MFC after: 1 month Differential Revision: https://reviews.freebsd.org/D26942 --- crypto/openssh/regress/unittests/sshkey/test_sshkey.c | 3 ++- lib/libc/nls/msgcat.c | 5 ++++- lib/libfetch/common.c | 3 ++- sbin/nvmecontrol/nvmecontrol.c | 2 +- secure/lib/libssh/Makefile | 4 ++++ secure/usr.bin/ssh-agent/Makefile | 4 ++++ tools/tools/ath/athprom/athprom.c | 3 ++- tools/tools/net80211/wesside/wesside/wesside.c | 3 ++- usr.bin/fortune/fortune/pathnames.h | 4 +++- usr.bin/mail/pathnames.h | 4 +++- usr.sbin/bsnmpd/tools/libbsnmptools/bsnmpimport.c | 3 ++- usr.sbin/cpucontrol/cpucontrol.c | 3 ++- usr.sbin/cron/cron/pathnames.h | 2 +- usr.sbin/mailwrapper/mailwrapper.c | 3 ++- usr.sbin/pciconf/pathnames.h | 4 +++- usr.sbin/pkg/config.c | 3 ++- usr.sbin/pkg/config.h | 3 ++- usr.sbin/pkg/pkg.c | 2 +- 18 files changed, 42 insertions(+), 16 deletions(-) diff --git a/crypto/openssh/regress/unittests/sshkey/test_sshkey.c b/crypto/openssh/regress/unittests/sshkey/test_sshkey.c index 47a03fad4fd2..3415ed68196a 100644 --- a/crypto/openssh/regress/unittests/sshkey/test_sshkey.c +++ b/crypto/openssh/regress/unittests/sshkey/test_sshkey.c @@ -9,6 +9,7 @@ #include #include +#include #include #ifdef HAVE_STDINT_H #include @@ -79,7 +80,7 @@ build_cert(struct sshbuf *b, const struct sshkey *k, const char *type, critopts = sshbuf_new(); ASSERT_PTR_NE(critopts, NULL); - put_opt(critopts, "force-command", "/usr/local/bin/nethack"); + put_opt(critopts, "force-command", _PATH_LOCALBASE "/bin/nethack"); put_opt(critopts, "source-address", "192.168.0.0/24,127.0.0.1,::1"); exts = sshbuf_new(); diff --git a/lib/libc/nls/msgcat.c b/lib/libc/nls/msgcat.c index 5eb3273f7269..090b4cc40ab6 100644 --- a/lib/libc/nls/msgcat.c +++ b/lib/libc/nls/msgcat.c @@ -49,6 +49,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -58,7 +59,9 @@ __FBSDID("$FreeBSD$"); #include "../locale/xlocale_private.h" -#define _DEFAULT_NLS_PATH "/usr/share/nls/%L/%N.cat:/usr/share/nls/%N/%L:/usr/local/share/nls/%L/%N.cat:/usr/local/share/nls/%N/%L" +#define _DEFAULT_NLS_PATH "/usr/share/nls/%L/%N.cat:/usr/share/nls/%N/%L:" \ + _PATH_LOCALBASE "/share/nls/%L/%N.cat:" \ + _PATH_LOCALBASE "/share/nls/%N/%L" #define RLOCK(fail) { int ret; \ if (__isthreaded && \ diff --git a/lib/libfetch/common.c b/lib/libfetch/common.c index ae119de32736..7b08391b4799 100644 --- a/lib/libfetch/common.c +++ b/lib/libfetch/common.c @@ -44,6 +44,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -1071,7 +1072,7 @@ fetch_ssl_setup_transport_layer(SSL_CTX *ctx, int verbose) /* * Configure peer verification based on environment. */ -#define LOCAL_CERT_FILE "/usr/local/etc/ssl/cert.pem" +#define LOCAL_CERT_FILE _PATH_LOCALBASE "/etc/ssl/cert.pem" #define BASE_CERT_FILE "/etc/ssl/cert.pem" static int fetch_ssl_setup_peer_verification(SSL_CTX *ctx, int verbose) diff --git a/sbin/nvmecontrol/nvmecontrol.c b/sbin/nvmecontrol/nvmecontrol.c index 03c026858ba1..c88ea1ac29aa 100644 --- a/sbin/nvmecontrol/nvmecontrol.c +++ b/sbin/nvmecontrol/nvmecontrol.c @@ -179,7 +179,7 @@ main(int argc, char *argv[]) cmd_init(); cmd_load_dir("/lib/nvmecontrol", NULL, NULL); - cmd_load_dir("/usr/local/lib/nvmecontrol", NULL, NULL); + cmd_load_dir(_PATH_LOCALBASE "/lib/nvmecontrol", NULL, NULL); cmd_dispatch(argc, argv, NULL); diff --git a/secure/lib/libssh/Makefile b/secure/lib/libssh/Makefile index b325fe9d32d4..aa3dc27fb526 100644 --- a/secure/lib/libssh/Makefile +++ b/secure/lib/libssh/Makefile @@ -53,6 +53,10 @@ CFLAGS+= -include krb5_config.h SRCS+= krb5_config.h .endif +.if defined(LOCALBASE) +CFLAGS+= -D_PATH_SSH_ASKPASS_DEFAULT='"${LOCALBASE}/bin/ssh-askpass"' +.endif + NO_LINT= LIBADD+= crypto crypt z diff --git a/secure/usr.bin/ssh-agent/Makefile b/secure/usr.bin/ssh-agent/Makefile index 50eafa6ba621..95ccd05811fe 100644 --- a/secure/usr.bin/ssh-agent/Makefile +++ b/secure/usr.bin/ssh-agent/Makefile @@ -16,6 +16,10 @@ CFLAGS+= -DHAVE_LDNS=1 #LDADD+= -lldns .endif +.if defined(LOCALBASE) +CFLAGS+= -DDEFAULT_PKCS11_WHITELIST='"/usr/lib*/*,${LOCALBASE}/lib*/*"' +.endif + LIBADD+= crypto .include diff --git a/tools/tools/ath/athprom/athprom.c b/tools/tools/ath/athprom/athprom.c index e295fd1d70a1..1010c0bf5315 100644 --- a/tools/tools/ath/athprom/athprom.c +++ b/tools/tools/ath/athprom/athprom.c @@ -41,12 +41,13 @@ #include #include #include +#include #include #include #include #ifndef DIR_TEMPLATE -#define DIR_TEMPLATE "/usr/local/libdata/athprom" +#define DIR_TEMPLATE _PATH_LOCALBASE "/libdata/athprom" #endif struct ath_diag atd; diff --git a/tools/tools/net80211/wesside/wesside/wesside.c b/tools/tools/net80211/wesside/wesside/wesside.c index 5d63dc421990..d1e6fd8fe6d7 100644 --- a/tools/tools/net80211/wesside/wesside/wesside.c +++ b/tools/tools/net80211/wesside/wesside/wesside.c @@ -32,6 +32,7 @@ #include #include #include +#include #include #include #include @@ -154,7 +155,7 @@ unsigned int min_prga = 128; * XXX builtin pathnames */ #define CRACK_LOCAL_CMD "../aircrack/aircrack" -#define CRACK_INSTALL_CMD "/usr/local/bin/aircrack" +#define CRACK_INSTALL_CMD _PATH_LOCALBASE "/bin/aircrack" #define INCR 10000 int thresh_incr = INCR; diff --git a/usr.bin/fortune/fortune/pathnames.h b/usr.bin/fortune/fortune/pathnames.h index 149b3e8d56b4..b6c9985ea885 100644 --- a/usr.bin/fortune/fortune/pathnames.h +++ b/usr.bin/fortune/fortune/pathnames.h @@ -30,5 +30,7 @@ * $FreeBSD$ */ +#include + #define FORTDIR "/usr/share/games/fortune:" \ - "/usr/local/share/games/fortune" + _PATH_LOCALBASE "/share/games/fortune" diff --git a/usr.bin/mail/pathnames.h b/usr.bin/mail/pathnames.h index ccccb497e91e..e89c5288a11d 100644 --- a/usr.bin/mail/pathnames.h +++ b/usr.bin/mail/pathnames.h @@ -33,8 +33,10 @@ * $FreeBSD$ */ +#include + #define _PATH_EX "/usr/bin/ex" #define _PATH_HELP "/usr/share/misc/mail.help" #define _PATH_TILDE "/usr/share/misc/mail.tildehelp" -#define _PATH_MASTER_RC "/usr/share/misc/mail.rc:/usr/local/etc/mail.rc:/etc/mail.rc" +#define _PATH_MASTER_RC "/usr/share/misc/mail.rc:" _PATH_LOCALBASE "/etc/mail.rc:/etc/mail.rc" #define _PATH_LESS "/usr/bin/less" diff --git a/usr.sbin/bsnmpd/tools/libbsnmptools/bsnmpimport.c b/usr.sbin/bsnmpd/tools/libbsnmptools/bsnmpimport.c index d4f305fc2ff6..77785313ff92 100644 --- a/usr.sbin/bsnmpd/tools/libbsnmptools/bsnmpimport.c +++ b/usr.sbin/bsnmpd/tools/libbsnmptools/bsnmpimport.c @@ -81,6 +81,7 @@ #include #include #include +#include #include #include #include @@ -148,7 +149,7 @@ static int32_t pbchar = -1; static const char *paths[MAX_PATHS + 1] = { "/usr/share/snmp/defs", - "/usr/local/share/snmp/defs", + _PATH_LOCALBASE "/share/snmp/defs", NULL }; diff --git a/usr.sbin/cpucontrol/cpucontrol.c b/usr.sbin/cpucontrol/cpucontrol.c index 31b1d165af30..09948cc95d6c 100644 --- a/usr.sbin/cpucontrol/cpucontrol.c +++ b/usr.sbin/cpucontrol/cpucontrol.c @@ -38,6 +38,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -59,7 +60,7 @@ __FBSDID("$FreeBSD$"); int verbosity_level = 0; -#define DEFAULT_DATADIR "/usr/local/share/cpucontrol" +#define DEFAULT_DATADIR _PATH_LOCALBASE "/share/cpucontrol" #define FLAG_I 0x01 #define FLAG_M 0x02 diff --git a/usr.sbin/cron/cron/pathnames.h b/usr.sbin/cron/cron/pathnames.h index e25519fa89eb..b0edbd897a28 100644 --- a/usr.sbin/cron/cron/pathnames.h +++ b/usr.sbin/cron/cron/pathnames.h @@ -59,7 +59,7 @@ /* 4.3BSD-style crontab */ #define SYSCRONTAB "/etc/crontab" #define SYSCRONTABS "/etc/cron.d" -#define LOCALSYSCRONTABS "/usr/local/etc/cron.d" +#define LOCALSYSCRONTABS _PATH_LOCALBASE "/etc/cron.d" /* what editor to use if no EDITOR or VISUAL * environment variable specified. diff --git a/usr.sbin/mailwrapper/mailwrapper.c b/usr.sbin/mailwrapper/mailwrapper.c index 1ad4053a843e..8a9ec220a26b 100644 --- a/usr.sbin/mailwrapper/mailwrapper.c +++ b/usr.sbin/mailwrapper/mailwrapper.c @@ -40,6 +40,7 @@ __FBSDID("$FreeBSD$"); #include #include +#include #include #include #include @@ -105,7 +106,7 @@ main(int argc, char *argv[], char *envp[]) addarg(&al, argv[0]); snprintf(localmailerconf, MAXPATHLEN, "%s/etc/mail/mailer.conf", - getenv("LOCALBASE") ? getenv("LOCALBASE") : "/usr/local"); + getenv("LOCALBASE") ? getenv("LOCALBASE") : _PATH_LOCALBASE); mailerconf = localmailerconf; if ((config = fopen(localmailerconf, "r")) == NULL) diff --git a/usr.sbin/pciconf/pathnames.h b/usr.sbin/pciconf/pathnames.h index 61c0993bbb7c..c35c721aa838 100644 --- a/usr.sbin/pciconf/pathnames.h +++ b/usr.sbin/pciconf/pathnames.h @@ -1,4 +1,6 @@ /* $FreeBSD$ */ +#include + #define _PATH_DEVPCI "/dev/pci" #define _PATH_PCIVDB "/usr/share/misc/pci_vendors" -#define _PATH_LPCIVDB "/usr/local/share/pciids/pci.ids" +#define _PATH_LPCIVDB _PATH_LOCALBASE "/share/pciids/pci.ids" diff --git a/usr.sbin/pkg/config.c b/usr.sbin/pkg/config.c index fc7df8d31dae..a1dba3f2670a 100644 --- a/usr.sbin/pkg/config.c +++ b/usr.sbin/pkg/config.c @@ -40,6 +40,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include @@ -454,7 +455,7 @@ config_init(void) } /* Read LOCALBASE/etc/pkg.conf first. */ - localbase = getenv("LOCALBASE") ? getenv("LOCALBASE") : _LOCALBASE; + localbase = getenv("LOCALBASE") ? getenv("LOCALBASE") : _PATH_LOCALBASE; snprintf(confpath, sizeof(confpath), "%s/etc/pkg.conf", localbase); diff --git a/usr.sbin/pkg/config.h b/usr.sbin/pkg/config.h index a63997a7a60d..f1a2aa227f16 100644 --- a/usr.sbin/pkg/config.h +++ b/usr.sbin/pkg/config.h @@ -31,7 +31,8 @@ #ifndef _PKG_CONFIG_H #define _PKG_CONFIG_H -#define _LOCALBASE "/usr/local" +#include + #define URL_SCHEME_PREFIX "pkg+" typedef enum { diff --git a/usr.sbin/pkg/pkg.c b/usr.sbin/pkg/pkg.c index 50b196fd9b30..3de789328c37 100644 --- a/usr.sbin/pkg/pkg.c +++ b/usr.sbin/pkg/pkg.c @@ -1046,7 +1046,7 @@ main(int argc, char *argv[]) yes = false; snprintf(pkgpath, MAXPATHLEN, "%s/sbin/pkg", - getenv("LOCALBASE") ? getenv("LOCALBASE") : _LOCALBASE); + getenv("LOCALBASE") ? getenv("LOCALBASE") : _PATH_LOCALBASE); if (argc > 1 && strcmp(argv[1], "bootstrap") == 0) { bootstrap_only = true;