Module Name: src Committed By: njoly Date: Fri Jul 26 16:07:51 UTC 2013
Modified Files: src/sys/rump/librump/rumpkern: rumpcopy.c Log Message: Make copyinstr/copyoutstr return EFAULT for special NULL "user" address. Ok pooka@. To generate a diff of this commit: cvs rdiff -u -r1.17 -r1.18 src/sys/rump/librump/rumpkern/rumpcopy.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/rump/librump/rumpkern/rumpcopy.c diff -u src/sys/rump/librump/rumpkern/rumpcopy.c:1.17 src/sys/rump/librump/rumpkern/rumpcopy.c:1.18 --- src/sys/rump/librump/rumpkern/rumpcopy.c:1.17 Tue Jan 18 22:21:23 2011 +++ src/sys/rump/librump/rumpkern/rumpcopy.c Fri Jul 26 16:07:51 2013 @@ -1,4 +1,4 @@ -/* $NetBSD: rumpcopy.c,v 1.17 2011/01/18 22:21:23 haad Exp $ */ +/* $NetBSD: rumpcopy.c,v 1.18 2013/07/26 16:07:51 njoly Exp $ */ /* * Copyright (c) 2009 Antti Kantee. All Rights Reserved. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rumpcopy.c,v 1.17 2011/01/18 22:21:23 haad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rumpcopy.c,v 1.18 2013/07/26 16:07:51 njoly Exp $"); #include <sys/param.h> #include <sys/lwp.h> @@ -115,6 +115,10 @@ copyinstr(const void *uaddr, void *kaddr if (len == 0) return 0; + if (__predict_false(uaddr == NULL)) { + return EFAULT; + } + if (RUMP_LOCALPROC_P(curproc)) return copystr(uaddr, kaddr, len, done); @@ -144,6 +148,10 @@ copyoutstr(const void *kaddr, void *uadd size_t slen; int error; + if (__predict_false(uaddr == NULL && len)) { + return EFAULT; + } + if (RUMP_LOCALPROC_P(curproc)) return copystr(kaddr, uaddr, len, done);