Module Name:    src
Committed By:   christos
Date:           Tue Nov 24 14:07:18 UTC 2015

Modified Files:
        src/sbin/cgdconfig: params.c

Log Message:
CID 1340063: fix TOCTOU


To generate a diff of this commit:
cvs rdiff -u -r1.27 -r1.28 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/params.c
diff -u src/sbin/cgdconfig/params.c:1.27 src/sbin/cgdconfig/params.c:1.28
--- src/sbin/cgdconfig/params.c:1.27	Sun Nov 22 15:24:19 2015
+++ src/sbin/cgdconfig/params.c	Tue Nov 24 09:07:18 2015
@@ -1,4 +1,4 @@
-/* $NetBSD: params.c,v 1.27 2015/11/22 20:24:19 christos Exp $ */
+/* $NetBSD: params.c,v 1.28 2015/11/24 14:07:18 christos Exp $ */
 
 /*-
  * Copyright (c) 2002, 2003 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
 
 #include <sys/cdefs.h>
 #ifndef lint
-__RCSID("$NetBSD: params.c,v 1.27 2015/11/22 20:24:19 christos Exp $");
+__RCSID("$NetBSD: params.c,v 1.28 2015/11/24 14:07:18 christos Exp $");
 #endif
 
 #include <sys/types.h>
@@ -622,15 +622,15 @@ 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) {
+	if ((f = fopen(fn, "r")) == NULL && fn[0] != '/') {
 		snprintf(filename, sizeof(filename), "%s/%s",
 		    CGDCONFIG_DIR, fn);
 		fn = filename;
+		f = fopen(fn, "r");
 	}
 
-	if ((f = fopen(fn, "r")) == NULL) {
+	if (f == NULL) {
 		warn("failed to open params file \"%s\"", fn);
 		return NULL;
 	}

Reply via email to