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