From bba5c14933274d47c88140106de13b1ce9391b01 Mon Sep 17 00:00:00 2001
From: Joel Challis <git@zvecr.com>
Date: Tue, 5 Dec 2023 13:32:07 +0000
Subject: [PATCH] Avoid exceptions when layouts contain OOB matrix values
 (#22609)

---
 lib/python/qmk/cli/generate/keyboard_c.py | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/lib/python/qmk/cli/generate/keyboard_c.py b/lib/python/qmk/cli/generate/keyboard_c.py
index f8a2372cf3..f010341613 100755
--- a/lib/python/qmk/cli/generate/keyboard_c.py
+++ b/lib/python/qmk/cli/generate/keyboard_c.py
@@ -64,12 +64,15 @@ def _gen_matrix_mask(info_data):
     rows = info_data['matrix_size']['rows']
 
     # Default mask to everything disabled
-    mask = [['0'] * cols for i in range(rows)]
+    mask = [['0'] * cols for _ in range(rows)]
 
     # Mirror layout macros squashed on top of each other
-    for layout_data in info_data['layouts'].values():
+    for layout_name, layout_data in info_data['layouts'].items():
         for key_data in layout_data['layout']:
             row, col = key_data['matrix']
+            if row >= rows or col >= cols:
+                cli.log.error(f'Skipping matrix_mask due to {layout_name} containing invalid matrix values')
+                return []
             mask[row][col] = '1'
 
     lines = []