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