Commit Graph

170 Commits

Author SHA1 Message Date
Benno Rice
88e2cc9eb5 Replace makefs' hand-rolled unescaping with strunvis
mtree path names and link attributes are encoded, generally using strvis. Newer
versions of mtree will use C-style escapes but previously the accepted form was
octal escapes. makefs' mtree code spots the C-style escapes but fails to deal
with octal escapes correctly.

Remove mtree's escape-decoding code (except for a few instances where it's
needed) and instead pass pathnames and link targets through strunvis prior to
use.

Reviewed by:	marcel
MFC after:	2 weeks
Sponsored by:	Dell EMC Isilon
Differential Revision:	https://reviews.freebsd.org/D12104
2017-08-25 16:10:16 +00:00
Enji Cooper
86cc58dc96 MFhead@r321960 2017-08-02 22:28:12 +00:00
Enji Cooper
d2435d7c28 Require strings(1) with :o_flag_preparer and :o_flag_publisher
strings(1) might not be installed on the system, e.g., if MK_TOOLCHAIN == no

MFC after:	1 week
2017-08-02 20:42:39 +00:00
Enji Cooper
d511b20a69 Add HAS_TESTS to all Makefiles that are currently using the
`SUBDIR.${MK_TESTS}+= tests` idiom.

This is a follow up to r321912.
2017-08-02 08:50:42 +00:00
Enji Cooper
4b330699f8 Convert traditional ${MK_TESTS} conditional idiom for including test
directories to SUBDIR.${MK_TESTS} idiom

This is being done to pave the way for future work (and homogenity) in
^/projects/make-check-sandbox .

No functional change intended.

MFC after:	1 weeks
2017-08-02 08:35:51 +00:00
Ed Maste
0661ef2af2 makefs: add copies of NetBSD makefs msdos source files
We do not treat makefs as contrib code.  Import copies of makefs msdos
files from NetBSD so that we can track our changes to these files.

These are copied from NetBSD, with only a change to use __FBSDID and
$FreeBSD$ instead of __KERNEL_RCSID and $NetBSD$.  A copy of the
original $NetBSD$ tag remains in each source file.

These two files were missed in r320212.  Also remove a stray blank line
added in msdosfs_vfsops.c.

Submitted by:	Siva Mahadevan
Sponsored by:	The FreeBSD Foundation
2017-06-23 18:58:28 +00:00
Ed Maste
237d1b14f2 makefs: add copies of NetBSD makefs msdos source files
We do not treat makefs as contrib code.  Import copies of makefs msdos
files from NetBSD so that we can track our changes to these files.

These are copied from NetBSD, with only a change to use __FBSDID and
$FreeBSD$ instead of __KERNEL_RCSID and $NetBSD$.  A copy of the
original $NetBSD$ tag remains in each source file.

Submitted by:	Siva Mahadevan
Sponsored by:	The FreeBSD Foundation
2017-06-22 02:46:36 +00:00
Alan Somers
6bd94a4679 Fix usr.sbin/makefs/makefs_ffs_tests when /etc/fstab does not exist
dumpfs prints a harmless warning message (via ufs_disk_fillout(3) and
getfsfile(3)), when /etc/fstab does not exist.  We can ignore it.

PR:		220165
Reported by:	gjb
MFC after:	3 weeks
Sponsored by:	Spectra Logic Corp
2017-06-20 19:00:55 +00:00
Ed Maste
83b6064de1 makefs: use C standard memcpy/memset in userland
This file does not exist in NetBSD's makefs, but make the chance for
consistency with memcpy/memset used in the rest of makefs.

Sponsored by:	The FreeBSD Foundation
2017-06-12 13:49:57 +00:00
Ed Maste
423c834342 makefs: rename variable for NetBSD diff reduction 2017-06-03 14:28:19 +00:00
Ed Maste
5d7af8bb02 makefs: free buf in case of error
CID:		270190
Submitted by:	Siva Mahadevan <smahadevan@freebsdfoundation.org>
Reported by:	Coverity
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D11011
2017-05-31 16:28:29 +00:00
Ed Maste
b79f050a88 makefs: add -O (offset) option
NetBSD revs:
ffs.c		1.60
makefs.8	1.44
makefs.c	1.48
makefs.h	1.33
ffs/buf.c	1.20
ffs/mkfs.c	1.27

Obtained from:	NetBSD
Relnotes:	Yes
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D10780
2017-05-26 15:49:20 +00:00
Ed Maste
6160cc37f4 makefs: make buf generic
it has nothing to do with ffs and will eventually be moved.
gc sectorsize.

