From 79b94a2dcd249d575dce9b6c549b710ba8809836 Mon Sep 17 00:00:00 2001 From: Sebastian Huber Date: Wed, 28 Jul 2021 16:48:59 +0200 Subject: libcsupport: Fix TOCTOU in getchark() Use the same function pointer value to check against NULL and call the function (if non-NULL). Fix format, add Doxygen comments, and reduce includes. --- cpukit/libcsupport/src/getchark.c | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) (limited to 'cpukit/libcsupport/src') diff --git a/cpukit/libcsupport/src/getchark.c b/cpukit/libcsupport/src/getchark.c index 5a9afbda7a..cfe9c022d6 100644 --- a/cpukit/libcsupport/src/getchark.c +++ b/cpukit/libcsupport/src/getchark.c @@ -1,8 +1,9 @@ /** - * @file + * @file * - * @brief Get Character from Stdin - * @ingroup libcsupport + * @ingroup BSPIO + * + * @brief This source file contains the implementation of getchark(). */ /* @@ -18,13 +19,17 @@ #include "config.h" #endif -#include #include -int getchark(void) +int getchark( void ) { - if ( BSP_poll_char ) - return (*BSP_poll_char)(); + BSP_polling_getchar_function_type poll_char; + + poll_char = BSP_poll_char; + + if ( poll_char == NULL ) { + return -1; + } - return -1; + return ( *poll_char )(); } -- cgit v1.2.3