coap_block_t rcvdBlock2;
memset(&rcvdBlock1, COAP_BLOCK_FILL_VALUE, sizeof(coap_block_t));
memset(&rcvdBlock2, COAP_BLOCK_FILL_VALUE, sizeof(coap_block_t));
- uint16_t rcvdSize1 = 0;
+ size_t rcvdSize1 = 0;
coap_pdu_t * rcvdPdu = rcvdRequest->pdu;
coap_pdu_t * sendPdu = NULL;
coap_send_flags_t sendFlag;
else
{
// No block1 received
- rcvdSize1 = strlen((const char *)protocolRequest.reqJSONPayload)+1;
+ rcvdSize1= strlen((const char*)protocolRequest.reqJSONPayload)+1;
protocolRequest.reqTotalSize = rcvdSize1;
}
OCQualityOfService qos, unsigned char * query,
OCHeaderOption * rcvdVendorSpecificHeaderOptions,
unsigned char * reqJSONPayload, OCCoAPToken * requestToken,
- OCDevAddr * requesterAddr, unsigned char * resourceUrl, uint32_t reqTotalSize);
+ OCDevAddr * requesterAddr, unsigned char * resourceUrl, size_t reqTotalSize);
#ifdef CA_INT
OCStackResult AddServerCARequest (OCServerRequest ** request, uint16_t coapID,
OCQualityOfService qos, unsigned char * query,
OCHeaderOption * rcvdVendorSpecificHeaderOptions,
unsigned char * reqJSONPayload, OCCoAPToken * requestToken,
- OCDevAddr * requesterAddr, unsigned char * resourceUrl, uint32_t reqTotalSize,
+ OCDevAddr * requesterAddr, unsigned char * resourceUrl, size_t reqTotalSize,
CAAddress_t *addressInfo, CAConnectivityType_t connectivityType, char *token);
#endif
OCQualityOfService qos, unsigned char * query,
OCHeaderOption * rcvdVendorSpecificHeaderOptions,
unsigned char * reqJSONPayload, OCCoAPToken * requestToken,
- OCDevAddr * requesterAddr, unsigned char * resourceUrl, uint32_t reqTotalSize)
+ OCDevAddr * requesterAddr, unsigned char * resourceUrl, size_t reqTotalSize)
{
OCServerRequest * serverRequest = NULL;
+ //Note: OCServerRequest includes 1 byte for the JSON Payload. payloadSize is calculated
+ //as the required length of the string, so this will result in enough room for the
+ //null terminator as well.
serverRequest = (OCServerRequest *) OCCalloc(1, sizeof(OCServerRequest) + reqTotalSize - 1);
VERIFY_NON_NULL(serverRequest);
}
if(reqJSONPayload)
{
- memcpy((void *)serverRequest->reqJSONPayload, (void *)reqJSONPayload,
- strlen((const char *)reqJSONPayload) + 1);
+ // destination is at least 1 greater than the source, so a NULL always exists in the
+ // last character
+ strncpy((char*)serverRequest->reqJSONPayload,
+ (const char*)reqJSONPayload, reqTotalSize - 1);
}
serverRequest->requestComplete = 0;
if(requestToken)
OCQualityOfService qos, unsigned char * query,
OCHeaderOption * rcvdVendorSpecificHeaderOptions,
unsigned char * reqJSONPayload, OCCoAPToken * requestToken,
- OCDevAddr * requesterAddr, unsigned char * resourceUrl, uint32_t reqTotalSize,
+ OCDevAddr * requesterAddr, unsigned char * resourceUrl, size_t reqTotalSize,
CAAddress_t *addressInfo, CAConnectivityType_t connectivityType, char *token)
{
OCServerRequest * serverRequest = NULL;
+ //Note: OCServerRequest includes 1 byte for the JSON Payload. payloadSize is calculated
+ //as the required length of the string, so this will result in enough room for the
+ //null terminator as well.
serverRequest = (OCServerRequest *) OCCalloc(1, sizeof(OCServerRequest) + reqTotalSize - 1);
VERIFY_NON_NULL(serverRequest);
}
if(reqJSONPayload)
{
- memcpy((void *)serverRequest->reqJSONPayload, (void *)reqJSONPayload,
- strlen((const char *)reqJSONPayload) + 1);
+ // destination is at least 1 greater than the source, so a NULL always exists in the
+ // last character
+ strncpy((char*)serverRequest->reqJSONPayload,
+ (const char*)reqJSONPayload, reqTotalSize - 1);
}
serverRequest->requestComplete = 0;
if(requestToken)