diff --git a/ChangeLog b/ChangeLog index 7e17a9bc1..f55a01d57 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2013-11-08 Vladimir Serbinenko + + * grub-core/gfxmenu/gui_progress_bar.c (draw_pixmap_bar): Avoid + division by-zero and senseless negative divisions. + 2013-11-08 Vladimir Serbinenko * configure.ac: Use elf_*_fbsd on kfreebsd. diff --git a/grub-core/gfxmenu/gui_progress_bar.c b/grub-core/gfxmenu/gui_progress_bar.c index 588f23f10..605c10997 100644 --- a/grub-core/gfxmenu/gui_progress_bar.c +++ b/grub-core/gfxmenu/gui_progress_bar.c @@ -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) {