From f98bb2ddcbfed7033ae93ae8fe98b0540a9fb42f Mon Sep 17 00:00:00 2001 From: Delio Brignoli Date: Sat, 20 Aug 2016 10:51:28 +0200 Subject: py/mpprint: Fail an assertion with unsupported format specifiers. Arguments of an unknown type cannot be skipped and continuing to parse a format string after encountering an unknown format specifier leads to undefined behaviour. This patch helps to find use of unsupported formats. --- py/mpprint.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'py/mpprint.c') diff --git a/py/mpprint.c b/py/mpprint.c index cb49b1227..97ea33ad2 100644 --- a/py/mpprint.c +++ b/py/mpprint.c @@ -537,10 +537,12 @@ int mp_vprintf(const mp_print_t *print, const char *fmt, va_list args) { chrs += mp_print_int(print, arg_value, *fmt == 'd', 10, 'a', flags, fill, width); break; } - // fall through to default case to print unknown format char + assert(!"unsupported fmt char"); } #endif default: + // if it's not %% then it's an unsupported format character + assert(*fmt == '%' || !"unsupported fmt char"); print->print_strn(print->data, fmt, 1); chrs += 1; break; -- cgit v1.2.3