From 5af0162b3fd4875867302e7e43a93f682b4f4c62 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Josef=20S=C3=B6ntgen?= Date: Fri, 26 Oct 2018 11:31:31 +0200 Subject: [PATCH] libc: fix storing TIOCGWINSZ result Fixes #3266. --- repos/libports/src/lib/libc/vfs_plugin.cc | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/repos/libports/src/lib/libc/vfs_plugin.cc b/repos/libports/src/lib/libc/vfs_plugin.cc index fbbe99691a..165b3b704e 100644 --- a/repos/libports/src/lib/libc/vfs_plugin.cc +++ b/repos/libports/src/lib/libc/vfs_plugin.cc @@ -711,8 +711,15 @@ int Libc::Vfs_plugin::ioctl(Libc::File_descriptor *fd, int request, char *argp) switch (request) { case TIOCGWINSZ: - opcode = Opcode::IOCTL_OP_TIOCGWINSZ; - break; + { + if (!argp) { + errno = EINVAL; + return -1; + } + + opcode = Opcode::IOCTL_OP_TIOCGWINSZ; + break; + } case TIOCGETA: { @@ -811,7 +818,7 @@ int Libc::Vfs_plugin::ioctl(Libc::File_descriptor *fd, int request, char *argp) case TIOCGWINSZ: { - ::winsize *winsize = (::winsize *)arg; + ::winsize *winsize = (::winsize *)argp; winsize->ws_row = out.tiocgwinsz.rows; winsize->ws_col = out.tiocgwinsz.columns; return 0;