]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
more: fix floating point exception core dump
authorSami Kerola <kerolasa@iki.fi>
Wed, 19 May 2021 19:23:48 +0000 (20:23 +0100)
committerSami Kerola <kerolasa@iki.fi>
Wed, 19 May 2021 19:23:48 +0000 (20:23 +0100)
Make the code avoid divided by zero.  This can happen when file has content
but is zero in size.  Such files can be found from procfs, possibly some
other pseudo-filesystems.  To reproduce the issue run the following.

    $ more /proc/crypto
    ...
    Floating point exception (core dumped)

Signed-off-by: Sami Kerola <kerolasa@iki.fi>
text-utils/more.c

index b61b37a86466a5cfa6d4b208ea48e9cb941fbd12..ee42dffb9bc32a2e650ebd0858fb686b10899a33 100644 (file)
@@ -727,7 +727,7 @@ static void output_prompt(struct more_control *ctl, char *filename)
                ctl->prompt_len += printf(_("--More--"));
                if (filename != NULL) {
                        ctl->prompt_len += printf(_("(Next file: %s)"), filename);
-               } else if (!ctl->no_tty_in) {
+               } else if (!ctl->no_tty_in && 0 < ctl->file_size) {
                        ctl->prompt_len +=
                            printf("(%d%%)",
                                   (int)((ctl->file_position * 100) / ctl->file_size));