diff --git a/lib/tiny-printf.c b/lib/tiny-printf.c
index 5ea2555280b1561da6e072d6d8092b9e2b2325f3..3c65fc90bf233bdfe0d5ffd1b77e8a4842a5de4d 100644
--- a/lib/tiny-printf.c
+++ b/lib/tiny-printf.c
@@ -168,8 +168,10 @@ int snprintf(char *buf, size_t size, const char *fmt, ...)
 	int ret;
 
 	va_start(va, fmt);
-	ret = sprintf(buf, fmt, va);
+	outstr = buf;
+	ret = _vprintf(fmt, va, putc_outstr);
 	va_end(va);
+	*outstr = '\0';
 
 	return ret;
 }