aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHeinrich Schuchardt <xypron.glpk@gmx.de>2020-10-23 13:00:01 +0200
committerTom Rini <trini@konsulko.com>2020-10-27 14:19:45 -0400
commitde7a534a5c42f8972420ba0b14575729585bb5e3 (patch)
treee697664a6bf365e490fe338970972869c7733d8c
parent7c1c342bd08f8036a188d19ffc3a823b1fb48934 (diff)
downloadu-boot-WIP/2020-10-27-further-log-enhancements.zip
u-boot-WIP/2020-10-27-further-log-enhancements.tar.gz
u-boot-WIP/2020-10-27-further-log-enhancements.tar.bz2
log: correct and check array size of log categoriesWIP/2020-10-27-further-log-enhancements
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>
-rw-r--r--common/log.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/common/log.c b/common/log.c
index d22683b..4b6f3fc 100644
--- a/common/log.c
+++ b/common/log.c
@@ -13,7 +13,7 @@
DECLARE_GLOBAL_DATA_PTR;
-static const char *const log_cat_name[LOGC_COUNT - LOGC_NONE] = {
+static const char *const log_cat_name[] = {
"none",
"arch",
"board",
@@ -28,7 +28,10 @@ static const char *const log_cat_name[LOGC_COUNT - LOGC_NONE] = {
"acpi",
};
-static const char *const log_level_name[LOGL_COUNT] = {
+_Static_assert(ARRAY_SIZE(log_cat_name) == LOGC_COUNT - LOGC_NONE,
+ "log_cat_name size");
+
+static const char *const log_level_name[] = {
"EMERG",
"ALERT",
"CRIT",
@@ -41,6 +44,8 @@ static const char *const 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)
{