Репозиторий Sisyphus
Последнее обновление: 1 октября 2023 | Пакетов: 18631 | Посещений: 37500641
en ru br
Репозитории ALT
S:1.1.11-alt2
5.1: 1.1.9.832-alt3
4.1: 1.1.6-alt1
4.0: 1.1.1-alt2
www.altlinux.org/Changes

Группа :: Архивирование/Создание CD
Пакет: cdrkit

 Главная   Изменения   Спек   Патчи   Sources   Загрузить   Gear   Bugs and FR  Repocop 

Патч: cdrkit-1.1.9-alt-bound.patch
Скачать


--- cdrkit/genisoimage/eltorito.c
+++ cdrkit/genisoimage/eltorito.c
@@ -286,10 +286,10 @@ get_torito_desc(struct eltorito_boot_descriptor *boot_desc)
 
 	memset(boot_desc, 0, sizeof (*boot_desc));
 	boot_desc->type[0] = 0;
-	memcpy(boot_desc->id, ISO_STANDARD_ID, sizeof (ISO_STANDARD_ID));
+	strncpy(boot_desc->id, ISO_STANDARD_ID, sizeof (boot_desc->id));
 	boot_desc->version[0] = 1;
 
-	memcpy(boot_desc->system_id, EL_TORITO_ID, sizeof (EL_TORITO_ID));
+	strncpy(boot_desc->system_id, EL_TORITO_ID, sizeof (boot_desc->system_id));
 
 	/*
 	 * search from root of iso fs to find boot catalog
@@ -324,8 +324,7 @@ get_torito_desc(struct eltorito_boot_descriptor *boot_desc)
 	 * may get truncated but who really reads this stuff!
 	 */
 	if (publisher)
-		memcpy_max(valid_desc.id, publisher,
-						MIN(23, strlen(publisher)));
+		strncpy(valid_desc.id, publisher, sizeof(valid_desc.id));
 
 	valid_desc.key1[0] = (char) 0x55;
 	valid_desc.key2[0] = (char) 0xAA;
--- cdrkit/genisoimage/genisoimage.h
+++ cdrkit/genisoimage/genisoimage.h
@@ -500,7 +500,6 @@ extern void set_721(char *, unsigned int);
 extern void set_733(char *, unsigned int);
 extern int sort_directory(struct directory_entry **, int);
 extern void generate_one_directory(struct directory *, FILE *);
-extern void memcpy_max(char *, char *, int);
 extern int oneblock_size(int starting_extent);
 extern struct iso_primary_descriptor vol_desc;
 extern void xfwrite(void *buffer, int size, int count, FILE *file, int submode,
--- cdrkit/genisoimage/write.c
+++ cdrkit/genisoimage/write.c
@@ -112,7 +112,6 @@ void	generate_one_directory(struct directory *dpnt, FILE *outfile);
 static 	void	build_pathlist(struct directory *node);
 static 	int	compare_paths(void const *r, void const *l);
 static 	int	generate_path_tables(void);
-void	memcpy_max(char *to, char *from, int max);
 void	outputlist_insert(struct output_fragment *frag);
 static 	int	file_write(FILE *outfile);
 static 	int	pvd_write(FILE *outfile);
@@ -161,6 +160,7 @@ static 	int	sort_file_addresses(void);
  * we could write a tape, or write the disc directly
  */
 #define	FILL_SPACE(X)	memset(vol_desc.X, ' ', sizeof (vol_desc.X))
+#define	COPY_SPACE(X,S)	if (S) strncpy(vol_desc.X, S, sizeof(vol_desc.X))
 
 void
 set_721(char *pnt, unsigned int i)
@@ -1725,18 +1725,6 @@ generate_path_tables()
 }/* generate_path_tables(... */
 
 void
