- char tmpbuf[30];
- sprintf(tmpbuf, "%d", i + 1);
- callback("Option: ", tmpbuf);
-
- sprintf(tmpbuf, "%d", responseInfo->info.options[i].optionID);
- callback("ID: ", tmpbuf);
-
- sprintf(tmpbuf, "Data:[%d]", responseInfo->info.options[i].optionLength);
- callback("tmpbuf: ", responseInfo->info.options[i].optionData);
+ char optionInfo[1024] = {0,};
+ sprintf(optionInfo, "Num[%d] - ID : %d, Option Length : %d", i+1,
+ responseInfo->info.options[i].optionID,
+ responseInfo->info.options[i].optionLength);
+
+ callback("Option info: ", optionInfo);
+
+ if (responseInfo->info.options[i].optionData != NULL)
+ {
+ uint32_t optionDataLen = strlen(responseInfo->info.options[i].optionData);
+ cloneOptionData = (char *) OICMalloc(sizeof(char) * (optionDataLen + 1));
+
+ if (cloneOptionData == NULL)
+ {
+ LOGI("CACloneRemoteEndpoint Out of memory");
+ return;
+ }
+ memset(cloneOptionData, 0, sizeof(char) * (optionDataLen + 1));
+ strncpy(cloneOptionData, responseInfo->info.options[i].optionData, optionDataLen);
+ callback("Option Data: ", cloneOptionData);
+ free(cloneOptionData);
+ }