Fix bug introduced when adding Joliet that causes libisofs to hang.

It causes an attempt to read an extra block from ring buffer to overwrite 
buffer, which causes libisofs to hang. The problem is that Volume Descriptor
Set terminator should not be read from buffer, but generated instead.
release-1.5.4.branch
Vreixo Formoso 15 years ago
parent ad65cc4d45
commit 51df8c6284
  1. 6
      demo/iso_grow.c
  2. 4
      src/ecma119.c

@ -35,8 +35,10 @@ int main(int argc, char **argv)
Ecma119WriteOpts opts = {
1, /* level */
1, /* rockridge */
0, /* joliet */
0, /* omit_version_numbers */
0, /* allow_deep_paths */
0, /* joliet_longer_paths */
1, /* sort files */
0, /* replace_dir_mode */
0, /* replace_file_mode */
@ -88,7 +90,8 @@ int main(int argc, char **argv)
}
drive = drives[0].drive;
#ifdef ISO_GROW_CHECK_MEDIA
{
/* some check before going on */
enum burn_disc_status state;
@ -109,6 +112,7 @@ int main(int argc, char **argv)
goto exit_cleanup;
}
}
#endif
/* create the data source to accesss previous image */
src = libburn_data_source_new(drive);

@ -911,12 +911,12 @@ int ecma119_image_new(IsoImage *src, Ecma119WriteOpts *opts, Ecma119Image **img)
goto target_cleanup;
}
}
voldesc_size = target->curblock - target->ms_block - 16;
/* Volume Descriptor Set Terminator */
target->curblock++;
voldesc_size = target->curblock - target->ms_block - 16;
/*
* Create the writer for possible padding to ensure that in case of image
* growing we can safety overwrite the first 64 KiB of image.

Loading…
Cancel
Save