From 6acc53b725ddd75772ea5f0777b2dcabf1583b50 Mon Sep 17 00:00:00 2001 From: Iztok Jeras <iztok.jeras@redpitaya.com> Date: ćšć, 08 10æ 2015 03:00:34 +0800 Subject: [PATCH] integer parser: make buffer sizes more explicit, as sum of bitlength and NULL termination --- libscpi/src/parser.c | 40 ++++------------------------------------ 1 files changed, 4 insertions(+), 36 deletions(-) diff --git a/libscpi/src/parser.c b/libscpi/src/parser.c index dbba29e..494ff70 100644 --- a/libscpi/src/parser.c +++ b/libscpi/src/parser.c @@ -378,7 +378,7 @@ * @return */ size_t SCPI_ResultInt32Base(scpi_t * context, int32_t val, int8_t base) { - char buffer[33]; + char buffer[32+1]; const char * basePrefix; size_t result = 0; size_t len; @@ -403,7 +403,7 @@ * @return */ size_t SCPI_ResultUInt32Base(scpi_t * context, uint32_t val, int8_t base) { - char buffer[33]; + char buffer[32+1]; const char * basePrefix; size_t result = 0; size_t len; @@ -428,7 +428,7 @@ * @return */ size_t SCPI_ResultInt64Base(scpi_t * context, int64_t val, int8_t base) { - char buffer[33]; //TODO + char buffer[64+1]; const char * basePrefix; size_t result = 0; size_t len; @@ -453,7 +453,7 @@ * @return */ size_t SCPI_ResultUInt64Base(scpi_t * context, uint64_t val, int8_t base) { - char buffer[33]; //TODO + char buffer[64+1]; const char * basePrefix; size_t result = 0; size_t len; @@ -672,38 +672,6 @@ */ scpi_bool_t SCPI_ParamToInt32(scpi_t * context, scpi_parameter_t * parameter, int32_t * value) { return ParamToInt32(context, parameter, value, TRUE); -} - -/** - * Convert parameter to unsigned 32 bit integer - * @param context - * @param parameter - * @param value result - * @return TRUE if succesful - */ -static scpi_bool_t ParamToUInt32(scpi_t * context, scpi_parameter_t * parameter, uint32_t * value, scpi_bool_t sign) { - - if (!value) { - SCPI_ErrorPush(context, SCPI_ERROR_SYSTEM_ERROR); - return FALSE; - } - - switch (parameter->type) { - case SCPI_TOKEN_HEXNUM: - return strToUInt32(parameter->ptr, (uint32_t *)value, 16) > 0 ? TRUE : FALSE; - case SCPI_TOKEN_OCTNUM: - return strToUInt32(parameter->ptr, (uint32_t *)value, 8) > 0 ? TRUE : FALSE; - case SCPI_TOKEN_BINNUM: - return strToUInt32(parameter->ptr, (uint32_t *)value, 2) > 0 ? TRUE : FALSE; - case SCPI_TOKEN_DECIMAL_NUMERIC_PROGRAM_DATA: - case SCPI_TOKEN_DECIMAL_NUMERIC_PROGRAM_DATA_WITH_SUFFIX: - if (sign) { - return strToInt32(parameter->ptr, value, 10) > 0 ? TRUE : FALSE; - } else { - return strToUInt32(parameter->ptr, (uint32_t *)value, 10) > 0 ? TRUE : FALSE; - } - } - return FALSE; } /** -- Gitblit v1.9.1