[PATCH] scripts: kconfig: Fix potential NULL pointer dereference in

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The function `prop_get_symbol` may return NULL, which was not checked
before dereferencing the pointer in `menu_finalize`. This could lead
to undefined behavior or crashes.

This commit adds a NULL check before accessing `es->rev_dep.expr` and
`es->implied.expr`. If `es` is NULL, a warning is logged, and the
operation is skipped.

Triggers found by static analyzer Svace.

Signed-off-by: Anton Moryakov <ant.v.moryakov@xxxxxxxxx>

---
 scripts/kconfig/menu.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/scripts/kconfig/menu.c b/scripts/kconfig/menu.c
index 0fe7f3255a..3fb3ab4637 100644
--- a/scripts/kconfig/menu.c
+++ b/scripts/kconfig/menu.c
@@ -400,12 +400,18 @@ void menu_finalize(struct menu *parent)
 				 */
 				if (prop->type == P_SELECT) {
 					struct symbol *es = prop_get_symbol(prop);
-					es->rev_dep.expr = expr_alloc_or(es->rev_dep.expr,
-							expr_alloc_and(expr_alloc_symbol(menu->sym), expr_copy(dep)));
+					if (es) {
+						es->rev_dep.expr = expr_alloc_or(es->rev_dep.expr,
+								expr_alloc_and(expr_alloc_symbol(menu->sym), expr_copy(dep)));
+					} else
+						menu_warn(menu, "select property has no symbol");
 				} else if (prop->type == P_IMPLY) {
 					struct symbol *es = prop_get_symbol(prop);
-					es->implied.expr = expr_alloc_or(es->implied.expr,
-							expr_alloc_and(expr_alloc_symbol(menu->sym), expr_copy(dep)));
+					if (es) {
+						es->implied.expr = expr_alloc_or(es->implied.expr,
+								expr_alloc_and(expr_alloc_symbol(menu->sym), expr_copy(dep)));
+					} else
+						menu_warn(menu, "imply property has no symbol");
 				}
 			}
 		}
-- 
2.30.2





[Index of Archives]     [Linux&nblp;USB Development]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite Secrets]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux