[PATCH] erofs-utils: dump: avoid SIGSEGV when time cannot be represented
Gao Xiang
hsiangkao at linux.alibaba.com
Wed Sep 24 17:17:46 AEST 2025
Just show the raw time in seconds since the UNIX epoch instead.
Reproducible image (base64-encoded gzipped blob):
H4sICACa02gAA3JlcHJvAGNgGAWjYBSMVPDo4dcHvU4WITpANg+DCgM7VPwFM0INE5L6OzNL
tafaus7ZdHvpkTy+2l3o5rGjCxAAIGsOODIzlDD8/v//P0gEQsKACphkZAG5QgUqFgpka0LZ
4QyMDKpQdgJQPAzKTgWKR0LZWUjsfE4oIydVLzk/JyUtMyfVAEQYgggjEGGMbD/QYoa3jYwM
KUCaA+y6//8ZkeSLK6uyE3NyUovQGaz/YfZgSJHKwBd+YPc5MjHYQvkg94HiK6KjuRHE14OK
GyCFnyGQbQhlGwPDJhjKtgDGnp6eHiJIkPwvxYIwHylpoPmfiQq+RWcwk69dUJcG7hllDHUG
I7oIKEPDRcTe7jqNqesp5bYzYs0ydGCACy4gwJC6xEWZyWxQH2FVgyifQKW3OlL5xMLAAi8/
9EtyC/SBGnQzcxPTU9NT84yMjM0MTAwMTI30wQURhMQo9/7Ayz8OcPnEhWQ+K46yko2RjaEi
saSkyLCCgQFIwvlGEBKpxA3elv8GrIcJXP4xMWgoQ8wARSLY2zgqOkYoZgLTIJYGM3aVo2AU
jIJRMLAAABdVKPsAEAAA
Signed-off-by: Gao Xiang <hsiangkao at linux.alibaba.com>
---
dump/main.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/dump/main.c b/dump/main.c
index 58d489c..f685799 100644
--- a/dump/main.c
+++ b/dump/main.c
@@ -379,6 +379,7 @@ static void erofsdump_show_fileinfo(bool show_extent)
char access_mode_str[] = "rwxrwxrwx";
char timebuf[128] = {0};
unsigned int extent_count = 0;
+ struct tm *tm;
struct erofs_map_blocks map = {
.buf = __EROFS_BUF_INITIALIZER,
.m_la = 0,
@@ -411,8 +412,11 @@ static void erofsdump_show_fileinfo(bool show_extent)
path[sizeof(path) - 1] = '\0';
}
- strftime(timebuf, sizeof(timebuf),
- "%Y-%m-%d %H:%M:%S", localtime((time_t *)&inode.i_mtime));
+ tm = localtime((time_t *)&inode.i_mtime);
+ if (!tm)
+ sprintf(timebuf, "%lld", (s64)inode.i_mtime | 0LL);
+ else
+ strftime(timebuf, sizeof(timebuf), "%Y-%m-%d %H:%M:%S", tm);
access_mode = inode.i_mode & 0777;
for (i = 8; i >= 0; i--)
if (((access_mode >> i) & 1) == 0)
--
2.43.0
More information about the Linux-erofs
mailing list