]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
* grub-core/gfxmenu/gui_progress_bar.c (draw_pixmap_bar): Avoid
authorVladimir Serbinenko <phcoder@gmail.com>
Fri, 8 Nov 2013 14:38:58 +0000 (15:38 +0100)
committerVladimir Serbinenko <phcoder@gmail.com>
Fri, 8 Nov 2013 14:38:58 +0000 (15:38 +0100)
division by-zero and senseless negative divisions.

ChangeLog
grub-core/gfxmenu/gui_progress_bar.c

index 7e17a9bc14ae692287d0e49343193c980cead777..f55a01d57257a94e01c1428fa01792236db9cab3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2013-11-08  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       * grub-core/gfxmenu/gui_progress_bar.c (draw_pixmap_bar): Avoid
+       division by-zero and senseless negative divisions.
+
 2013-11-08  Vladimir Serbinenko  <phcoder@gmail.com>
 
        * configure.ac: Use elf_*_fbsd on kfreebsd.
index 588f23f1022b998666b6f4d81210f7e8c284d9cb..605c10997c623f9f42f75fd6626ad9505ea5304f 100644 (file)
@@ -169,8 +169,12 @@ draw_pixmap_bar (grub_gui_progress_bar_t self)
   else
     hlheight -= hl_v_pad;
 
-  barwidth = (tracklen * (self->value - self->start) 
-             / (self->end - self->start));
+  if (self->value <= self->start
+      || self->end <= self->start)
+    barwidth = 0;
+  else
+    barwidth = ((unsigned) (tracklen * (self->value - self->start))
+               / ((unsigned) (self->end - self->start)));
 
   if (barwidth >= hl_h_pad)
     {