svn commit: r245891 - head/sys/cam/scsi

Jaakko Heinonen jh at FreeBSD.org
Thu Jan 24 17:28:39 UTC 2013


Author: jh
Date: Thu Jan 24 17:28:39 2013
New Revision: 245891
URL: http://svnweb.freebsd.org/changeset/base/245891

Log:
  Sanitize the element descriptor string before using it as a device name.
  
  Reported and tested by:	Vitalij Satanivskij
  Reviewed by:	gibbs, mav

Modified:
  head/sys/cam/scsi/scsi_enc_ses.c

Modified: head/sys/cam/scsi/scsi_enc_ses.c
==============================================================================
--- head/sys/cam/scsi/scsi_enc_ses.c	Thu Jan 24 17:12:02 2013	(r245890)
+++ head/sys/cam/scsi/scsi_enc_ses.c	Thu Jan 24 17:28:39 2013	(r245891)
@@ -36,6 +36,7 @@ __FBSDID("$FreeBSD$");
 
 #include <sys/param.h>
 
+#include <sys/ctype.h>
 #include <sys/errno.h>
 #include <sys/kernel.h>
 #include <sys/lock.h>
@@ -1053,10 +1054,11 @@ ses_set_physpath(enc_softc_t *enc, enc_e
 {
 	struct ccb_dev_advinfo cdai;
 	ses_setphyspath_callback_args_t args;
-	int ret;
+	int i, ret;
 	struct sbuf sb;
 	uint8_t *devid, *elmaddr;
 	ses_element_t *elmpriv;
+	const char *c;
 
 	ret = EIO;
 	devid = NULL;
@@ -1099,7 +1101,13 @@ ses_set_physpath(enc_softc_t *enc, enc_e
 	elmpriv = elm->elm_private;
 	if (elmpriv->descr != NULL && elmpriv->descr_len > 0) {
 		sbuf_cat(&sb, "/elmdesc@");
-		sbuf_bcat(&sb, elmpriv->descr, elmpriv->descr_len);
+		for (i = 0, c = elmpriv->descr; i < elmpriv->descr_len;
+		    i++, c++) {
+			if (!isprint(*c) || isspace(*c) || *c == '/')
+				sbuf_putc(&sb, '_');
+			else
+				sbuf_putc(&sb, *c);
+		}
 	}
 	sbuf_finish(&sb);
 


More information about the svn-src-head mailing list