From: Sachin Agrawal Date: Mon, 5 Jan 2015 18:35:00 +0000 (-0800) Subject: Fixed seg fault in Linux sample_main (Bug IOT-227) X-Git-Tag: 0.9.1-alpha1~38^2~285^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=9d76e141d4d2142d9ebb7cc392a1faaecaff9fc3;p=contrib%2Fiotivity.git Fixed seg fault in Linux sample_main (Bug IOT-227) In clearDtlsCredentialInfo, free needs to be invoked on the 'pskCredsBlob' variable. Also updated code to correctly set blob version field. Change-Id: Iecfc22b98a430dadd072fa0ea71ddc3eec1a84d8 Signed-off-by: Sachin Agrawal --- diff --git a/resource/csdk/connectivity/samples/linux/sample_main.c b/resource/csdk/connectivity/samples/linux/sample_main.c index 3c4fdaf..fedaa94 100644 --- a/resource/csdk/connectivity/samples/linux/sample_main.c +++ b/resource/csdk/connectivity/samples/linux/sample_main.c @@ -90,10 +90,10 @@ void clearDtlsCredentialInfo() // Zero out sensitive data before freeing. if (pskCredsBlob->num) { - memset(pskCredsBlob->creds, 0, - sizeof(OCDtlsPskCredsBlob) + (sizeof(OCDtlsPskCreds)*(pskCredsBlob->num - 1))); + memset(pskCredsBlob, 0, + sizeof(OCDtlsPskCredsBlob) + (sizeof(OCDtlsPskCreds)*(pskCredsBlob->num - 1))); } - free(pskCredsBlob->creds); + free(pskCredsBlob); pskCredsBlob = NULL; } printf("clearDtlsCredentialInfo OUT\n"); @@ -118,7 +118,9 @@ int32_t SetCredentials() if (pskCredsBlob) { memset(pskCredsBlob, 0x0, sizeof(OCDtlsPskCredsBlob)); - pskCredsBlob->num = DtlsPskCredsBlobVer_CurrentVersion; + + pskCredsBlob->blobVer = DtlsPskCredsBlobVer_CurrentVersion; + memcpy(pskCredsBlob->identity, IDENTITY, DTLS_PSK_ID_LEN); pskCredsBlob->num = 1; @@ -527,12 +529,12 @@ void send_secure_request() char uri[MAX_BUF_LEN]; char ipv4addr[CA_IPADDR_SIZE]; + printf("\n=============================================\n"); printf("Enter IPv4 address of the source hosting secure resource (Ex: 11.12.13.14)\n"); fgets(ipv4addr, CA_IPADDR_SIZE, stdin); snprintf(uri, MAX_BUF_LEN, "coaps://%s:5684/a/light", ipv4addr); - printf("\n=============================================\n"); // create remote endpoint CARemoteEndpoint_t *endpoint = NULL; if (CA_STATUS_OK != CACreateRemoteEndpoint(uri, CA_ETHERNET, &endpoint))