diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-07-28 16:48:59 +0200 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2021-07-28 19:05:42 +0200 |
commit | 79b94a2dcd249d575dce9b6c549b710ba8809836 (patch) | |
tree | 868f624cdbbb8595d2cdb77611fa127ff1da7498 /cpukit/libcsupport/src | |
parent | score: Remove _Internal_errors_What_happened (diff) | |
download | rtems-79b94a2dcd249d575dce9b6c549b710ba8809836.tar.bz2 |
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.
Diffstat (limited to 'cpukit/libcsupport/src')
-rw-r--r-- | cpukit/libcsupport/src/getchark.c | 21 |
1 files changed, 13 insertions, 8 deletions
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 <rtems.h> #include <rtems/bspIo.h> -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 )(); } |