From f6d6c66889001208aee7b0c46efe1c8ddffda57c Mon Sep 17 00:00:00 2001 From: Kyle Evans Date: Wed, 8 Mar 2023 23:29:30 -0600 Subject: [PATCH] grep: remove tautological condition st_size is an off_t, it cannot hold values larger than OFF_MAX. CID: 1008931 --- usr.bin/grep/file.c | 3 +-- usr.sbin/pkg/config.c | 55 +++++++++++++++++++++++++++++++++++++++++++ usr.sbin/pkg/config.h | 1 + usr.sbin/pkg/pkg.c | 5 ++++ 4 files changed, 62 insertions(+), 2 deletions(-) diff --git a/usr.bin/grep/file.c b/usr.bin/grep/file.c index 8577572c2887..787e8fbe03bb 100644 --- a/usr.bin/grep/file.c +++ b/usr.bin/grep/file.c @@ -186,8 +186,7 @@ grep_open(const char *path) if (filebehave == FILE_MMAP) { struct stat st; - if ((fstat(f->fd, &st) == -1) || (st.st_size > OFF_MAX) || - (!S_ISREG(st.st_mode))) + if (fstat(f->fd, &st) == -1 || !S_ISREG(st.st_mode)) filebehave = FILE_STDIO; else { int flags = MAP_PRIVATE | MAP_NOCORE | MAP_NOSYNC; diff --git a/usr.sbin/pkg/config.c b/usr.sbin/pkg/config.c index 08e206b93511..6902cfe41b7c 100644 --- a/usr.sbin/pkg/config.c +++ b/usr.sbin/pkg/config.c @@ -567,3 +567,58 @@ config_finish(void) { for (i = 0; i < CONFIG_SIZE; i++) free(c[i].value); } + + +static int +config_value(const char *key) +{ + const struct config_entry *cp; + + for (size_t i = 0; i < nitems(c); i++) { + cp = &c[i]; + + if (strcmp(cp->key, key) == 0) { + switch (cp->type) { + case PKG_CONFIG_STRING: { + const char *val; + + (void)config_string(i, &val); + printf("%s\n", val); + break; + } + case PKG_CONFIG_BOOL: { + bool val; + + (void)config_bool(i, &val); + printf("%s\n", val ? "yes" : "no"); + break; + } + } + + return (0); + } + } + + return (ENOENT); +} + +int +config_show(int argc, char *argv[]) +{ + int error; + + if (argc != 1) { + fprintf(stderr, "Usage: pkg -N config \n"); + return (1); + } + + config_init(NULL); + error = config_value(argv[0]); + config_finish(); + + if (error == ENOENT) { + fprintf(stderr, "pkg: No such configuration options: %s\n", + argv[0]); + } + return (error); +} diff --git a/usr.sbin/pkg/config.h b/usr.sbin/pkg/config.h index 87efd3c29e94..8cb878291a7e 100644 --- a/usr.sbin/pkg/config.h +++ b/usr.sbin/pkg/config.h @@ -62,6 +62,7 @@ typedef enum { int config_init(const char *); void config_finish(void); +int config_show(int, char *[]); int config_string(pkg_config_key, const char **); int config_bool(pkg_config_key, bool *); diff --git a/usr.sbin/pkg/pkg.c b/usr.sbin/pkg/pkg.c index 7b574dc42db2..3d4119d85bf8 100644 --- a/usr.sbin/pkg/pkg.c +++ b/usr.sbin/pkg/pkg.c @@ -1195,6 +1195,11 @@ main(int argc, char *argv[]) else if (strcmp(command, "bootstrap") == 0) { bootstrap_only = true; } + else if (strcmp(command, "config") == 0 && + activation_test) { + exit(config_show(argc - optind, + argv + optind)); + } } // bootstrap doesn't accept other arguments else if (bootstrap_only) {