aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Biggers <ebiggers@google.com>2023-03-23 00:44:21 +0000
committerEric Biggers <ebiggers@google.com>2023-03-23 00:44:21 +0000
commit0749f83a2cf4c134a2403701ab78388500e53f76 (patch)
treeba46d0f7450097da884dad6df03666cd2cf6fa4b
parent1e498908c6ac13b4d5ec0117f4ddcd577aac607e (diff)
downloade2fsprogs-0749f83a2cf4c134a2403701ab78388500e53f76.tar.gz
ext2simg: fix same_file() to check st_dev
File identity is determined by the combination of st_dev and st_ino, not by st_ino alone. This fixes a bug where ext2simg would needlessly make a copy of all the data when the input and output files happened to have the same st_ino. Fixes: db6f320912cf ("AOSP: android: add the ext2simg tool") Change-Id: I94e4bf57d9f91b31e5438768805e9f10bec3411d Signed-off-by: Eric Biggers <ebiggers@google.com>
-rw-r--r--contrib/android/ext2simg.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/contrib/android/ext2simg.c b/contrib/android/ext2simg.c
index 9ef54cff..1bc23080 100644
--- a/contrib/android/ext2simg.c
+++ b/contrib/android/ext2simg.c
@@ -189,7 +189,7 @@ static bool same_file(const char *in, const char *out)
ext2fs_fatal(errno, "stat %s\n", in);
if (lstat(out, &st2) == -1)
ext2fs_fatal(errno, "stat %s\n", out);
- return st1.st_ino == st2.st_ino;
+ return st1.st_dev == st2.st_dev && st1.st_ino == st2.st_ino;
}
int main(int argc, char *argv[])