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
This commit is contained in:
Stefan Eßer 2020-10-27 11:29:11 +00:00
parent 7b39bef2cf
commit 1f474190fc
18 changed files with 42 additions and 16 deletions

View File

@ -9,6 +9,7 @@
#include <sys/types.h> #include <sys/types.h>
#include <sys/param.h> #include <sys/param.h>
#include <paths.h>
#include <stdio.h> #include <stdio.h>
#ifdef HAVE_STDINT_H #ifdef HAVE_STDINT_H
#include <stdint.h> #include <stdint.h>
@ -79,7 +80,7 @@ build_cert(struct sshbuf *b, const struct sshkey *k, const char *type,
critopts = sshbuf_new(); critopts = sshbuf_new();
ASSERT_PTR_NE(critopts, NULL); 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"); put_opt(critopts, "source-address", "192.168.0.0/24,127.0.0.1,::1");
exts = sshbuf_new(); exts = sshbuf_new();

View File

@ -49,6 +49,7 @@ __FBSDID("$FreeBSD$");
#include <fcntl.h> #include <fcntl.h>
#include <limits.h> #include <limits.h>
#include <nl_types.h> #include <nl_types.h>
#include <paths.h>
#include <pthread.h> #include <pthread.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
@ -58,7 +59,9 @@ __FBSDID("$FreeBSD$");
#include "../locale/xlocale_private.h" #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; \ #define RLOCK(fail) { int ret; \
if (__isthreaded && \ if (__isthreaded && \

View File

@ -44,6 +44,7 @@ __FBSDID("$FreeBSD$");
#include <fcntl.h> #include <fcntl.h>
#include <inttypes.h> #include <inttypes.h>
#include <netdb.h> #include <netdb.h>
#include <paths.h>
#include <poll.h> #include <poll.h>
#include <pwd.h> #include <pwd.h>
#include <stdarg.h> #include <stdarg.h>
@ -1071,7 +1072,7 @@ fetch_ssl_setup_transport_layer(SSL_CTX *ctx, int verbose)
/* /*
* Configure peer verification based on environment. * 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" #define BASE_CERT_FILE "/etc/ssl/cert.pem"
static int static int
fetch_ssl_setup_peer_verification(SSL_CTX *ctx, int verbose) fetch_ssl_setup_peer_verification(SSL_CTX *ctx, int verbose)

View File

@ -179,7 +179,7 @@ main(int argc, char *argv[])
cmd_init(); cmd_init();
cmd_load_dir("/lib/nvmecontrol", NULL, NULL); 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); cmd_dispatch(argc, argv, NULL);

View File

@ -53,6 +53,10 @@ CFLAGS+= -include krb5_config.h
SRCS+= krb5_config.h SRCS+= krb5_config.h
.endif .endif
.if defined(LOCALBASE)
CFLAGS+= -D_PATH_SSH_ASKPASS_DEFAULT='"${LOCALBASE}/bin/ssh-askpass"'
.endif
NO_LINT= NO_LINT=
LIBADD+= crypto crypt z LIBADD+= crypto crypt z

View File

@ -16,6 +16,10 @@ CFLAGS+= -DHAVE_LDNS=1
#LDADD+= -lldns #LDADD+= -lldns
.endif .endif
.if defined(LOCALBASE)
CFLAGS+= -DDEFAULT_PKCS11_WHITELIST='"/usr/lib*/*,${LOCALBASE}/lib*/*"'
.endif
LIBADD+= crypto LIBADD+= crypto
.include <bsd.prog.mk> .include <bsd.prog.mk>

View File

@ -41,12 +41,13 @@
#include <getopt.h> #include <getopt.h>
#include <errno.h> #include <errno.h>
#include <err.h> #include <err.h>
#include <paths.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <ctype.h> #include <ctype.h>
#ifndef DIR_TEMPLATE #ifndef DIR_TEMPLATE
#define DIR_TEMPLATE "/usr/local/libdata/athprom" #define DIR_TEMPLATE _PATH_LOCALBASE "/libdata/athprom"
#endif #endif
struct ath_diag atd; struct ath_diag atd;

View File

@ -32,6 +32,7 @@
#include <netinet/ip.h> #include <netinet/ip.h>
#include <netinet/udp.h> #include <netinet/udp.h>
#include <arpa/inet.h> #include <arpa/inet.h>
#include <paths.h>
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
#include <unistd.h> #include <unistd.h>
@ -154,7 +155,7 @@ unsigned int min_prga = 128;
* XXX builtin pathnames * XXX builtin pathnames
*/ */
#define CRACK_LOCAL_CMD "../aircrack/aircrack" #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 #define INCR 10000
int thresh_incr = INCR; int thresh_incr = INCR;

View File

@ -30,5 +30,7 @@
* $FreeBSD$ * $FreeBSD$
*/ */
#include <paths.h>
#define FORTDIR "/usr/share/games/fortune:" \ #define FORTDIR "/usr/share/games/fortune:" \
"/usr/local/share/games/fortune" _PATH_LOCALBASE "/share/games/fortune"

View File

@ -33,8 +33,10 @@
* $FreeBSD$ * $FreeBSD$
*/ */
#include <paths.h>
#define _PATH_EX "/usr/bin/ex" #define _PATH_EX "/usr/bin/ex"
#define _PATH_HELP "/usr/share/misc/mail.help" #define _PATH_HELP "/usr/share/misc/mail.help"
#define _PATH_TILDE "/usr/share/misc/mail.tildehelp" #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" #define _PATH_LESS "/usr/bin/less"

View File

@ -81,6 +81,7 @@
#include <err.h> #include <err.h>
#include <errno.h> #include <errno.h>
#include <fcntl.h> #include <fcntl.h>
#include <paths.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
@ -148,7 +149,7 @@ static int32_t pbchar = -1;
static const char *paths[MAX_PATHS + 1] = { static const char *paths[MAX_PATHS + 1] = {
"/usr/share/snmp/defs", "/usr/share/snmp/defs",
"/usr/local/share/snmp/defs", _PATH_LOCALBASE "/share/snmp/defs",
NULL NULL
}; };

View File

@ -38,6 +38,7 @@ __FBSDID("$FreeBSD$");
#include <errno.h> #include <errno.h>
#include <dirent.h> #include <dirent.h>
#include <fcntl.h> #include <fcntl.h>
#include <paths.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
@ -59,7 +60,7 @@ __FBSDID("$FreeBSD$");
int verbosity_level = 0; int verbosity_level = 0;
#define DEFAULT_DATADIR "/usr/local/share/cpucontrol" #define DEFAULT_DATADIR _PATH_LOCALBASE "/share/cpucontrol"
#define FLAG_I 0x01 #define FLAG_I 0x01
#define FLAG_M 0x02 #define FLAG_M 0x02

View File

@ -59,7 +59,7 @@
/* 4.3BSD-style crontab */ /* 4.3BSD-style crontab */
#define SYSCRONTAB "/etc/crontab" #define SYSCRONTAB "/etc/crontab"
#define SYSCRONTABS "/etc/cron.d" #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 /* what editor to use if no EDITOR or VISUAL
* environment variable specified. * environment variable specified.

View File

@ -40,6 +40,7 @@ __FBSDID("$FreeBSD$");
#include <sys/param.h> #include <sys/param.h>
#include <err.h> #include <err.h>
#include <paths.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include <unistd.h> #include <unistd.h>
@ -105,7 +106,7 @@ main(int argc, char *argv[], char *envp[])
addarg(&al, argv[0]); addarg(&al, argv[0]);
snprintf(localmailerconf, MAXPATHLEN, "%s/etc/mail/mailer.conf", snprintf(localmailerconf, MAXPATHLEN, "%s/etc/mail/mailer.conf",
getenv("LOCALBASE") ? getenv("LOCALBASE") : "/usr/local"); getenv("LOCALBASE") ? getenv("LOCALBASE") : _PATH_LOCALBASE);
mailerconf = localmailerconf; mailerconf = localmailerconf;
if ((config = fopen(localmailerconf, "r")) == NULL) if ((config = fopen(localmailerconf, "r")) == NULL)

View File

@ -1,4 +1,6 @@
/* $FreeBSD$ */ /* $FreeBSD$ */
#include <paths.h>
#define _PATH_DEVPCI "/dev/pci" #define _PATH_DEVPCI "/dev/pci"
#define _PATH_PCIVDB "/usr/share/misc/pci_vendors" #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"

View File

@ -40,6 +40,7 @@ __FBSDID("$FreeBSD$");
#include <ucl.h> #include <ucl.h>
#include <err.h> #include <err.h>
#include <errno.h> #include <errno.h>
#include <paths.h>
#include <stdbool.h> #include <stdbool.h>
#include <unistd.h> #include <unistd.h>
@ -454,7 +455,7 @@ config_init(void)
} }
/* Read LOCALBASE/etc/pkg.conf first. */ /* 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", snprintf(confpath, sizeof(confpath), "%s/etc/pkg.conf",
localbase); localbase);

View File

@ -31,7 +31,8 @@
#ifndef _PKG_CONFIG_H #ifndef _PKG_CONFIG_H
#define _PKG_CONFIG_H #define _PKG_CONFIG_H
#define _LOCALBASE "/usr/local" #include <paths.h>
#define URL_SCHEME_PREFIX "pkg+" #define URL_SCHEME_PREFIX "pkg+"
typedef enum { typedef enum {

View File

@ -1046,7 +1046,7 @@ main(int argc, char *argv[])
yes = false; yes = false;
snprintf(pkgpath, MAXPATHLEN, "%s/sbin/pkg", 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) { if (argc > 1 && strcmp(argv[1], "bootstrap") == 0) {
bootstrap_only = true; bootstrap_only = true;