diff options
author | csjp <csjp@FreeBSD.org> | 2006-01-15 20:30:13 +0000 |
---|---|---|
committer | csjp <csjp@FreeBSD.org> | 2006-01-15 20:30:13 +0000 |
commit | 4c05286a613b1b9ac075892dd1cb14b59104df9f (patch) | |
tree | b1e839b7b6c69fb204a9bae3a040c37ae8f17868 /lib/libkvm/kvm.c | |
parent | 4f56714639d51648ac88b88d258e6af51adb1ce4 (diff) | |
download | FreeBSD-src-4c05286a613b1b9ac075892dd1cb14b59104df9f.zip FreeBSD-src-4c05286a613b1b9ac075892dd1cb14b59104df9f.tar.gz |
Validate that the supplied file is not empty before trying mmap(2) it
and access the pages associated with it.
Submitted by: Wojciech A. Koszek
PR: bin/91411
MFC after: 1 week
Diffstat (limited to 'lib/libkvm/kvm.c')
-rw-r--r-- | lib/libkvm/kvm.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/lib/libkvm/kvm.c b/lib/libkvm/kvm.c index 9e97a78..1bea13c 100644 --- a/lib/libkvm/kvm.c +++ b/lib/libkvm/kvm.c @@ -179,6 +179,11 @@ _kvm_open(kd, uf, mf, flag, errout) _kvm_syserr(kd, kd->program, "%s", mf); goto failed; } + if (S_ISREG(st.st_mode) && st.st_size <= 0) { + errno = EINVAL; + _kvm_syserr(kd, kd->program, "empty file"); + goto failed; + } if (fcntl(kd->pmfd, F_SETFD, FD_CLOEXEC) < 0) { _kvm_syserr(kd, kd->program, "%s", mf); goto failed; |