Module Name: src Committed By: kamil Date: Sat Apr 4 19:24:51 UTC 2020
Modified Files: src/sys/rump/librump/rumpvfs: rumpfs.c Log Message: Avoid copying zero-sized objects (from the NULL address) Detected with UBSan To generate a diff of this commit: cvs rdiff -u -r1.154 -r1.155 src/sys/rump/librump/rumpvfs/rumpfs.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/rumpvfs/rumpfs.c diff -u src/sys/rump/librump/rumpvfs/rumpfs.c:1.154 src/sys/rump/librump/rumpvfs/rumpfs.c:1.155 --- src/sys/rump/librump/rumpvfs/rumpfs.c:1.154 Fri Jan 17 20:08:09 2020 +++ src/sys/rump/librump/rumpvfs/rumpfs.c Sat Apr 4 19:24:51 2020 @@ -1,4 +1,4 @@ -/* $NetBSD: rumpfs.c,v 1.154 2020/01/17 20:08:09 ad Exp $ */ +/* $NetBSD: rumpfs.c,v 1.155 2020/04/04 19:24:51 kamil Exp $ */ /* * Copyright (c) 2009, 2010, 2011 Antti Kantee. All Rights Reserved. @@ -26,7 +26,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: rumpfs.c,v 1.154 2020/01/17 20:08:09 ad Exp $"); +__KERNEL_RCSID(0, "$NetBSD: rumpfs.c,v 1.155 2020/04/04 19:24:51 kamil Exp $"); #include <sys/param.h> #include <sys/atomic.h> @@ -977,7 +977,8 @@ rump_vop_setattr(void *v) return ENOSPC; copylen = MIN(rn->rn_dlen, newlen); - memcpy(newdata, rn->rn_data, copylen); + if (copylen > 0) + memcpy(newdata, rn->rn_data, copylen); memset((char *)newdata + copylen, 0, newlen - copylen); if ((rn->rn_flags & RUMPNODE_EXTSTORAGE) == 0) { @@ -1492,7 +1493,8 @@ rump_vop_write(void *v) return ENOSPC; rn->rn_dlen = newlen; memset(rn->rn_data, 0, newlen); - memcpy(rn->rn_data, olddata, oldlen); + if (oldlen > 0) + memcpy(rn->rn_data, olddata, oldlen); allocd = true; uvm_vnp_setsize(vp, newlen); }