Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 1 Dec 2014 15:21:55 +0000 (UTC)
From:      Alexander Motin <mav@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org
Subject:   svn commit: r275368 - head/sys/cam
Message-ID:  <201412011521.sB1FLtZK095503@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: mav
Date: Mon Dec  1 15:21:54 2014
New Revision: 275368
URL: https://svnweb.freebsd.org/changeset/base/275368

Log:
  When passing LUN IDs through treat ASCII values as fixed-length, not
  interpreating NULLs as EOLs, but converting them to spaces.
  
  SPC-4 does not tell that T10-based IDs should be NULL-terminated/padded.
  And while it tells that it should include only ASCII chars (0x20-0x7F),
  there are some USB sticks (SanDisk Ultra Fit), that have NULLs inside
  the value.  Treating NULLs as EOLs there made those LUN IDs non-unique.
  
  MFC after:	1 week

Modified:
  head/sys/cam/cam_xpt.c

Modified: head/sys/cam/cam_xpt.c
==============================================================================
--- head/sys/cam/cam_xpt.c	Mon Dec  1 15:11:29 2014	(r275367)
+++ head/sys/cam/cam_xpt.c	Mon Dec  1 15:21:54 2014	(r275368)
@@ -1136,8 +1136,15 @@ xpt_getattr(char *buf, size_t len, const
 		if (idd == NULL)
 			goto out;
 		ret = 0;
-		if ((idd->proto_codeset & SVPD_ID_CODESET_MASK) == SVPD_ID_CODESET_ASCII ||
-		    (idd->proto_codeset & SVPD_ID_CODESET_MASK) == SVPD_ID_CODESET_UTF8) {
+		if ((idd->proto_codeset & SVPD_ID_CODESET_MASK) == SVPD_ID_CODESET_ASCII) {
+			if (idd->length < len) {
+				for (l = 0; l < idd->length; l++)
+					buf[l] = idd->identifier[l] ?
+					    idd->identifier[l] : ' ';
+				buf[l] = 0;
+			} else
+				ret = EFAULT;
+		} else if ((idd->proto_codeset & SVPD_ID_CODESET_MASK) == SVPD_ID_CODESET_UTF8) {
 			l = strnlen(idd->identifier, idd->length);
 			if (l < len) {
 				bcopy(idd->identifier, buf, l);



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