Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files. =================================================================== RCS file: /ftp/cvs/cvsroot/src/sys/miscfs/kernfs/kernfs_vnops.c,v rcsdiff: /ftp/cvs/cvsroot/src/sys/miscfs/kernfs/kernfs_vnops.c,v: warning: Unknown phrases like `commitid ...;' are present. retrieving revision 1.111 retrieving revision 1.112 diff -u -p -r1.111 -r1.112 --- src/sys/miscfs/kernfs/kernfs_vnops.c 2005/08/31 09:54:54 1.111 +++ src/sys/miscfs/kernfs/kernfs_vnops.c 2005/09/01 06:25:26 1.112 @@ -1,4 +1,4 @@ -/* $NetBSD: kernfs_vnops.c,v 1.111 2005/08/31 09:54:54 christos Exp $ */ +/* $NetBSD: kernfs_vnops.c,v 1.112 2005/09/01 06:25:26 christos Exp $ */ /* * Copyright (c) 1992, 1993 @@ -39,7 +39,7 @@ */ #include -__KERNEL_RCSID(0, "$NetBSD: kernfs_vnops.c,v 1.111 2005/08/31 09:54:54 christos Exp $"); +__KERNEL_RCSID(0, "$NetBSD: kernfs_vnops.c,v 1.112 2005/09/01 06:25:26 christos Exp $"); #ifdef _KERNEL_OPT #include "opt_ipsec.h" @@ -427,10 +427,6 @@ kernfs_xread(kfs, off, bufp, len, wrlen) * message buffer header are corrupted, but that'll cause * the system to die anyway. */ - if (off < 0) { - *wrlen = 0; - return EINVAL; - } if (off >= msgbufp->msg_bufs) { *wrlen = 0; return (0); @@ -943,6 +939,10 @@ kernfs_read(v) if (ap->a_vp->v_type == VDIR) return (EOPNOTSUPP); + /* Don't allow negative offsets */ + if (uio->uio_offset < 0) + return EINVAL; + off = uio->uio_offset; bf = strbuf; if ((error = kernfs_xread(kfs, off, &bf, sizeof(strbuf), &len)) == 0)