⬢ DragonFlyBSD Kernel Audit
DF-4422 / fix.diff
← back to finding ↓ download raw
--- a/sys/dev/misc/syscons/scvgarndr.c
+++ b/sys/dev/misc/syscons/scvgarndr.c
@@ -786,6 +786,10 @@ draw_pxlcursor_direct(scr_stat *scp, int at, int on, int flip)
 	unsigned char *char_data;
 	vm_offset_t draw_pos;
 
+	if (scp->cursor_base < 0 || scp->cursor_base >= scp->font_height)
+		return;
+
 	line_width = scp->sc->adp->va_line_width;
 	pixel_size = scp->sc->adp->va_info.vi_pixel_size;
 
@@ -838,6 +842,10 @@ draw_pxlcursor_packed(scr_stat *scp, int at, int on, int flip)
 	unsigned char *char_data;
 	vm_offset_t draw_pos;
 
+	if (scp->cursor_base < 0 || scp->cursor_base >= scp->font_height)
+		return;
+
 	line_width = scp->sc->adp->va_line_width;
 
 	draw_pos = VIDEO_MEMORY_POS(scp, at, 8) +
@@ -886,6 +894,10 @@ draw_pxlcursor_planar(scr_stat *scp, int at, int on, int flip)
 	int i;
 	u_char c;
 
+	if (scp->cursor_base < 0 || scp->cursor_base >= scp->font_height)
+		return;
+
 	line_width = scp->sc->adp->va_line_width;
 
 	d = VIDEO_MEMORY_POS(scp, at, 1) +