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;
_______________________________________________
svn-src-all@freebsd.org mailing list
https://lists.freebsd.org/mailman/listinfo/svn-src-all
To unsubscribe, send any mail to "svn-src-all-unsubscr...@freebsd.org"

Reply via email to