This is a corrected version of r317744.

NetBSD versions:
ffs.c		1.58
ffs/buf.c	1.14 1.18
ffs/buf.h	1.8

Submitted by:	Siva Mahadevan <smahadevan@freebsdfoundation.org>
Obtained from:	NetBSD
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D10803
2017-05-25 21:41:06 +00:00
Ed Maste
7092a907e5 makefs: drop WARNS back to 2
GCC warns about additional signed comparision issues compared to Clang.
Drop WARNS for now until the underlying issue is fixed.
2017-05-18 17:55:33 +00:00
Emmanuel Vadot
d91e611798 makefs: Add soft-updates option
Add the ffs option to enable soft-updates.
The option is only processed is ufs2 has been selected.

Reviewed by:	emaste, bapt (earlier version), allanjude (earlier version)
Sponsored by:	Gandi.net
Differential Revision:	https://reviews.freebsd.org/D10773
2017-05-18 14:19:06 +00:00
Ed Maste
3afe6a68e0 makefs: clean up signedness warnings and bump WARNS to 3
Reviewed by:	kib
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D10650
2017-05-18 14:05:29 +00:00
Enji Cooper
ca7f276c93 Restore sectorsize global to unbreak makefs after r317744
This also unbreaks the fstyp tests.

Reported by:	Alastair Hogge <agh@fastmail.fm>, Jenkins
Sponsored by:	Dell EMC Isilon
2017-05-08 18:42:38 +00:00
Ed Maste
c5a0915477 makefs: further size_t warning cleanup (missing from r317944)
Sponsored by:	The FreeBSD Foundation
2017-05-08 16:57:33 +00:00
Ed Maste
243a297a95 makefs: cast snprintf return value to size_t to clear warning
Sponsored by:	The FreeBSD Foundation
2017-05-08 16:34:39 +00:00
Ed Maste
856d87c5af makefs: use size_t as appropriate to clean up warnings
Sponsored by:	The FreeBSD Foundation
2017-05-08 13:09:27 +00:00
Ed Maste
9e96f90b50 makefs: clean up warnings
- make functions and variables static where appropriate
- use const char * where appropriate
- remove unused variables

Sponsored by:	The FreeBSD Foundation
2017-05-03 14:57:04 +00:00
Ed Maste
15fc093acc makefs: make buf generic
it has nothing to do with ffs and will eventually be moved.
gc sectorsize.

NetBSD versions:
ffs.c		1.58
ffs/buf.c	1.14 1.18
ffs/buf.h	1.8

Obtained from:	NetBSD
Sponsored by:	The FreeBSD Foundation
2017-05-03 14:21:18 +00:00
Ed Maste
e651540a68 makefs: remove unused cd9660_defaults_set global
Sponsored by:	The FreeBSD Foundation
2017-05-01 00:53:07 +00:00
Ed Maste
37ca9f42fd makefs: Sync with NetBSD (fix unused variable warnings)
NetBSD revs:
cd9660.c		1.45
cd9660/cd9660_write.c	1.17

Obtained from:	NetBSD
2017-04-07 02:31:55 +00:00
Brooks Davis
08069ae688 Point out that -F probably does not do what the user expects.
Users attempting to create images from mtree METALOG files created by
installworld often use -F when they should be passing the METALOG file
in place of a directory. This is often produces difficult to debug
error reports.

Reviewed by:	emaste
MFC after:	1 week
Sponsored by:	DARPA, AFRL
Differential Revision:	https://reviews.freebsd.org/D10038
2017-04-06 23:35:10 +00:00
Ed Maste
5f5598b130 makefs: use emalloc and friends
The emalloc set of error-checking memory allocation routines were added
to libnetbsd in r316572. Use them in makefs to reduce differences with
NetBSD.

NetBSD revs:
cd9660.c			1.39
ffs.c				1.56
makefs.c			1.42
walk.c				1.27
cd9660/cd9660_archimedes.c	1.2
cd9660/cd9660_eltorito.c	1.20
cd9660/cd9660_write.c		1.16
cd9660/iso9660_rrip.c		1.12
ffs/buf.c			1.17
ffs/mkfs.c			1.26

Obtained from:	NetBSD
2017-04-06 16:18:42 +00:00
Ed Maste
07e89ad740 makefs: zero memory
NetBSD revs:
ffs/buf.c	1.14

