Module Name: src Committed By: christos Date: Sun Nov 22 20:24:19 UTC 2015
Modified Files: src/sbin/cgdconfig: cgdconfig.c cgdconfig.h params.c Log Message: Don't chdir to the config directory; just form the parameters file with a path if needed. To generate a diff of this commit: cvs rdiff -u -r1.39 -r1.40 src/sbin/cgdconfig/cgdconfig.c cvs rdiff -u -r1.1 -r1.2 src/sbin/cgdconfig/cgdconfig.h cvs rdiff -u -r1.26 -r1.27 src/sbin/cgdconfig/params.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sbin/cgdconfig/cgdconfig.c diff -u src/sbin/cgdconfig/cgdconfig.c:1.39 src/sbin/cgdconfig/cgdconfig.c:1.40 --- src/sbin/cgdconfig/cgdconfig.c:1.39 Sun Dec 14 18:27:14 2014 +++ src/sbin/cgdconfig/cgdconfig.c Sun Nov 22 15:24:19 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: cgdconfig.c,v 1.39 2014/12/14 23:27:14 christos Exp $ */ +/* $NetBSD: cgdconfig.c,v 1.40 2015/11/22 20:24:19 christos Exp $ */ /*- * Copyright (c) 2002, 2003 The NetBSD Foundation, Inc. @@ -33,7 +33,7 @@ #ifndef lint __COPYRIGHT("@(#) Copyright (c) 2002, 2003\ The NetBSD Foundation, Inc. All rights reserved."); -__RCSID("$NetBSD: cgdconfig.c,v 1.39 2014/12/14 23:27:14 christos Exp $"); +__RCSID("$NetBSD: cgdconfig.c,v 1.40 2015/11/22 20:24:19 christos Exp $"); #endif #include <err.h> @@ -68,7 +68,6 @@ __RCSID("$NetBSD: cgdconfig.c,v 1.39 201 #include "cgdconfig.h" #include "prog_ops.h" -#define CGDCONFIG_DIR "/etc/cgd" #define CGDCONFIG_CFILE CGDCONFIG_DIR "/cgd.conf" enum action { @@ -524,22 +523,11 @@ configure(int argc, char **argv, struct } if (argc == 2) { - char *pfile, *base; + char pfile[MAXPATHLEN]; /* make string writable for basename */ - base = strdup(dev); - if (base == NULL) - return -1; - - if (asprintf(&pfile, "%s/%s", - CGDCONFIG_DIR, basename(base)) == -1) { - free(base); - return -1; - } - - p = params_cget(pfile); - free(pfile); - free(base); + strlcpy(pfile, dev, sizeof(pfile)); + p = params_cget(basename(pfile)); } else if (argc == 3) { p = params_cget(argv[2]); } else { @@ -1124,10 +1112,6 @@ do_all(const char *cfile, int argc, char return -1; } - ret = chdir(CGDCONFIG_DIR); - if (ret == -1) - warn("could not chdir to %s", CGDCONFIG_DIR); - ret = 0; lineno = 0; for (;;) { Index: src/sbin/cgdconfig/cgdconfig.h diff -u src/sbin/cgdconfig/cgdconfig.h:1.1 src/sbin/cgdconfig/cgdconfig.h:1.2 --- src/sbin/cgdconfig/cgdconfig.h:1.1 Tue Sep 8 18:16:56 2009 +++ src/sbin/cgdconfig/cgdconfig.h Sun Nov 22 15:24:19 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: cgdconfig.h,v 1.1 2009/09/08 22:16:56 pooka Exp $ */ +/* $NetBSD: cgdconfig.h,v 1.2 2015/11/22 20:24:19 christos Exp $ */ /* * Copyright (c) 2009 The NetBSD Foundation, Inc. @@ -31,4 +31,6 @@ int cgdconfig(int, char **); +#define CGDCONFIG_DIR "/etc/cgd" + #endif /* _SBIN_CGDCONFIG_H_ */ Index: src/sbin/cgdconfig/params.c diff -u src/sbin/cgdconfig/params.c:1.26 src/sbin/cgdconfig/params.c:1.27 --- src/sbin/cgdconfig/params.c:1.26 Tue Jun 16 19:18:54 2015 +++ src/sbin/cgdconfig/params.c Sun Nov 22 15:24:19 2015 @@ -1,4 +1,4 @@ -/* $NetBSD: params.c,v 1.26 2015/06/16 23:18:54 christos Exp $ */ +/* $NetBSD: params.c,v 1.27 2015/11/22 20:24:19 christos Exp $ */ /*- * Copyright (c) 2002, 2003 The NetBSD Foundation, Inc. @@ -31,10 +31,12 @@ #include <sys/cdefs.h> #ifndef lint -__RCSID("$NetBSD: params.c,v 1.26 2015/06/16 23:18:54 christos Exp $"); +__RCSID("$NetBSD: params.c,v 1.27 2015/11/22 20:24:19 christos Exp $"); #endif #include <sys/types.h> +#include <sys/param.h> +#include <sys/stat.h> #include <err.h> #include <errno.h> @@ -46,6 +48,7 @@ __RCSID("$NetBSD: params.c,v 1.26 2015/0 #include "params.h" #include "pkcs5_pbkdf2.h" #include "utils.h" +#include "cgdconfig.h" #include "extern.h" static void params_init(struct params *); @@ -618,6 +621,14 @@ params_cget(const char *fn) { struct params *p; FILE *f; + char filename[MAXPATHLEN]; + struct stat st; + + if (fn[0] != '/' && stat(fn, &st) == -1 && errno == ENOENT) { + snprintf(filename, sizeof(filename), "%s/%s", + CGDCONFIG_DIR, fn); + fn = filename; + } if ((f = fopen(fn, "r")) == NULL) { warn("failed to open params file \"%s\"", fn);