Skip to content

Commit bd2d91d

Browse files
committed
Fix sizeof bug in strncpy in MQTT
Fixes an L-Band update key bug.
1 parent 3505691 commit bd2d91d

File tree

1 file changed

+16
-14
lines changed

1 file changed

+16
-14
lines changed

Firmware/RTK_Surveyor/menuPP.ino

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ bool pointperfectProvisionDevice()
170170
bluetoothStop(); //Free heap before starting secure client (requires ~70KB)
171171

172172
DynamicJsonDocument * jsonZtp = nullptr;
173-
char * tempHolder = nullptr;
173+
char *tempHolderPtr = nullptr;
174174
bool retVal = false;
175175

176176
do
@@ -248,6 +248,7 @@ bool pointperfectProvisionDevice()
248248
systemPrintln("ERROR - Failed to allocate jsonZtp!\r\n");
249249
break;
250250
}
251+
251252
DeserializationError error = deserializeJson(*jsonZtp, response);
252253
if (DeserializationError::Ok != error)
253254
{
@@ -256,21 +257,22 @@ bool pointperfectProvisionDevice()
256257
}
257258
else
258259
{
259-
tempHolder = (char *)malloc(2000);
260-
if (!tempHolder)
260+
const int tempHolderSize = 2000;
261+
tempHolderPtr = (char *)malloc(tempHolderSize);
262+
if (!tempHolderPtr)
261263
{
262-
systemPrintln("ERROR - Failed to allocate tempHolder buffer!\r\n");
264+
systemPrintln("ERROR - Failed to allocate tempHolderPtr buffer!\r\n");
263265
break;
264266
}
265-
strncpy(tempHolder, (const char*)((*jsonZtp)["certificate"]), sizeof(tempHolder) - 1);
266-
// systemPrintf("len of PrivateCert: %d\r\n", strlen(tempHolder));
267-
// systemPrintf("privateCert: %s\r\n", tempHolder);
268-
recordFile("certificate", tempHolder, strlen(tempHolder));
267+
strncpy(tempHolderPtr, (const char*)((*jsonZtp)["certificate"]), tempHolderSize - 1);
268+
//log_d("len of PrivateCert: %d", strlen(tempHolderPtr));
269+
//log_d("privateCert: %s", tempHolderPtr);
270+
recordFile("certificate", tempHolderPtr, strlen(tempHolderPtr));
269271

270-
strncpy(tempHolder, (const char*)((*jsonZtp)["privateKey"]), sizeof(tempHolder) - 1);
271-
// systemPrintf("len of privateKey: %d\r\n", strlen(tempHolder));
272-
// systemPrintf("privateKey: %s\r\n", tempHolder);
273-
recordFile("privateKey", tempHolder, strlen(tempHolder));
272+
strncpy(tempHolderPtr, (const char*)((*jsonZtp)["privateKey"]), tempHolderSize - 1);
273+
//log_d("len of privateKey: %d", strlen(tempHolderPtr));
274+
//log_d("privateKey: %s", tempHolderPtr);
275+
recordFile("privateKey", tempHolderPtr, strlen(tempHolderPtr));
274276

275277
strcpy(settings.pointPerfectClientID, (const char*)((*jsonZtp)["clientId"]));
276278
strcpy(settings.pointPerfectBrokerHost, (const char*)((*jsonZtp)["brokerHost"]));
@@ -293,8 +295,8 @@ bool pointperfectProvisionDevice()
293295
} while (0);
294296

295297
//Free the allocated buffers
296-
if (tempHolder)
297-
free (tempHolder);
298+
if (tempHolderPtr)
299+
free (tempHolderPtr);
298300
if (jsonZtp)
299301
delete jsonZtp;
300302

0 commit comments

Comments
 (0)