Skip to content

Commit fe59907

Browse files
55 corrupt message can cause illegal memory write (#56)
* Changed core include path in cmake to not depend on FW_UPDATE flag as it was being missed * Added length checks in case JSPR message is corrupted
1 parent 7f11716 commit fe59907

File tree

1 file changed

+10
-4
lines changed

1 file changed

+10
-4
lines changed

src/jspr.c

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,8 +109,11 @@ bool receiveJspr(jsprResponse_t * response, const char * expectedTarget)
109109
targetStart = &jsprRxBuffer[JSPR_RESULT_CODE_LENGTH + 1];
110110
targetEnd = strchr(targetStart, ' ');
111111
targetLength = targetEnd - targetStart;
112-
memcpy(response->target, targetStart, targetLength);
113-
response->target[targetLength] = '\0';
112+
if(targetLength < JSPR_MAX_TARGET_LENGTH)
113+
{
114+
memcpy(response->target, targetStart, targetLength);
115+
response->target[targetLength] = '\0';
116+
}
114117

115118
if (expectedTarget != NULL)
116119
{
@@ -125,8 +128,11 @@ bool receiveJspr(jsprResponse_t * response, const char * expectedTarget)
125128

126129
jsonStart = strchr(targetStart, '{');
127130
response->jsonSize = strchr(targetStart, '\0') - jsonStart;
128-
strncpy(response->json, jsonStart, response->jsonSize);
129-
response->json[response->jsonSize] = '\0';
131+
if(response->jsonSize < JSPR_MAX_JSON_LENGTH)
132+
{
133+
strncpy(response->json, jsonStart, response->jsonSize);
134+
response->json[response->jsonSize] = '\0';
135+
}
130136
reading = false;
131137
gotResponse = true;
132138
received = true;

0 commit comments

Comments
 (0)