Module Name:    src
Committed By:   skrll
Date:           Tue Mar  2 07:02:06 UTC 2021

Modified Files:
        src/sys/arch/arm/fdt: arm_simplefb.c
        src/sys/dev/fdt: simplefb.c

Log Message:
Sanity check size vs width x height x depth.  Buggy firmware exists.


To generate a diff of this commit:
cvs rdiff -u -r1.8 -r1.9 src/sys/arch/arm/fdt/arm_simplefb.c
cvs rdiff -u -r1.12 -r1.13 src/sys/dev/fdt/simplefb.c

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/arch/arm/fdt/arm_simplefb.c
diff -u src/sys/arch/arm/fdt/arm_simplefb.c:1.8 src/sys/arch/arm/fdt/arm_simplefb.c:1.9
--- src/sys/arch/arm/fdt/arm_simplefb.c:1.8	Wed Jan 27 03:10:19 2021
+++ src/sys/arch/arm/fdt/arm_simplefb.c	Tue Mar  2 07:02:05 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: arm_simplefb.c,v 1.8 2021/01/27 03:10:19 thorpej Exp $ */
+/* $NetBSD: arm_simplefb.c,v 1.9 2021/03/02 07:02:05 skrll Exp $ */
 
 /*-
  * Copyright (c) 2019 The NetBSD Foundation, Inc.
@@ -34,7 +34,7 @@
 #include "opt_vcons.h"
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: arm_simplefb.c,v 1.8 2021/01/27 03:10:19 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: arm_simplefb.c,v 1.9 2021/03/02 07:02:05 skrll Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -237,6 +237,9 @@ arm_simplefb_preattach(void)
 		return;
 	}
 
+	if (size < width * height * depth)
+		return;
+
 	if (bus_space_map(bst, addr, size,
 	    BUS_SPACE_MAP_LINEAR | BUS_SPACE_MAP_PREFETCHABLE, &bsh) != 0)
 		return;

Index: src/sys/dev/fdt/simplefb.c
diff -u src/sys/dev/fdt/simplefb.c:1.12 src/sys/dev/fdt/simplefb.c:1.13
--- src/sys/dev/fdt/simplefb.c:1.12	Wed Jan 27 03:10:21 2021
+++ src/sys/dev/fdt/simplefb.c	Tue Mar  2 07:02:06 2021
@@ -1,4 +1,4 @@
-/* $NetBSD: simplefb.c,v 1.12 2021/01/27 03:10:21 thorpej Exp $ */
+/* $NetBSD: simplefb.c,v 1.13 2021/03/02 07:02:06 skrll Exp $ */
 
 /*-
  * Copyright (c) 2017 Jared McNeill <jmcne...@invisible.ca>
@@ -29,7 +29,7 @@
 #include "opt_wsdisplay_compat.h"
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: simplefb.c,v 1.12 2021/01/27 03:10:21 thorpej Exp $");
+__KERNEL_RCSID(0, "$NetBSD: simplefb.c,v 1.13 2021/03/02 07:02:06 skrll Exp $");
 
 #include <sys/param.h>
 #include <sys/bus.h>
@@ -169,6 +169,11 @@ simplefb_attach_genfb(struct simplefb_so
 		return ENXIO;
 	}
 
+	if (size < width * height * depth) {
+		aprint_error(": incorrect size\n");
+		return ENXIO;
+	}
+
 	/* Device may have been reconfigured. MD code will tell us. */
 	if (prop_dictionary_get_uint64(dict, "simplefb-physaddr", &sfb_addr) &&
 	    sfb_addr != 0) {

Reply via email to