Blame SOURCES/cdrkit-1.1.9-buffer_overflow.patch

5f2abf
diff -ru origin-1.1.9/wodim/scsi_cdr.c master-1.1.9/wodim/scsi_cdr.c
5f2abf
--- origin-1.1.9/wodim/scsi_cdr.c	2008-02-25 12:14:07.000000000 +0100
5f2abf
+++ master-1.1.9/wodim/scsi_cdr.c	2009-07-16 12:01:29.000000000 +0200
5f2abf
@@ -2181,26 +2181,30 @@
5f2abf
 		if (inq->add_len == 0) {
5f2abf
 			if (usalp->dev == DEV_UNKNOWN && got_inquiry) {
5f2abf
 				usalp->dev = DEV_ACB5500;
5f2abf
-				strcpy(inq->vendor_info,
5f2abf
-					"ADAPTEC ACB-5500        FAKE");
5f2abf
+				strncpy(inq->vendor_info, "ADAPTEC ", 8);
5f2abf
+				strncpy(inq->prod_ident,"ACB-5500        ", 16);
5f2abf
+				strncpy(inq->prod_revision, "FAKE", 4);
5f2abf
 
5f2abf
 			} else switch (usalp->dev) {
5f2abf
-
5f2abf
 				case DEV_ACB40X0:
5f2abf
-					strcpy(inq->vendor_info,
5f2abf
-							"ADAPTEC ACB-40X0        FAKE");
5f2abf
+					strncpy(inq->vendor_info, "ADAPTEC ", 8);
5f2abf
+					strncpy(inq->prod_ident, "ACB-40X0        ",16);
5f2abf
+					strncpy(inq->prod_revision, "FAKE", 4);
5f2abf
 					break;
5f2abf
 				case DEV_ACB4000:
5f2abf
-					strcpy(inq->vendor_info,
5f2abf
-							"ADAPTEC ACB-4000        FAKE");
5f2abf
+					strncpy(inq->vendor_info, "ADAPTEC ",8);
5f2abf
+					strncpy(inq->prod_ident, "ACB-4000        ",16);
5f2abf
+					strncpy(inq->prod_revision, "FAKE",4);
5f2abf
 					break;
5f2abf
 				case DEV_ACB4010:
5f2abf
-					strcpy(inq->vendor_info,
5f2abf
-							"ADAPTEC ACB-4010        FAKE");
5f2abf
+					strncpy(inq->vendor_info, "ADAPTEC ",8);
5f2abf
+					strncpy(inq->prod_ident, "ACB-4010        ",16);
5f2abf
+					strncpy(inq->prod_revision, "FAKE",4);
5f2abf
 					break;
5f2abf
 				case DEV_ACB4070:
5f2abf
-					strcpy(inq->vendor_info,
5f2abf
-							"ADAPTEC ACB-4070        FAKE");
5f2abf
+					strncpy(inq->vendor_info,"ADAPTEC ",8);
5f2abf
+					strncpy(inq->prod_ident, "ACB-4070        ", 16);
5f2abf
+					strncpy(inq->prod_revision, "FAKE",4 );
5f2abf
 					break;
5f2abf
 			}
5f2abf
 		} else if (inq->add_len < 31) {
5f2abf
@@ -2230,14 +2234,16 @@
5f2abf
 
5f2abf
 	case INQ_SEQD:
5f2abf
 		if (usalp->dev == DEV_SC4000) {
5f2abf
-			strcpy(inq->vendor_info,
5f2abf
-				"SYSGEN  SC4000          FAKE");
5f2abf
+			strncpy(inq->vendor_info,"SYSGEN  ",8);
5f2abf
+			strncpy(inq->prod_ident, "SC4000          ",16);
5f2abf
+			strncpy(inq->prod_revision, "FAKE",4);
5f2abf
 		} else if (inq->add_len == 0 &&
5f2abf
 					inq->removable &&
5f2abf
 						inq->ansi_version == 1) {
5f2abf
 			usalp->dev = DEV_MT02;
5f2abf
-			strcpy(inq->vendor_info,
5f2abf
-				"EMULEX  MT02            FAKE");
5f2abf
+			strncpy(inq->vendor_info,"EMULEX  ",8);
5f2abf
+			strncpy(inq->prod_ident, "MT02            ",16);
5f2abf
+			strncpy(inq->prod_revision, "FAKE",4);
5f2abf
 		}
5f2abf
 		break;
5f2abf