Private
Public Access
2
0

jsonplatform.c: fix potential segfault at pin label processing

Also update docs to reflect the max label length.

Fixes #738.

Signed-off-by: Alex Tereschenko <alext.mkrs@gmail.com>
Signed-off-by: Brendan Le Foll <brendan.le.foll@intel.com>
This commit is contained in:
Alex Tereschenko
2017-06-15 21:20:51 +02:00
committed by Brendan Le Foll
parent 30bbb88685
commit d544e3c2f6
2 changed files with 3 additions and 2 deletions

View File

@@ -41,7 +41,7 @@ The number of json objects in layout should be equal to the pin_count.
|Key |Type |Required |Description | |Key |Type |Required |Description |
|-----------|-------|-----------|-----------------------------------------------| |-----------|-------|-----------|-----------------------------------------------|
|label |string |yes | The label used to describe the pin | |label |string |yes | The label used to describe the pin (11 characters max) |
|invalid |boolean|no | Sets the labeled pin as an invalid pin | |invalid |boolean|no | Sets the labeled pin as an invalid pin |
### GPIO ### GPIO

View File

@@ -214,7 +214,8 @@ mraa_init_json_platform_io(json_object* jobj_io, mraa_board_t* board, int index)
} }
temp_string = json_object_get_string(jobj_temp); temp_string = json_object_get_string(jobj_temp);
// set the gpio label // set the gpio label
strncpy(board->pins[pos].name, temp_string, 8); memset(board->pins[pos].name, 0, MRAA_PIN_NAME_SIZE);
strncpy(board->pins[pos].name, temp_string, MRAA_PIN_NAME_SIZE - 1);
} else { } else {
syslog(LOG_ERR, "init_json_platform: No IO Label"); syslog(LOG_ERR, "init_json_platform: No IO Label");
return MRAA_ERROR_INVALID_RESOURCE; return MRAA_ERROR_INVALID_RESOURCE;