diff options
author | Theodore Ts'o <tytso@mit.edu> | 2020-10-06 08:29:09 -0400 |
---|---|---|
committer | Theodore Ts'o <tytso@mit.edu> | 2020-10-06 08:29:09 -0400 |
commit | 5b44781e2ae7ded9d3d4e1f7d9802913d9a23217 (patch) | |
tree | 233c2103e36454a804021fb8101c29adb9e751ac | |
parent | 3ab2fd4e23837750eb4f3d1a858b5d0dfa2b379e (diff) | |
download | e2fsprogs-5b44781e2ae7ded9d3d4e1f7d9802913d9a23217.tar.gz |
debugfs: fix parse_uint for 64-bit fields
The logic for handling 64-bit structure elements was reversed, which
caused attempts to set fields like kbytes_written to fail:
% debugfs -w /tmp/foo.img
debugfs 1.45.6 (20-Mar-2020)
debugfs: set_super_value kbytes_written 1024
64-bit field kbytes_written has a second 64-bit field
defined; BUG?!?
https://github.com/tytso/e2fsprogs/issues/36
Signed-off-by: Theodore Ts'o <tytso@mit.edu>
-rw-r--r-- | debugfs/set_fields.c | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/debugfs/set_fields.c b/debugfs/set_fields.c index 5142554df..281f2c5df 100644 --- a/debugfs/set_fields.c +++ b/debugfs/set_fields.c @@ -487,10 +487,7 @@ static errcode_t parse_uint(struct field_set_info *info, char *field, n = num & mask; switch (size) { case 8: - /* Should never get here */ - fprintf(stderr, "64-bit field %s has a second 64-bit field\n" - "defined; BUG?!?\n", info->name); - *u.ptr64 = 0; + *u.ptr64 = n; break; case 4: *u.ptr32 = n; @@ -510,7 +507,10 @@ static errcode_t parse_uint(struct field_set_info *info, char *field, size = 2; switch (size) { case 8: - *u.ptr64 = n; + /* Should never get here */ + fprintf(stderr, "64-bit field %s has a second 64-bit field\n" + "defined; BUG?!?\n", info->name); + *u.ptr64 = 0; break; case 4: *u.ptr32 = n; |