Compare commits

...

2 Commits

3 changed files with 31 additions and 6 deletions

View File

@ -1,5 +1,8 @@
libisofs-1.5.4.tar.gz Sat Jan 30 2021 libisofs-1.5.4.tar.gz Sun Feb 07 2021
=============================================================================== ===============================================================================
* Bug fix: Large amounts of AAIP data or many long file names could cause with
zisofs an unreadable filesystem after the warning "Calculated and
written ECMA-119 tree end differ"
* Bug fix: Big-Endian MIPS Volume Header boot file size was rounded up to * Bug fix: Big-Endian MIPS Volume Header boot file size was rounded up to
full 2048. Thanks René Rebe. full 2048. Thanks René Rebe.
* Bug fix: El Torito production failed if no catalog path is given and the * Bug fix: El Torito production failed if no catalog path is given and the

View File

@ -748,7 +748,21 @@ ChangeLog
libisofs/changelog.txt libisofs/changelog.txt
Updated change log Updated change log
------------------------------------ release - libisofs-1.5.4 - 30 Jan 2021 07 Feb 2021 [release-1.5.4.branch: 408eb3f]
libisofs/rockridge.c
Bug fix: Large amounts of AAIP data or many long file names could cause with
zisofs an unreadable filesystem after the warning "Calculated and written
ECMA-119 tree end differ"
07 Feb 2021 [release-1.5.4.branch: ]
ChangeLog
libisofs/changelog.txt
Updated change log
------------------------------------ release - libisofs-1.5.4 - 07 Feb 2021
* Bug fix: Large amounts of AAIP data or many long file names could cause with
zisofs an unreadable filesystem after the warning "Calculated and
written ECMA-119 tree end differ"
* Bug fix: Big-Endian MIPS Volume Header boot file size was rounded up to * Bug fix: Big-Endian MIPS Volume Header boot file size was rounded up to
full 2048. Thanks René Rebe. full 2048. Thanks René Rebe.
* Bug fix: El Torito production failed if no catalog path is given and the * Bug fix: El Torito production failed if no catalog path is given and the

View File

@ -1166,7 +1166,7 @@ int susp_calc_nm_sl_al(Ecma119Image *t, Ecma119Node *n, size_t space,
size_t *su_size, size_t *ce, size_t base_ce, int flag) size_t *su_size, size_t *ce, size_t base_ce, int flag)
{ {
char *name; char *name;
size_t namelen, su_mem, ce_mem; size_t namelen, su_mem, ce_mem, ce_prepad = 0;
void *xipt; void *xipt;
size_t num_aapt = 0, sua_free = 0; size_t num_aapt = 0, sua_free = 0;
int ret; int ret;
@ -1197,7 +1197,7 @@ int susp_calc_nm_sl_al(Ecma119Image *t, Ecma119Node *n, size_t space,
#endif /* Libisofs_ce_calc_debuG */ #endif /* Libisofs_ce_calc_debuG */
*ce += BLOCK_SIZE - (base_ce % BLOCK_SIZE); ce_prepad = BLOCK_SIZE - (base_ce % BLOCK_SIZE);
} }
} }
@ -1210,8 +1210,10 @@ int susp_calc_nm_sl_al(Ecma119Image *t, Ecma119Node *n, size_t space,
if (flag & 1) { if (flag & 1) {
/* Account for 28 bytes of CE field */ /* Account for 28 bytes of CE field */
if (*su_size + 28 > space) if (*su_size + 28 > space) {
*ce += ce_prepad;
return -1; return -1;
}
*su_size += 28; *su_size += 28;
} }
@ -1242,8 +1244,10 @@ int susp_calc_nm_sl_al(Ecma119Image *t, Ecma119Node *n, size_t space,
int cew = (*ce != 0); /* are we writing to CA ? */ int cew = (*ce != 0); /* are we writing to CA ? */
dest = get_rr_fname(t, ((IsoSymlink*)n->node)->dest); dest = get_rr_fname(t, ((IsoSymlink*)n->node)->dest);
if (dest == NULL) if (dest == NULL) {
*ce += ce_prepad;
return -2; return -2;
}
prev = dest; prev = dest;
cur = strchr(prev, '/'); cur = strchr(prev, '/');
while (1) { while (1) {
@ -1353,6 +1357,9 @@ int susp_calc_nm_sl_al(Ecma119Image *t, Ecma119Node *n, size_t space,
if (*ce > 0 && !(flag & 1)) if (*ce > 0 && !(flag & 1))
goto unannounced_ca; goto unannounced_ca;
*ce += ce_prepad;
ce_prepad = 0;
/* obtain num_aapt from node */ /* obtain num_aapt from node */
xipt = NULL; xipt = NULL;
num_aapt = 0; num_aapt = 0;
@ -1405,6 +1412,7 @@ int susp_calc_nm_sl_al(Ecma119Image *t, Ecma119Node *n, size_t space,
} }
} }
*ce += ce_prepad;
return 1; return 1;
unannounced_ca:; unannounced_ca:;