svn commit: r311210 - head/usr.sbin/diskinfo
Alan Somers
asomers at FreeBSD.org
Wed Jan 4 00:39:07 UTC 2017
Author: asomers
Date: Wed Jan 4 00:39:06 2017
New Revision: 311210
URL: https://svnweb.freebsd.org/changeset/base/311210
Log:
Quell Coverity for diskinfo(8)
* CID 1198994: Don't run the speed disk on a disk with no sectors
* CID 1011442: Don't call close(2) if open(2) fails
* CID 1011161: Use snprintf instead of sprintf
* CID 1009825: Check the return value of lseek
Reported by: Coverity
CID: 1198994 1011442 1011161 1009825
MFC after: 4 weeks
Sponsored by: Spectra Logic Corp
Modified:
head/usr.sbin/diskinfo/diskinfo.c
Modified: head/usr.sbin/diskinfo/diskinfo.c
==============================================================================
--- head/usr.sbin/diskinfo/diskinfo.c Wed Jan 4 00:39:00 2017 (r311209)
+++ head/usr.sbin/diskinfo/diskinfo.c Wed Jan 4 00:39:06 2017 (r311210)
@@ -104,13 +104,12 @@ main(int argc, char **argv)
for (i = 0; i < argc; i++) {
fd = open(argv[i], O_RDONLY | O_DIRECT);
if (fd < 0 && errno == ENOENT && *argv[i] != '/') {
- sprintf(buf, "%s%s", _PATH_DEV, argv[i]);
+ snprintf(buf, BUFSIZ, "%s%s", _PATH_DEV, argv[i]);
fd = open(buf, O_RDONLY);
}
if (fd < 0) {
warn("%s", argv[i]);
- exitval = 1;
- goto out;
+ exit(1);
}
error = fstat(fd, &sb);
if (error != 0) {
@@ -213,7 +212,8 @@ rdsect(int fd, off_t blockno, u_int sect
{
int error;
- lseek(fd, (off_t)blockno * sectorsize, SEEK_SET);
+ if (lseek(fd, (off_t)blockno * sectorsize, SEEK_SET) == -1)
+ err(1, "lseek");
error = read(fd, sector, sectorsize);
if (error == -1)
err(1, "read");
@@ -296,6 +296,9 @@ speeddisk(int fd, off_t mediasize, u_int
off_t b0, b1, sectorcount, step;
sectorcount = mediasize / sectorsize;
+ if (sectorcount <= 0)
+ return; /* Can't test devices with no sectors */
+
step = 1ULL << (flsll(sectorcount / (4 * 200)) - 1);
if (step > 16384)
step = 16384;
More information about the svn-src-head
mailing list