File hexedit-Prevent-division-by-zero-on-empty-files.patch of Package hexedit
From 41981645134d201151f1cea9fd964d892166e866 Mon Sep 17 00:00:00 2001
From: Tobias Stoeckmann <tobias@stoeckmann.org>
Date: Sun, 4 Oct 2020 20:18:00 +0200
Subject: [PATCH] Prevent division by zero on empty files.
Git-commit: 41981645134d201151f1cea9fd964d892166e866
Upstream: accepted (expected in 1.15.1)
Hexedit crashes with a floating point exception when an empty file is
opened. This was introduced with percentage view in status line and
released with version 1.5.
How to reproduce:
$ touch empty
$ hexedit empty
---
display.c | 6 ++++--
1 file changed, 4 insertions(+), 2 deletions(-)
diff --git a/display.c b/display.c
index 9b4df91..a012b27 100644
--- a/display.c
+++ b/display.c
@@ -182,6 +182,7 @@ void exitCurses(void)
void display(void)
{
+ long long fsize;
int i;
for (i = 0; i < nbBytes; i += lineLength) {
@@ -204,8 +205,9 @@ void display(void)
else if (edited) i = '*';
else i = '-';
printw("-%c%c %s --0x%llX", i, i, baseName, (long long) base + cursor);
- if (MAX(fileSize, lastEditedLoc)) printw("/0x%llX", (long long) getfilesize());
- printw("--%i%%", 100 * (base + cursor + getfilesize()/200) / getfilesize() );
+ fsize = getfilesize();
+ if (MAX(fileSize, lastEditedLoc)) printw("/0x%llX", fsize);
+ printw("--%i%%", fsize == 0 ? 0 : 100 * (base + cursor + fsize/200) / fsize );
if (mode == bySector) printw("--sector %lld", (long long) ((base + cursor) / SECTOR_SIZE));
move(cursor / lineLength, computeCursorXCurrentPos());
--
2.29.2