summaryrefslogtreecommitdiff
path: root/lib/libc
diff options
context:
space:
mode:
authorDaniel Boulby <daniel.boulby@arm.com>2018-06-22 14:16:03 +0100
committerDaniel Boulby <daniel.boulby@arm.com>2018-09-21 13:14:13 +0100
commita08a2014300a495381cdb8f6d59523bcd5d3b883 (patch)
treeab016b027c303ccbe8001764f824f8980b233f54 /lib/libc
parente52ed092cde21d13533df32eb68629a980d69b4b (diff)
Ensure the flow through switch statements is clear
Ensure case clauses: * Terminate with an unconditional break, return or goto statement. * Use conditional break, return or goto statements as long as the end of the case clause is unreachable; such case clauses must terminate with assert(0) /* Unreachable */ or an unconditional __dead2 function call * Only fallthough when doing otherwise would result in less readable/maintainable code; such case clauses must terminate with a /* Fallthrough */ comment to make it clear this is the case and indicate that a fallthrough is intended. This reduces the chance of bugs appearing due to unintended flow through a switch statement Change-Id: I70fc2d1f4fd679042397dec12fd1982976646168 Signed-off-by: Daniel Boulby <daniel.boulby@arm.com>
Diffstat (limited to 'lib/libc')
-rw-r--r--lib/libc/printf.c1
-rw-r--r--lib/libc/snprintf.c2
2 files changed, 3 insertions, 0 deletions
diff --git a/lib/libc/printf.c b/lib/libc/printf.c
index 4480e94d..d50876d7 100644
--- a/lib/libc/printf.c
+++ b/lib/libc/printf.c
@@ -166,6 +166,7 @@ loop:
padn = (padn * 10) + (ch - '0');
fmt++;
}
+ assert(0); /* Unreachable */
default:
/* Exit on any other format specifier */
return -1;
diff --git a/lib/libc/snprintf.c b/lib/libc/snprintf.c
index 9bc07b2c..66a2fa2f 100644
--- a/lib/libc/snprintf.c
+++ b/lib/libc/snprintf.c
@@ -4,6 +4,7 @@
* SPDX-License-Identifier: BSD-3-Clause
*/
+#include <assert.h>
#include <debug.h>
#include <platform.h>
#include <stdarg.h>
@@ -117,6 +118,7 @@ int snprintf(char *s, size_t n, const char *fmt, ...)
ERROR("snprintf: specifier with ASCII code '%d' not supported.",
*fmt);
plat_panic_handler();
+ assert(0); /* Unreachable */
}
fmt++;
continue;