From 7967852eb99ac3ba079ab273f3039e217525661c Mon Sep 17 00:00:00 2001 From: blueloveTH Date: Sat, 28 Sep 2024 12:18:59 +0800 Subject: [PATCH] fix `scanf` buffer overflow --- src/public/modules.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/public/modules.c b/src/public/modules.c index a4b1548c..a1c40743 100644 --- a/src/public/modules.c +++ b/src/public/modules.c @@ -184,10 +184,16 @@ static bool builtins_input(int argc, py_Ref argv) { prompt = py_tostr(argv); } printf("%s", prompt); - char buf[2048]; - scanf("%s", buf); - getchar(); - py_newstr(py_retval(), buf); + + c11_sbuf buf; + c11_sbuf__ctor(&buf); + while(true) { + int c = getchar(); + if(c == '\n') break; + if(c == EOF) break; + c11_sbuf__write_char(&buf, c); + } + c11_sbuf__py_submit(&buf, py_retval()); return true; }