Fixed a potential problem with .. directory record on big-endian CPUs
This commit is contained in:
@ -755,7 +755,8 @@ int ecma119_writer_compute_data_blocks(IsoImageWriter *writer)
|
|||||||
* Do not compare by dir_rec_size_check.
|
* Do not compare by dir_rec_size_check.
|
||||||
*/
|
*/
|
||||||
static
|
static
|
||||||
void write_one_dir_record(Ecma119Image *t, Ecma119Node *dir, Ecma119Node *node,
|
void write_one_dir_record(Ecma119Image *t, Ecma119Node *check_dir,
|
||||||
|
Ecma119Node *node,
|
||||||
int file_id, uint8_t *buf, size_t len_fi,
|
int file_id, uint8_t *buf, size_t len_fi,
|
||||||
struct susp_info *info, int extent, int flag)
|
struct susp_info *info, int extent, int flag)
|
||||||
{
|
{
|
||||||
@ -763,8 +764,7 @@ void write_one_dir_record(Ecma119Image *t, Ecma119Node *dir, Ecma119Node *node,
|
|||||||
uint32_t block;
|
uint32_t block;
|
||||||
uint8_t len_dr; /*< size of dir entry without SUSP fields */
|
uint8_t len_dr; /*< size of dir entry without SUSP fields */
|
||||||
int multi_extend = 0, ret;
|
int multi_extend = 0, ret;
|
||||||
uint8_t *name = (file_id >= 0) ? (uint8_t*)&file_id
|
uint8_t *name, uint8_file_id;
|
||||||
: (uint8_t*)node->iso_name;
|
|
||||||
|
|
||||||
#ifdef Libisofs_dir_rec_size_checK
|
#ifdef Libisofs_dir_rec_size_checK
|
||||||
uint32_t written_size = 0;
|
uint32_t written_size = 0;
|
||||||
@ -773,6 +773,14 @@ void write_one_dir_record(Ecma119Image *t, Ecma119Node *dir, Ecma119Node *node,
|
|||||||
struct ecma119_dir_record *rec = (struct ecma119_dir_record*)buf;
|
struct ecma119_dir_record *rec = (struct ecma119_dir_record*)buf;
|
||||||
IsoNode *iso;
|
IsoNode *iso;
|
||||||
|
|
||||||
|
if (file_id >= 0) {
|
||||||
|
uint8_file_id = (file_id & 255);
|
||||||
|
name = &uint8_file_id;
|
||||||
|
len_fi = 1;
|
||||||
|
} else {
|
||||||
|
name = (uint8_t*) node->iso_name;
|
||||||
|
}
|
||||||
|
|
||||||
len_dr = 33 + len_fi + ((len_fi % 2) ? 0 : 1);
|
len_dr = 33 + len_fi + ((len_fi % 2) ? 0 : 1);
|
||||||
|
|
||||||
memcpy(rec->file_id, name, len_fi);
|
memcpy(rec->file_id, name, len_fi);
|
||||||
|
Reference in New Issue
Block a user