diff --git a/test/src/NotePing_test.cpp b/test/src/NotePing_test.cpp index 1803e844..0487d7d1 100644 --- a/test/src/NotePing_test.cpp +++ b/test/src/NotePing_test.cpp @@ -102,30 +102,35 @@ const char *pingTransaction(const char *request, size_t reqLen, char **response, lastRequestLength = reqLen; lastTransactionTimeoutMs = timeoutMs; lastRequestEndedWithNewline = (reqLen > 0 && request[reqLen - 1] == '\n'); - lastRequestHadCrc = (strstr(request, "\"crc\"") != NULL); serialBytesRemainingAtTransaction = serialBytesRemaining; + char *requestCopy = static_cast(malloc(reqLen + 1)); + if (requestCopy == NULL) { + return ERRSTR("malloc failed {mem}", c_mem); + } + memcpy(requestCopy, request, reqLen); + requestCopy[reqLen] = '\0'; + lastRequestHadCrc = (strstr(requestCopy, "\"crc\"") != NULL); + if (pingResponse == PingResponse::TransactionError) { + free(requestCopy); return ERRSTR("transaction failed {io}", c_ioerr); } if (response == NULL || pingResponse == PingResponse::NoResponse) { + free(requestCopy); return NULL; } if (pingResponse == PingResponse::InvalidJson) { *response = copyString("not-json"); + free(requestCopy); return NULL; } if (pingResponse == PingResponse::Error) { *response = copyString("{\"err\":\"failed\"}"); + free(requestCopy); return NULL; } - char *requestCopy = static_cast(malloc(reqLen + 1)); - if (requestCopy == NULL) { - return ERRSTR("malloc failed {mem}", c_mem); - } - memcpy(requestCopy, request, reqLen); - requestCopy[reqLen] = '\0'; if (reqLen > 0 && requestCopy[reqLen - 1] == '\n') { requestCopy[reqLen - 1] = '\0'; }