Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 19 May 2016 19:13:43 +0000 (UTC)
From:      "Kenneth D. Merry" <ken@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r300224 - head/usr.sbin/camdd
Message-ID:  <201605191913.u4JJDhOQ075622@repo.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: ken
Date: Thu May 19 19:13:43 2016
New Revision: 300224
URL: https://svnweb.freebsd.org/changeset/base/300224

Log:
  Adjust a couple of error cases in camdd(8).
  
  usr.sbin/camdd/camdd.c:
  	In camdd_probe_file(), fix an error case after fstat where
  	we were bailing out and leaving two lines of cleanup code
  	unexecuted.  Instead, just goto bailout_error.
  
  	In camdd_probe_pass(), fail if the sector size is 0.
  
  Sponsored by:	Spectra Logic
  MFC after:	3 days

Modified:
  head/usr.sbin/camdd/camdd.c

Modified: head/usr.sbin/camdd/camdd.c
==============================================================================
--- head/usr.sbin/camdd/camdd.c	Thu May 19 17:54:14 2016	(r300223)
+++ head/usr.sbin/camdd/camdd.c	Thu May 19 19:13:43 2016	(r300224)
@@ -1079,9 +1079,7 @@ camdd_probe_file(int fd, struct camdd_io
 		retval = fstat(fd, &file_dev->sb);
 		if (retval != 0) {
 			warn("Cannot stat %s", dev->device_name);
-			goto bailout;
-			camdd_free_dev(dev);
-			dev = NULL;
+			goto bailout_error;
 		}
 		if (S_ISREG(file_dev->sb.st_mode)) {
 			file_dev->file_type = CAMDD_FILE_REG;
@@ -1383,6 +1381,11 @@ camdd_probe_pass(struct cam_device *cam_
 	block_len = scsi_4btoul(rcaplong.length);
 
 rcap_done:
+	if (block_len == 0) {
+		warnx("Sector size for %s%u is 0, cannot continue",
+		    cam_dev->device_name, cam_dev->dev_unit_num);
+		goto bailout_error;
+	}
 
 	bzero(&(&ccb->ccb_h)[1],
 	      sizeof(struct ccb_scsiio) - sizeof(struct ccb_hdr));



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201605191913.u4JJDhOQ075622>