[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