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.
This commit is contained in:
Delio Brignoli
2016-08-20 10:51:28 +02:00
committed by Damien George
parent ce1c786297
commit f98bb2ddcb
3 changed files with 3 additions and 4 deletions

View File

@@ -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;