Module Name:    src
Committed By:   maxv
Date:           Sun Apr 26 09:16:06 UTC 2015

Modified Files:
        src/sys/kern: kern_veriexec.c

Log Message:
If we already have an entry for the file being loaded, return EEXIST, don't
silently skip it.


To generate a diff of this commit:
cvs rdiff -u -r1.5 -r1.6 src/sys/kern/kern_veriexec.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/kern/kern_veriexec.c
diff -u src/sys/kern/kern_veriexec.c:1.5 src/sys/kern/kern_veriexec.c:1.6
--- src/sys/kern/kern_veriexec.c:1.5	Sat Apr 25 19:10:29 2015
+++ src/sys/kern/kern_veriexec.c	Sun Apr 26 09:16:06 2015
@@ -1,4 +1,4 @@
-/*	$NetBSD: kern_veriexec.c,v 1.5 2015/04/25 19:10:29 maxv Exp $	*/
+/*	$NetBSD: kern_veriexec.c,v 1.6 2015/04/26 09:16:06 maxv Exp $	*/
 
 /*-
  * Copyright (c) 2005, 2006 Elad Efrat <e...@netbsd.org>
@@ -29,7 +29,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: kern_veriexec.c,v 1.5 2015/04/25 19:10:29 maxv Exp $");
+__KERNEL_RCSID(0, "$NetBSD: kern_veriexec.c,v 1.6 2015/04/26 09:16:06 maxv Exp $");
 
 #include "opt_veriexec.h"
 
@@ -1195,7 +1195,7 @@ int
 veriexec_file_add(struct lwp *l, prop_dictionary_t dict)
 {
 	struct veriexec_table_entry *vte;
-	struct veriexec_file_entry *vfe = NULL, *hh;
+	struct veriexec_file_entry *vfe = NULL;
 	struct vnode *vp;
 	const char *file, *fp_type;
 	int error;
@@ -1242,30 +1242,9 @@ veriexec_file_add(struct lwp *l, prop_di
 
 	rw_enter(&veriexec_op_lock, RW_WRITER);
 
-	/*
-	 * See if we already have an entry for this file. If we do, then
-	 * let the user know and silently pretend to succeed.
-	 */
-	hh = veriexec_get(vp);
-	if (hh != NULL) {
-		bool fp_mismatch;
-
-		if (strcmp(vfe->ops->type, fp_type) ||
-		    memcmp(hh->fp, vfe->fp, hh->ops->hash_len))
-			fp_mismatch = true;
-		else
-			fp_mismatch = false;
-
-		if ((veriexec_verbose >= 1) || fp_mismatch) {
-			log(LOG_NOTICE, "Veriexec: Duplicate entry for `%s' "
-			    "ignored. (%s fingerprint)\n", file,
-			    fp_mismatch ? "different" : "same");
-		}
-
-		veriexec_file_free(vfe);
-
-		/* XXX Should this be EEXIST if fp_mismatch is true? */
-		error = 0;
+	if (veriexec_get(vp)) {
+		/* We already have an entry for this file. */
+		error = EEXIST;
 		goto unlock_out;
 	}
 

Reply via email to