When recursively dumping the content of an ext2 filesystem where extended attribute value conflicts with key using rdump / /tmp/out, debugfs get's in an endless loop.
This is due to the fact that we only break out of the while(1) loop if the 'got' value is 0, which never happens when an error is encountered.
The applied fix mimics what happens when retval is non-zero and returns.
This can be tested with an existing test sample from e2fsprogs (see tests/f_ea_value_crash/image.gz).
Behavior prior to this patch:
$ mkdir -p /tmp/out
$ gunzip tests/f_ea_value_crash/image.gz
$ ./debugfs/debugfs -R 'rdump / /tmp/out' tests/f_ea_value_crash/image
debugfs 1.47.0 (5-Feb-2023)
rdump: Extended attribute has an invalid value offset while reading ext2 file
rdump: Extended attribute has an invalid value offset while reading ext2 file
rdump: Extended attribute has an invalid value offset while reading ext2 file
rdump: Extended attribute has an invalid value offset while reading ext2 file
--endless loop here--
When recursively dumping the content of an ext2 filesystem where extended attribute value conflicts with key using
rdump / /tmp/out
, debugfs get's in an endless loop.This is due to the fact that we only break out of the while(1) loop if the 'got' value is 0, which never happens when an error is encountered.
The applied fix mimics what happens when retval is non-zero and returns.
This can be tested with an existing test sample from e2fsprogs (see
tests/f_ea_value_crash/image.gz
).Behavior prior to this patch: