ss: fix crash with invalid command input file
Subsystems (2)
PATCH 1/1 ss: fix crash with invalid command input file
If given an invalid input file with -F flag, ss would crash. Examples of invalid input are line to long, or null file.
Signed-off-by Stephen Hemminger <[email protected]>
--- misc/ssfilter.y | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-)
misc/ssfilter.y +14 -6
@@ -202,15 +202,23 @@ int yylex(void) argc++; } else if (yy_fp) { while (tokptr == NULL) { - if (fgets(argbuf, sizeof(argbuf)-1, yy_fp) == NULL) + size_t len; + + if (fgets(argbuf, sizeof(argbuf), yy_fp) == NULL) return 0; - argbuf[sizeof(argbuf)-1] = 0; - if (strlen(argbuf) == sizeof(argbuf) - 1) { - fprintf(stderr, "Too long line in filter"); + + len = strnlen(argbuf, sizeof(argbuf)); + if (len == 0) { + fprintf(stderr, "Invalid line\n"); + exit(-1); + } + + if (len >= sizeof(argbuf) - 1) { + fprintf(stderr, "Too long line in filter\n"); exit(-1); } - if (argbuf[strlen(argbuf)-1] == '\n') - argbuf[strlen(argbuf)-1] = 0; + if (argbuf[len - 1] == '\n') + argbuf[len-1] = 0; if (argbuf[0] == '#' || argbuf[0] == '0') continue; tokptr = argbuf;
Signature · 1 line
2.11.0