-memcpy_max(char *to, char *from, int max)
-{
-	int	n = strlen(from);
-
-	if (n > max) {
-		n = max;
-	}
-	memcpy(to, from, n);
-
-}/* memcpy_max(... */
-
-void
 outputlist_insert(struct output_fragment *frag)
 {
 	struct output_fragment *nfrag;
@@ -1912,14 +1900,14 @@ pvd_write(FILE *outfile)
 	/* Next we write out the primary descriptor for the disc */
 	memset(&vol_desc, 0, sizeof (vol_desc));
 	vol_desc.type[0] = ISO_VD_PRIMARY;
-	memcpy(vol_desc.id, ISO_STANDARD_ID, sizeof (ISO_STANDARD_ID));
+	strncpy(vol_desc.id, ISO_STANDARD_ID, sizeof (vol_desc.id));
 	vol_desc.version[0] = 1;
 
 	memset(vol_desc.system_id, ' ', sizeof (vol_desc.system_id));
-	memcpy_max(vol_desc.system_id, system_id, strlen(system_id));
+	strncpy(vol_desc.system_id, system_id, sizeof (vol_desc.system_id));
 
 	memset(vol_desc.volume_id, ' ', sizeof (vol_desc.volume_id));
-	memcpy_max(vol_desc.volume_id, volume_id, strlen(volume_id));
+	strncpy(vol_desc.volume_id, volume_id, sizeof (vol_desc.volume_id));
 
 	should_write = last_extent - session_start;
 	set_733((char *) vol_desc.volume_space_size, should_write);
@@ -1946,35 +1934,25 @@ pvd_write(FILE *outfile)
 	 * fields, though.
 	 */
 	FILL_SPACE(volume_set_id);
-	if (volset_id)
-		memcpy_max(vol_desc.volume_set_id, volset_id, strlen(volset_id));
+	COPY_SPACE(volume_set_id, volset_id);
 
 	FILL_SPACE(publisher_id);
-	if (publisher)
-		memcpy_max(vol_desc.publisher_id, publisher, strlen(publisher));
+	COPY_SPACE(publisher_id, publisher);
 
 	FILL_SPACE(preparer_id);
-	if (preparer)
-		memcpy_max(vol_desc.preparer_id, preparer, strlen(preparer));
+	COPY_SPACE(preparer_id, preparer);
 
 	FILL_SPACE(application_id);
-	if (appid)
-		memcpy_max(vol_desc.application_id, appid, strlen(appid));
+	COPY_SPACE(application_id, appid);
 
 	FILL_SPACE(copyright_file_id);
-	if (copyright)
-		memcpy_max(vol_desc.copyright_file_id, copyright,
-			strlen(copyright));
+	COPY_SPACE(copyright_file_id, copyright);
 
 	FILL_SPACE(abstract_file_id);
-	if (abstract)
-		memcpy_max(vol_desc.abstract_file_id, abstract,
-			strlen(abstract));
+	COPY_SPACE(abstract_file_id, abstract);
 
 	FILL_SPACE(bibliographic_file_id);
-	if (biblio)
-		memcpy_max(vol_desc.bibliographic_file_id, biblio,
-			strlen(biblio));
+	COPY_SPACE(bibliographic_file_id, biblio);
 
 	FILL_SPACE(creation_date);
 	FILL_SPACE(modification_date);
@@ -2035,7 +2013,7 @@ evd_write(FILE *outfile)
 	 */
 	memset(&evol_desc, 0, sizeof (evol_desc));
 	evol_desc.type[0] = (unsigned char) ISO_VD_END;
-	memcpy(evol_desc.id, ISO_STANDARD_ID, sizeof (ISO_STANDARD_ID));
+	strncpy(evol_desc.id, ISO_STANDARD_ID, sizeof (evol_desc.id));
 	evol_desc.version[0] = 1;
 	jtwrite(&evol_desc, SECTOR_SIZE, 1, 0, TRUE);
 	xfwrite(&evol_desc, SECTOR_SIZE, 1, outfile, 0, TRUE);
--- cdrkit/wodim/scsi_cdr.c
+++ cdrkit/wodim/scsi_cdr.c
@@ -2061,6 +2061,20 @@ read_g1(SCSI *usalp, caddr_t bp, long addr, int cnt)
 }
 #endif	/* DEBUG */
 
+static void
+set_vendor_info(struct scsi_inquiry *inq, const char *vendor_info,
+	const char *prod_ident, const char *prod_revision)
+{
+	memset(inq->vendor_info, ' ', sizeof(inq->vendor_info));
+	strncpy(inq->vendor_info, vendor_info, sizeof(inq->vendor_info));
+
+	memset(inq->prod_ident, ' ', sizeof(inq->prod_ident));
+	strncpy(inq->prod_ident, prod_ident, sizeof(inq->prod_ident));
+
+	memset(inq->prod_revision, ' ', sizeof(inq->prod_revision));
+	strncpy(inq->prod_revision, prod_revision, sizeof(inq->prod_revision));
+}
+
 BOOL
 getdev(SCSI *usalp, BOOL print)
 {
@@ -2181,26 +2195,25 @@ getdev(SCSI *usalp, BOOL print)
 		if (inq->add_len == 0) {
 			if (usalp->dev == DEV_UNKNOWN && got_inquiry) {
 				usalp->dev = DEV_ACB5500;
-				strcpy(inq->vendor_info,
-					"ADAPTEC ACB-5500        FAKE");
+				set_vendor_info(inq, "ADAPTEC",
+					"ACB-5500", "FAKE");
 
 			} else switch (usalp->dev) {
-
 				case DEV_ACB40X0:
-					strcpy(inq->vendor_info,
-							"ADAPTEC ACB-40X0        FAKE");
+					set_vendor_info(inq, "ADAPTEC",
+						"ACB-40X0", "FAKE");
 					break;
 				case DEV_ACB4000:
-					strcpy(inq->vendor_info,
-							"ADAPTEC ACB-4000        FAKE");
+					set_vendor_info(inq, "ADAPTEC",
+						"ACB-4000", "FAKE");
 					break;
 				case DEV_ACB4010:
-					strcpy(inq->vendor_info,
-							"ADAPTEC ACB-4010        FAKE");
+					set_vendor_info(inq, "ADAPTEC",
+						"ACB-4010", "FAKE");
 					break;
 				case DEV_ACB4070:
-					strcpy(inq->vendor_info,
-							"ADAPTEC ACB-4070        FAKE");
+					set_vendor_info(inq, "ADAPTEC",
+						"ACB-4070", "FAKE");
 					break;
 			}
 		} else if (inq->add_len < 31) {
@@ -2230,14 +2243,12 @@ getdev(SCSI *usalp, BOOL print)
 
 	case INQ_SEQD:
 		if (usalp->dev == DEV_SC4000) {
-			strcpy(inq->vendor_info,
-				"SYSGEN  SC4000          FAKE");
+			set_vendor_info(inq, "SYSGEN", "SC4000", "FAKE");
 		} else if (inq->add_len == 0 &&
 					inq->removable &&
 						inq->ansi_version == 1) {
 			usalp->dev = DEV_MT02;
-			strcpy(inq->vendor_info,
-				"EMULEX  MT02            FAKE");
+			set_vendor_info(inq, "EMULEX", "MT02", "FAKE");
 		}
 		break;
 
 
дизайн и разработка: Vladimir Lettiev aka crux © 2004-2005, Andrew Avramenko aka liks © 2007-2008
текущий майнтейнер: Michael Shigorin