mirror of
https://codeberg.org/landley/toybox.git
synced 2026-01-26 06:07:55 +00:00
Fix missing error check for short patterns, and add tests.
Reported by Anton Kling.
This commit is contained in:
parent
b72880d6dc
commit
70f64e5a43
@ -87,3 +87,8 @@ testcmd "%b \e" "'%b' '\\e' | xxd -p" "1b\n" "" ""
|
||||
testcmd "\e" "'\\e' | xxd -p" "1b\n" "" ""
|
||||
|
||||
testcmd '\0 in %b' '%b ab\\x07\\0x07 | xxd -p' '61620700783037\n' '' ''
|
||||
|
||||
testcmd 'short err1' '% 2>/dev/null || echo yes' 'yes\n' '' ''
|
||||
testcmd 'short err2' '"%*" 2>/dev/null || echo yes' 'yes\n' '' ''
|
||||
testcmd 'short err3' '"%*." 2>/dev/null || echo yes' 'yes\n' "" ""
|
||||
testcmd 'short err4' '"%*.123" 2>/dev/null || echo yes' 'yes\n' "" ""
|
||||
|
||||
@ -97,7 +97,7 @@ void printf_main(void)
|
||||
|
||||
// Parse width.precision between % and type indicator.
|
||||
*to++ = '%';
|
||||
while (strchr("-+# '0", *f) && (to-toybuf)<10) *to++ = *f++;
|
||||
while (*f && strchr("-+# '0", *f) && (to-toybuf)<10) *to++ = *f++;
|
||||
for (;;) {
|
||||
if (chrstart(&f, '*')) {
|
||||
if (*arg) wp[i] = atolx(*arg++);
|
||||
@ -111,6 +111,7 @@ void printf_main(void)
|
||||
aa = *arg ? *arg++ : "";
|
||||
|
||||
// Output %esc using parsed format string
|
||||
if (!c) error_exit("bad %s", *toys.optargs);
|
||||
if (c == 'b') {
|
||||
while (*aa)
|
||||
putchar(chrstart(&aa, '\\') ? handle_slash(&aa, 1) : *aa++);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user