Due to this commit which compacted the fuse2fs boolean options from integers to bytes, fuse2fs boolean options now stomp on each other. This is because the libfuse fuse_opt_parse() functions assumes they are integers, so options that are earlier in the structure can overwrite the next few options for 32-bit ints and the next 7 for 64-bit ints. I noticed this first because the norecovery option was being ignored when fakeroot followed it. Switching the order to fakeroot,norecovery did not show the bug.
I was testing on x86_64 which is little endian. Presumably any big endian architecture would be clearing its own option and some of the next, and setting the option 3 or 7 bytes later .
Due to this commit which compacted the fuse2fs boolean options from integers to bytes, fuse2fs boolean options now stomp on each other. This is because the libfuse
fuse_opt_parse()functions assumes they are integers, so options that are earlier in the structure can overwrite the next few options for 32-bit ints and the next 7 for 64-bit ints. I noticed this first because thenorecoveryoption was being ignored whenfakerootfollowed it. Switching the order tofakeroot,norecoverydid not show the bug.I was testing on x86_64 which is little endian. Presumably any big endian architecture would be clearing its own option and some of the next, and setting the option 3 or 7 bytes later .