Репозитории 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 |
Группа :: Архивирование/Создание 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;