Obtained from:	NetBSD
2017-04-06 00:07:11 +00:00
Ed Maste
cfa6282553 makefs: sync with NetBSD
This is a collection of minor changes as diff reduction against NetBSD.

NetBSD revs:
cd9660.c		1.39
cd9660.h		1.19
makefs.c		1.34

Obtained from:	NetBSD
Sponsored by:	The FreeBSD Foundation
2017-03-29 20:49:41 +00:00
Ed Maste
10d64b7788 makefs: free specfile structure once it has been applied
NetBSD revs:
walk.c		1.21

Obtained from:	NetBSD
Sponsored by:	The FreeBSD Foundation
2017-03-29 15:45:19 +00:00
Ed Maste
6c5f7c4725 makefs: sort roundup with the other off_t members in fsinfo_t
MFC after:	1 week
Sponsored by:	The FreeBSD Foundation
2017-03-27 20:24:18 +00:00
Brad Davis
f43b687262 Check to see if the kernel has cd9660 before running tests that require it
Approved by:	ngie
MFC after:	1 week
Differential Revision:	https://reviews.freebsd.org/D10096
2017-03-27 15:20:31 +00:00
Ed Maste
870952f562 makefs: improve error messages
- remove \n
- use __func__
- err adds the error string itself

NetBSD revs:
cd9660.c	1.48 1.49
ffs/buf.c	1.21
ffs/mkfs.c	1.27

Obtained from:	NetBSD
2017-03-15 18:14:54 +00:00
Ed Maste
538ab9e64e makefs: don't print pointers in debugging messages
NetBSD revisions:
ffs/buf.c	1.14

Obtained from:	NetBSD
2017-03-15 17:26:19 +00:00
Ed Maste
babca35cb2 makefs: use 'm' for cd9660 allow-multidot, per NetBSD
NetBSD revisions:
cd9660.c	1.55

Obtained from:	NetBSD
2017-03-15 16:16:30 +00:00
Ed Maste
776c68249b makefs: sync option parsing with NetBSD
- add support for parsing different types; not just int
- homogenize option parsing
- fix single letter parsing
- remove duplicated code

NetBSD revisions:
cd9660.c        1.36 1.37 1.38 1.41 1.42 1.43
ffs.c           1.50 1.51 1.52 1.53 1.56 1.57
makefs.c        1.36 1.37 1.38 1.39 1.40 1.42 1.43 1.44 1.46
makefs.h        1.28 1.29 1.31 1.32

Obtained from:	NetBSD
Sponsored by:	The FreeBSD Foundation
2017-03-15 13:34:51 +00:00
Ed Maste
f490b9b3bf makefs: sync -T timestamp with NetBSD
NetBSD revision:
makefs.c	1.51

Obtained from:	NetBSD
2017-03-14 18:08:32 +00:00
Ed Maste
f7d3963023 makefs: remove unused variable
NetBSD revisions:
mkfs.c 1.32

Obtained from:	NetBSD
2017-03-14 16:40:18 +00:00
Ed Maste
8c71aecd10 makefs: remove clause 3 & 4 from Manuel Bouyer license
ffs_bswap.c 1.34
ufs_bswap.h 1.34

Obtained from:	NetBSD
Sponsored by:	The FreeBSD Foundation
2017-03-02 04:11:18 +00:00
Ed Maste
50c088a006 makefs: remove archaic __P prototypes from ufs_bswap.h
This reduces differences with NetBSD

Sponsored by:	The FreeBSD Foundation
2017-03-02 04:08:14 +00:00
Ed Maste
1631d42aa6 makefs: eliminate global cd9660 structure
For diff reduction with NetBSD

NetBSD file versions:
cd9660.c 1.39
cd9660.h 1.19
cd9660/cd9660_debug.c 1.12
cd9660/cd9660_eltorito.c 1.20
cd9660/cd9660_write.c 1.16
cd9660/iso9660_rrip.c 1.12
cd9660/iso9660_rrip.h 1.6

Reviewed by:	ngie
Obtained from:	NetBSD
MFC after:	1 month
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D9627
2017-02-23 02:28:08 +00:00
Ed Maste
39cbdda0d1 makefs: use a macro to simplify per-fs function declarations
makefs.h 1.28

Obtained from:	NetBSD
2017-02-16 03:12:47 +00:00
Ed Maste
1dc349ab95 prefix UFS symbols with UFS_ to reduce namespace pollution
Specifically:
  ROOTINO -> UFS_ROOTINO
  WINO -> UFS_WINO
  NXADDR -> UFS_NXADDR
  NDADDR -> UFS_NDADDR
  NIADDR -> UFS_NIADDR
  MAXSYMLINKLEN_UFS[12] -> UFS[12]_MAXSYMLINKLEN (for consistency)

