Skip to content

Commit

Permalink
json utils: Remove dependency on C99 I/O formatting specifiers for 8/…
Browse files Browse the repository at this point in the history
…16-bit sscanf items
  • Loading branch information
projectgus committed Mar 7, 2017
1 parent 26e4132 commit 7132505
Showing 1 changed file with 21 additions and 3 deletions.
24 changes: 21 additions & 3 deletions src/aws_iot_json_utils.c
Original file line number Diff line number Diff line change
Expand Up @@ -87,10 +87,16 @@ IoT_Error_t parseUnsignedInteger8Value(uint8_t *i, const char *jsonString, jsmnt
return JSON_PARSE_ERROR;
}

if(('-' == (char) (jsonString[token->start])) || (1 != sscanf(jsonString + token->start, "%" SCNu8, i))) {
uint32_t i_word;
if(('-' == (char) (jsonString[token->start])) || (1 != sscanf(jsonString + token->start, "%" SCNu32, &i_word))) {
IOT_WARN("Token was not an unsigned integer.");
return JSON_PARSE_ERROR;
}
if (i_word > UINT8_MAX) {
IOT_WARN("Token value %u exceeds 8 bits", i_word);
return JSON_PARSE_ERROR;
}
*i = i_word;

return SUCCESS;
}
Expand All @@ -115,10 +121,16 @@ IoT_Error_t parseInteger16Value(int16_t *i, const char *jsonString, jsmntok_t *t
return JSON_PARSE_ERROR;
}

if(1 != sscanf(jsonString + token->start, "%" SCNi16, i)) {
int32_t i_word;
if(1 != sscanf(jsonString + token->start, "%" SCNi32, &i_word)) {
IOT_WARN("Token was not an integer.");
return JSON_PARSE_ERROR;
}
if(i_word < INT16_MIN || i_word > INT16_MAX) {
IOT_WARN("Token value %d out of range for 16-bit int", i_word);
return JSON_PARSE_ERROR;
}
*i = i_word;

return SUCCESS;
}
Expand All @@ -129,10 +141,16 @@ IoT_Error_t parseInteger8Value(int8_t *i, const char *jsonString, jsmntok_t *tok
return JSON_PARSE_ERROR;
}

if(1 != sscanf(jsonString + token->start, "%" SCNi8, i)) {
int32_t i_word;
if(1 != sscanf(jsonString + token->start, "%" SCNi32, &i_word)) {
IOT_WARN("Token was not an integer.");
return JSON_PARSE_ERROR;
}
if(i_word < INT8_MIN || i_word > INT8_MAX) {
IOT_WARN("Token value %d out of range for 8-bit int", i_word);
return JSON_PARSE_ERROR;
}
*i = i_word;

return SUCCESS;
}
Expand Down

0 comments on commit 7132505

Please sign in to comment.