aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Waterman <waterman@cs.berkeley.edu>2016-03-01 12:19:11 -0800
committerAndrew Waterman <waterman@cs.berkeley.edu>2016-03-01 12:19:11 -0800
commitdea1fa15f2712b7f6540c41832322c813591315f (patch)
tree4c77877401300bbabdb522a1e2804631d092a698
parent39c89b7db54a3a82355e179f33027113b8f69d55 (diff)
downloadriscv-pk-dea1fa15f2712b7f6540c41832322c813591315f.zip
riscv-pk-dea1fa15f2712b7f6540c41832322c813591315f.tar.gz
riscv-pk-dea1fa15f2712b7f6540c41832322c813591315f.tar.bz2
Fix vsnprintf infinite loop
-rw-r--r--pk/console.c9
-rw-r--r--pk/mtrap.c7
2 files changed, 9 insertions, 7 deletions
diff --git a/pk/console.c b/pk/console.c
index a9258fc..097842b 100644
--- a/pk/console.c
+++ b/pk/console.c
@@ -56,9 +56,12 @@ int vsnprintf(char* out, size_t n, const char* s, va_list vl)
}
case 's':
{
- const char* s2 = va_arg(vl,const char*);
- while(*s2)
- if (++pos < n) out[pos-1] = *s2++;
+ const char* s2 = va_arg(vl, const char*);
+ while (*s2) {
+ if (++pos < n)
+ out[pos-1] = *s2;
+ s2++;
+ }
longarg = false;
format = false;
break;
diff --git a/pk/mtrap.c b/pk/mtrap.c
index e55aaa6..f07a395 100644
--- a/pk/mtrap.c
+++ b/pk/mtrap.c
@@ -133,16 +133,15 @@ static uintptr_t mcall_htif_syscall(uintptr_t magic_mem)
void printm(const char* s, ...)
{
- char buf[128];
+ char buf[256];
va_list vl;
va_start(vl, s);
vsnprintf(buf, sizeof buf, s, vl);
va_end(vl);
- char* p = buf;
- while (*p)
- mcall_console_putchar(*p++);
+ for (const char* p = buf; *p; p++)
+ mcall_console_putchar(*p);
}
static void send_ipi(uintptr_t recipient, int event)