diff options
author | pluknet <pluknet@FreeBSD.org> | 2011-02-25 13:59:59 +0000 |
---|---|---|
committer | pluknet <pluknet@FreeBSD.org> | 2011-02-25 13:59:59 +0000 |
commit | 7d4c7b1304581c3271a1ded2c9595ec5df95f8eb (patch) | |
tree | 269dae574467cab5275474f391bdf2cf0ef4be0e | |
parent | b8896acc716d6a673421b1d7e948e900499b5f1d (diff) | |
download | FreeBSD-src-7d4c7b1304581c3271a1ded2c9595ec5df95f8eb.zip FreeBSD-src-7d4c7b1304581c3271a1ded2c9595ec5df95f8eb.tar.gz |
Fix division by zero, causing floating point exception in a drive progress
command.
It was possible to read a value of zero from a busy controller used
as the divisor to calculate the remaining rebuild time.
Reported by: Pavel Udovenko <udovenko att nic.ru>
Discussed with: jhb
Approved by: kib (mentor)
MFC after: 1 week
-rw-r--r-- | usr.sbin/mfiutil/mfi_cmd.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/usr.sbin/mfiutil/mfi_cmd.c b/usr.sbin/mfiutil/mfi_cmd.c index 07fe148..7fedfb6 100644 --- a/usr.sbin/mfiutil/mfi_cmd.c +++ b/usr.sbin/mfiutil/mfi_cmd.c @@ -316,7 +316,7 @@ mfi_display_progress(const char *label, struct mfi_progress *prog) printf("%s: %.2f%% complete, after %ds", label, (float)prog->progress * 100 / 0xffff, prog->elapsed_seconds); - if (prog->elapsed_seconds > 10) { + if (prog->progress != 0 && prog->elapsed_seconds > 10) { printf(" finished in "); seconds = (0x10000 * (uint32_t)prog->elapsed_seconds) / prog->progress - prog->elapsed_seconds; |