[PATCH 3/8] console: fix a bug in interactive readline usage

Vladislav Shpilevoy v.shpilevoy at tarantool.org
Mon Apr 16 21:39:13 MSK 2018


Spurious wakeups are possible in console, that makes readline
think that there are some data on stdin. Waked up readline
returns garbage instead of string, that crashes a server on
assertion in Lua.

Closes #3343
---
 src/box/lua/console.c | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/src/box/lua/console.c b/src/box/lua/console.c
index d27d7ecac..7a5ac5550 100644
--- a/src/box/lua/console.c
+++ b/src/box/lua/console.c
@@ -221,8 +221,9 @@ lbox_console_readline(struct lua_State *L)
 	 */
 	rl_callback_handler_install(prompt, console_push_line);
 	top = lua_gettop(L);
-	while (top == lua_gettop(L) &&
-	       coio_wait(STDIN_FILENO, COIO_READ, TIMEOUT_INFINITY)) {
+	while (top == lua_gettop(L)) {
+		while (coio_wait(STDIN_FILENO, COIO_READ,
+				 TIMEOUT_INFINITY) == 0);
 
 		rl_callback_read_char();
 	}
-- 
2.15.1 (Apple Git-101)




More information about the Tarantool-patches mailing list