]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
log: correct and check array size of log categories
authorHeinrich Schuchardt <xypron.glpk@gmx.de>
Fri, 23 Oct 2020 11:00:01 +0000 (13:00 +0200)
committerTom Rini <trini@konsulko.com>
Tue, 27 Oct 2020 21:04:15 +0000 (17:04 -0400)
The log command has led to NULL dereferences if an unknown category name
name was used due to missing entries in the list of category names.

Add compile time checks for the array sizes of log_cat_name and
log_lvl_name to avoid future mishaps.

Signed-off-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
common/log.c

index d830883825d7874a152dc50bf5cebce5eefec5e2..9f98e9aff8b4bcde3e08a271aaf7644318ee11ca 100644 (file)
@@ -13,7 +13,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-static const char *log_cat_name[LOGC_COUNT - LOGC_NONE] = {
+static const char *log_cat_name[] = {
        "none",
        "arch",
        "board",
@@ -28,7 +28,10 @@ static const char *log_cat_name[LOGC_COUNT - LOGC_NONE] = {
        "acpi",
 };
 
-static const char *log_level_name[LOGL_COUNT] = {
+_Static_assert(ARRAY_SIZE(log_cat_name) == LOGC_COUNT - LOGC_NONE,
+              "log_cat_name size");
+
+static const char *log_level_name[] = {
        "EMERG",
        "ALERT",
        "CRIT",
@@ -41,6 +44,9 @@ static const char *log_level_name[LOGL_COUNT] = {
        "IO",
 };
 
+_Static_assert(ARRAY_SIZE(log_level_name) == LOGL_COUNT, "log_level_name size");
+
+/* All error responses MUST begin with '<' */
 const char *log_get_cat_name(enum log_category_t cat)
 {
        const char *name;