containers / composefs

The reliability of disk images, the flexibility of files
Other
462 stars 37 forks source link

More validation #319

Closed cgwalters closed 3 months ago

cgwalters commented 3 months ago

mkcomposefs: Fail on an empty symlink target

This one previously ended up with a NULL pointer deference in the bowels of the EROFS generation.

Signed-off-by: Colin Walters walters@verbum.org


mkcomposefs: Reject . and .. in paths

There's no good reason for us to support this; we should expect paths to be canonicalized. In theory we could handle this, but I am doubtful anyone actually relies on it.

In EROFS these are supposed to be "hard links" to the relevant directories; the EROFS generation adds them if they don't exist. I tried to do stronger validation at the lcfs_node_* level but that is trickier.

Let's just reject at the dump file for now.

Signed-off-by: Colin Walters walters@verbum.org


tests: Add a test case that directories can't be hardlinked

Hooray! We were actually validating this already. Just another corner case I thought of.

Signed-off-by: Colin Walters walters@verbum.org


writer: Also check for dir hardlinks when canonicalizing tree

While we have a check in mkcomposefs.c, let's also have one at the C API level because we want to guard against misuse/attack from something directly operating on that API.

Signed-off-by: Colin Walters walters@verbum.org


rust/dumpfile: More validation

Signed-off-by: Colin Walters walters@verbum.org