Also prefix ext2's and nandfs's NDADDR and NIADDR with EXT2_ and NANDFS_

Reviewed by:	kib, mckusick
Obtained from:	NetBSD
MFC after:	1 month
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D9536
2017-02-15 19:50:26 +00:00
Ed Maste
78b11a5903 makefs: make the buffer functions look exactly like the kernel ones
From NetBSD christos Sat Jan 26 00:19:39 2013 +0000

make the buffer functions look exactly like the kernel ones and add other
cruft to make the kernel files compile.

ffs.c 1.54
ffs/buf.c 1.13
ffs/buf.h 1.3
ffs/ffs_alloc.c 1.21
ffs/ffs_balloc.c 1.15

Reviewed by:	marcel, ngie
Obtained from:	NetBSD
Sponsored by:	The FreeBSD Foundation
Differential Revision:	https://reviews.freebsd.org/D8404
2017-02-11 02:33:48 +00:00
Sevan Janiyan
a7b3f36393 Fix null dereference when running out of nodes during rename.
PR:		212370
Submitted by:	Sascha Wildner <swildner AT gmail>
Reviewed by:	bcr (mentor)
Approved by:	bapt
Obtained from:	NetBSD
MFC after:	2 weeks
Differential Revision:	https://reviews.freebsd.org/D8643
2016-11-26 13:26:29 +00:00
Marcel Moolenaar
4ad8d73326 Assign a random number to di_gen (for FFS), instead of extracting it
from struct stat.  We don't necessarily have permissions to see the
generation number and the host OS may not have st_gen in struct stat
anyway.  Since the kernel assigns random numbers, there's nothing
meaningful about the generation that requires us to preserve it when
the file system image is created.  With this change, all generation
numbers come from random() and that makes it easier to add support
for reproducible builds at some time in the future (i.e. by adding
an argument to makefs that changes the behaviour of random() so that
it always returns 0 or some predictable sequence).

Differential Revision:	https://reviews.freebsd.org/D8418
2016-11-05 16:23:33 +00:00
Marcel Moolenaar
5d71efbecd Be more precise when including headers so that we're less likely to
depend on namespace pollution and as such become more portable. This
means including headers like <sys/types.h> or <stdlib.h>, but also
making sure we include system/host headers before local headers.

While here: define ENOATTR as ENOMSG in mtree.c. There is no ENOATTR
on Linux.

With this, makefs is ready for compilation on macOS and Linux.
2016-10-25 16:29:15 +00:00
Marcel Moolenaar
46783b12e3 Allow building makefs(8) from another Makefile (such as one in
a seperate directory hierarchy used to build tools). This boils
down to replacing the use of ${.CURDIR} with either ${SRCDIR}
or ${SRCTOP}. SRCDIR is defined as the directory in which the
Makefile lives that bmake(1) is currently reading. Use SRCTOP
when reaching outside of makefs's directory.
2016-10-25 16:21:38 +00:00
Ed Maste
71cc9a9f0e makefs: diff reduction with NetBSD
Obtained from:	NetBSD usr.sbin/makefs/cd9660.c 1.33
2016-10-07 19:12:15 +00:00
Ed Maste
881e506b36 makefs: sync NetBSD IDs with upstream for changes that we already have
May 22 21:51:39 2011 +0000 (christos):

    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.

makefs.8 1.33

Tue Aug 23 17:09:11 2011 +0000 (christos):

    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

cd9660.c 1.32

Sun Oct 9 21:33:43 2011 +0000 (christos):

    add support for setting the ufs label. (Nathan Whitehorn)

ffs.c 1.45
ffs.h 1.2
mkfs.c 1.22
makefs.8 1.37

Obtained from:	NetBSD
2016-07-19 18:40:54 +00:00
Ed Maste
298d081c1b makefs: reorder 'usage' alphabetically
From NetBSD, Mon Aug 15 14:45:01 2011 +0000 (wiz)

    Re-order `usage' alphabetically;
    rename option arguments in the manpage's `SYNOPSIS' section to
    match those from `usage' (not the other way around; the `usage'-line
    (and other parts of makefs.c) contain the correct names);
    minor punctuation improvements.

    From Snader_LB.

makefs.8 1.36
makefs.c 1.30

Obtained from:	NetBSD
2016-07-19 18:15:22 +00:00