aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTheodore Ts'o <tytso@mit.edu>2020-10-06 08:29:09 -0400
committerTheodore Ts'o <tytso@mit.edu>2020-10-06 08:29:09 -0400
commit5b44781e2ae7ded9d3d4e1f7d9802913d9a23217 (patch)
tree233c2103e36454a804021fb8101c29adb9e751ac
parent3ab2fd4e23837750eb4f3d1a858b5d0dfa2b379e (diff)
downloade2fsprogs-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.c10
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;