From 176b3376113180ab38fe1c43e2947d358ff041fe Mon Sep 17 00:00:00 2001 From: Jeff Epler Date: Mon, 28 Sep 2020 18:59:57 -0500 Subject: rgbmatrix: validate width= constructor parameter In #3482, @cwalther noted that, hypothetically, a zero byte allocation could be made in the RGBMatrix constructor. Ensure that width is positive. Height was already checked against the number of RGB pins if it was specified, so zero is ruled out there as well. --- shared-bindings/rgbmatrix/RGBMatrix.c | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'shared-bindings') diff --git a/shared-bindings/rgbmatrix/RGBMatrix.c b/shared-bindings/rgbmatrix/RGBMatrix.c index e4683af92..6a99e1f3d 100644 --- a/shared-bindings/rgbmatrix/RGBMatrix.c +++ b/shared-bindings/rgbmatrix/RGBMatrix.c @@ -210,6 +210,10 @@ STATIC mp_obj_t rgbmatrix_rgbmatrix_make_new(const mp_obj_type_t *type, size_t n } } + if (args[ARG_width] <= 0) { + mp_raise_ValueError(translate("width must be greater than zero")); + } + preflight_pins_or_throw(clock_pin, rgb_pins, rgb_count, true); mp_obj_t framebuffer = args[ARG_framebuffer].u_obj; -- cgit v1.2.3