提交 f97ca2c8 编写于 作者: A Arvind Sankar 提交者: Ard Biesheuvel

efi/printf: Abort on invalid format

If we get an invalid conversion specifier, bail out instead of trying to
fix it up. The format string likely has a typo or assumed we support
something that we don't, in either case the remaining arguments won't
match up with the remaining format string.
Signed-off-by: NArvind Sankar <nivedita@alum.mit.edu>
Link: https://lore.kernel.org/r/20200518190716.751506-16-nivedita@alum.mit.eduSigned-off-by: NArd Biesheuvel <ardb@kernel.org>
上级 6c4bcd8a
......@@ -359,12 +359,13 @@ int vsprintf(char *buf, const char *fmt, va_list ap)
break;
default:
*str++ = '%';
if (*fmt)
*str++ = *fmt;
else
--fmt;
continue;
/*
* Bail out if the conversion specifier is invalid.
* There's probably a typo in the format string and the
* remaining specifiers are unlikely to match up with
* the arguments.
*/
goto fail;
}
if (*fmt == 'p') {
num = (unsigned long)va_arg(args, void *);
......@@ -434,6 +435,7 @@ int vsprintf(char *buf, const char *fmt, va_list ap)
while (field_width-- > 0)
*str++ = ' ';
}
fail:
*str = '\0';
va_end(args);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册