From 94c8faab9f5b7dfcf11b6a0084cf54029badb125 Mon Sep 17 00:00:00 2001 From: Jan Breuer <jan.breuer@jaybee.cz> Date: 周日, 24 4月 2016 18:25:36 +0800 Subject: [PATCH] Fix tests for device dependent info, convert to strndup, fix out of bounds access --- libscpi/src/parser.c | 10 +++++----- 1 files changed, 5 insertions(+), 5 deletions(-) diff --git a/libscpi/src/parser.c b/libscpi/src/parser.c index 6d7f8a9..6ced497 100644 --- a/libscpi/src/parser.c +++ b/libscpi/src/parser.c @@ -219,11 +219,11 @@ result &= processCommand(context); cmd_prev = state->programHeader; } else { - /* test */ /* place undefined header with error */ - data[r ? (r - 1) : r] = 0; - SCPI_ErrorPushEx(context, SCPI_ERROR_UNDEFINED_HEADER, data); - //SCPI_ErrorPush(context, SCPI_ERROR_UNDEFINED_HEADER); + /* calculate length of errornouse header and trim \r\n */ + size_t r2 = r; + while(r2 > 0 && (data[r2 - 1] == '\r' || data[r2 - 1] == '\n')) r2--; + SCPI_ErrorPushEx(context, SCPI_ERROR_UNDEFINED_HEADER, data, r2); result = FALSE; } } @@ -547,7 +547,7 @@ result += writeDelimiter(context); result += writeData(context, "\"", 1); - for (i = 0; data[i] && outputlimit && (i < SCPIDEFINE_DESCRIPTION_MAX_PARTS); i++) { + for (i = 0; (i < SCPIDEFINE_DESCRIPTION_MAX_PARTS) && data[i] && outputlimit; i++) { if (i == 1) { result += writeSemicolon(context); outputlimit -= 1; -- Gitblit v1.9.1