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-all mailing list