Commit Graph

52 Commits

Author SHA1 Message Date
christos
c316d7b24a little size_t/ssize_t... 2015-12-24 15:52:37 +00:00
christos
204cbe512f Fix some more MKREPRO issues in cdrom creation. Now amd64 passes MKREPRO. 2015-12-21 03:19:17 +00:00
christos
799916c021 Provide a -T option to set timestamps to a consistent value for MKREPRO 2015-11-25 00:48:49 +00:00
christos
7408c4ccbf more error normalization 2015-06-17 01:05:41 +00:00
christos
8ee626c9fa improve error messages (remove \n, use __func__, etc) 2015-06-16 23:04:13 +00:00
apb
3d4c34e695 Now that tools/compat/compat_defs.h defones __USE, there's no
need to treat the tools build as a special case.
2013-10-24 14:01:01 +00:00
mrg
e392147a46 avoid using __USE() in the tools version of this. 2013-10-19 20:49:22 +00:00
christos
0a77b69ab6 fix unused variable warnings. 2013-10-19 17:16:37 +00:00
reinoud
7da88b2514 `makefs -t cd9660' fix from FreeBSD:
Submitted by:   Thomas Schmitt via marius@freebsd.org
Obtained from:  FreeBSD r253707

- Correctly set the Expiration Time in the Primary Volume Descriptor;
  according to ISO 9660 8.4.26.1 unspecified date and time are denoted by the
  digit 0 in RBP 1 to 16 but the number 0 in RBP 17.

- Rock Ridge TF entries should use a length of 5, because after the 4 bytes of
  generic SUSP header there is one byte of flags. See typedef of ISO_RRIP_TF
  in iso9660_rrip.h.
2013-07-30 16:02:23 +00:00
christos
3cfc43473d macroize to make it more type-safe. 2013-01-31 15:15:15 +00:00
christos
2431e0788b the allow options are 8 bits wide. 2013-01-31 14:56:32 +00:00
christos
50d02345aa make everything use the generic options parser. 2013-01-29 15:52:25 +00:00
christos
fa62ba2145 handle some of the options by the generic parser. 2013-01-29 01:05:57 +00:00
christos
e4989541fe - use emalloc and friends
- kill a bunch of global variables, more work to be done here
- homogenize option parsing. more work for cd9660
- use the new options parsing code to print an fs-specific usage
2013-01-28 21:03:26 +00:00
christos
562664d1e3 - Fix single letter option parsing.
- Instead of returning 1 << index and 0 on error,
  return just index and -1 on error for the set_option*() routines.
2013-01-24 01:10:47 +00:00
christos
1c35cd3809 remove duplicated code, and try to cleanup parsing by using the shared code.
cd9660 needs a lot of work.
2013-01-23 21:32:32 +00:00
christos
3d364f5471 - add support for parsing different types; not just int.
- add beginning of msdos support.
2013-01-23 20:46:39 +00:00
christos
f1cc09510d Patch from Jung-uk Kim (jkim at FreeBSD dot org) to allow contents of multiple
directories to be merged to the current image.
2012-01-28 02:35:46 +00:00
christos
91cc0e5629 more fixes from martin 2011-08-23 19:57:24 +00:00
christos
3e74546ba5 remove stray brace, minor knf 2011-08-23 19:17:07 +00:00
christos
1beaa2ceec PR/45285: Martin Matuska: makefs does not properly convert ISO level 1 and 2
filenames (buffer overflow)

makefs does not properly verify the maximum filename length in the
special "." case for both ISO level 1 and ISO level 2 filename
conversion.  This creates broken images or causes a buffer overflow
(ISO level 2).

ISO level 1:
If a filename contains only dots or up to 8 characters followed by
dots the 8+3 limit check doesn't work.

ISO level 2:
If a filename contains a dot in the first 30 characters and a dot
on the 30th character, the length limit check doesn't work and the
buffer is overflowed.

$ mkdir level1
$ touch level1/12345............
$ makefs -t cd9660 -o isolevel=1 test.iso level1

$ mkdir level2
$ touch level2/1234567890.2345678901234567.....34567890123456789012345
$ makefs -t cd9660 -o isolevel=2 test.iso level2
2011-08-23 17:09:11 +00:00
christos
b166834bb8 PR/45217: Martin Matuska: Use proper lengths to space pad fields and don't
overwrite them according to the spec.
2011-08-06 23:25:19 +00:00
tsutsui
79fcae9efc Apply fixes for PR bin/44114 (makefs(8) -t cd9660 -o rockridge creates
corrupted cd9660fs):
 - makefs/cd9660.c:
  - cd9660_rrip_move_directory() should also update lenght[0] and
    name_len[0] in dir->isoDirRecord
 - makefs/cd9660/iso9660_rrip.c:
  - cd9660_rrip_finalize_node() should check rr_real_parent in node->parent,
    not in node itself in RRIP_PL case
  - cd9660_rrip_initialize_node() should update only node passed as arg
    so handle RRIP_PL in DOTDOT case

Fixes malformed dotdot entries in deep (more than 8 level) directories
moved into .rr_moved dir.

Should be pulled up to netbsd-5.
(no official ISO has such deep dirs, but cobalt restorecd is affected)
2011-05-29 17:07:57 +00:00
christos
0477909eb4 From Nathan Whitehorn (nwhitehorn at freebsd dot org):
Add code to generate bootable ISOs on Powermac and CHRP systems.
Synthesize some partition maps (APM and MBR, respectively) pointing
to (a) the whole disk, and (b) relevant El Torito boot images that
have been added by other code. These partition maps are a little
bit funny looking, but they seem to work. FreeBSD has been using
this successfully in their release generation on powerpc, as well
as generating all non-SPARC install media. SPARC support could
probably be added as an extension of this patch.
2011-05-22 21:51:39 +00:00
tsutsui
41610f52e9 cd9960 -> cd9660 2010-11-19 15:47:32 +00:00
christos
2ec6e0f18a Handle > 2GB images. Thanks to Greg Troxel for testing! 2010-10-27 18:51:34 +00:00
pooka
9857fb8cb2 remove fsopts asserts - the parameter is unused, so we don't care here 2009-01-16 18:02:24 +00:00
bjh21
f8474b32a7 Add support for encoding RISC OS metadata into ISO 9660 filesystems.
This is done by adding the general ability to stuff non-SUSP data into
the end of the System Use field of a Directory Record, which required
some amount of rewriting of the SUSP support.  I think the result is
at least as good as what came before, and I've fixed at least one bug
along the way.  Tested against RISC OS 3.70 on my Risc PC.

Oh, why do we want it?  It should allow us to make acorn{26,32} CDs that
can be booted directly from RISC OS without mucking around copying the
bootloader to a native filing system.
2009-01-10 22:06:29 +00:00
bjh21
72846fc11e If the user specifies a cd9660-specific option that needs an integer value
without supplying a value, complain at them instead of segfaulting.
Or, to put it another way, check that the value is non-NULL before calling
set_option().
2009-01-08 22:26:19 +00:00
ad
577910fbd3 Make the allow-multidot option useful. 2008-11-21 10:02:12 +00:00
ahoka
40ccd11cb5 Import changes from the MirBSD Project:
Initialise memory before writing to only part of it,
making sure that the string is NUL-terminated

Allocate the maximum allowed length (including the
terminating NUL byte) for the temporary name string, make sure
the final output is NUL terminated, and copy back the NUL when
overwriting the previously created name (since maxlen is always
at least 1 less than ISO_FILENAME_MAXLENGTH_WITH_PADDING, this
is no problem)

Patches from Thorsten Glaser through freenode.net.
2008-10-30 18:43:13 +00:00
reinoud
01c0b5bf89 Fix typo in cd9660 functionname cd9660_setup_boot_volume_descritpor ->
cd9660_setup_boot_volume_descriptor.

Interestingly the same typo was used in 3 files!
2008-07-27 10:29:32 +00:00
skrll
989d6357d3 Add an option to load a generic boot image into the first 32K of the
cd9660 image.
2008-05-10 19:00:07 +00:00
christos
535dee52f6 Fix deep directory move rock-ridge extension. Code was there, but it had
bit-rotted.
2007-04-07 17:14:58 +00:00
hubertf
889da1779b * Don't include headers twice
* Remove a few trailing whitespaces
 * Rearrange and join to one #if for some headers

Patch contributed by Slava Semushin <slava.semushin@gmail.com>
in private mail.
2007-01-16 17:32:04 +00:00
christos
9450025adc from Anon Ymous: compile with -Wextra 2006-12-18 21:03:29 +00:00
christos
f6a7372b60 use c99 initializers 2006-10-22 21:09:47 +00:00
dbj
d0c4ff452b implement -x by pruning fsnodes tree before building filesystem rather
than by skipping nodes while building filesystem
2006-10-10 01:55:45 +00:00
dbj
e10e76d4c6 make -t cd9660 obey -x option similarly to ffs 2006-10-08 16:25:18 +00:00
hubertf
924dbbdb7d Fix fix for Coverity CID 2751:
Move an error check to the right place, and instead of blindly insisting on
an argument for all of "no-emul-boot", "no-boot", "hard-disk-boot" and
"boot-load-segment", only require it for the last one, which is the only
one that requires/uses it.

OK'd by Christos
2006-06-01 21:06:37 +00:00
christos
323f38bde6 Coverity CID 2751: Avoid NULL deref. 2006-05-25 00:25:00 +00:00
dyoung
5138e74947 Fix a bug in cd9660_sort_nodes, which tried to insert `next' before
`node' on a tail-queue, when `node' wasn't on the tail-queue.
Sometimes this led to a segfault.  Insert before `cn', since that
is the intention.  Closes PR 32194. Thanks, Jeff Rizzo, for reporting
this bug.
2005-11-30 00:26:11 +00:00
dyoung
933a7c2901 Change cd9660's default verbosity level to 0, quieting it down
considerably.
2005-10-31 23:19:06 +00:00
dyoung
2fa0e02b0b Remove the cd9660_inode hashtable for hard-links support, and re-use
the fsinode for the same purpose, per Luke Mewburn's suggestion on
source-changes@.
2005-10-31 08:29:19 +00:00
dyoung
1da546647c Add hard-link support: keep a hashtable that maps inodes for
regular files on the source filesystem to the offset of the first
data block on the target filesystem.  Don't allocate blocks for a
file a second time (i.e., if it is already present in the hashtable).
Avoid writing the blocks of a file twice (use the FS_WRITTEN flag
in fsinode->flags for this purpose).
2005-10-30 09:27:49 +00:00
dyoung
3c2cee9d4a Bug fix: record the actual number number of 512-byte "virtual"
sectors in the Sector Count field of the Initial/Default Entry in
the "El Torito" Boot Catalog, instead of blithely writing 1 (!!)
into the Sector Count field.  Ditto the Section Entries.

Remove last remnants of cd9660's unsupported boot-load-size option.

Really use cd9660's boot-load-segment argument.

Change the boot images list from a LIST to a TAILQ.

Re-implement CD9660_BLOCKS() with howmany().

Introduce ELTORITO_DPRINTF and some debug messages.

Zero memory malloc'd in the El Torito code.

Revise some debugging outputs.

Insert a new boot-image on the boot-images list after the last
boot-image for the same architecture.  It makes a (trivial) functional
difference.

Miscellaneous cosmetic changes.  Remove useless variable-assignment.
2005-10-30 06:45:46 +00:00
dyoung
f112f0b6d9 Remove invisible whitespace at ends of lines that disrupted my
speedy cursor-movement habits in vi.
2005-10-30 03:10:28 +00:00
dyoung
689c61f61d Overhaul makefs -t cd9660.
Functional: Do not add a missing period or a version number to
            directories, since that doesn't fit the standard (thanks
            Daniel Watt).

            Add RRIP PX records (POSIX meta-information) to '.'
            and '..' entries.  Quiets kernel complaint, when we
            mount a cd9660 filesystem, that there is a missing PX
            entry.

Cosmetic: Reduce height of staircases.  Remove an unused member
          from struct _cd9660node.  Extract a subroutine.  KNF.

          Use a TAILQ macros for lists of both SUSP/RRIP attributes
          and directory entries.

XXX
XXX The new RRIP PX entries are not quite right.
XXX
2005-10-25 02:22:04 +00:00
dyoung
3b0eb50995 Cosmetic: change to a standard idiom, *(x++) --> *x++. Flag some
places needing bounds-checking with XXX.  Fix indendation.
2005-09-11 22:03:48 +00:00
dyoung
62e9fd6510 By default, do not omit the trailing period from ISO9660 filenames
unless given the option '-o omit-trailing-period'.  Also, fix a
logic error so that makefs obeys option '-o omit-trailing-period'
when it is given.
2005-09-11 22:01:44 +00:00