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; }