Blame SOURCES/cdrkit-1.1.9-buffer_overflow.patch

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