return nullptr;
}
- OCHeaderOption* options = new OCHeaderOption[headerOptions.size()];
- int i = 0;
+ OCHeaderOption* options = new OCHeaderOption[headerOptions.size()]();
+
+ size_t numOptions = 0;
for (auto it=headerOptions.begin(); it != headerOptions.end(); ++it)
{
- options[i] = OCHeaderOption();
- options[i].protocolID = OC_COAP_ID;
- options[i].optionID = it->getOptionID();
- options[i].optionLength = it->getOptionData().length() + 1;
- strncpy((char*)options[i].optionData, it->getOptionData().c_str(),
- sizeof(options[i].optionLength) -1 );
- options[i].optionData[sizeof(options[i].optionLength) - 1] = 0;
- i++;
+ OCStackResult ret = OCSetHeaderOption(options, &numOptions, it->getOptionID(),
+ it->getOptionData().c_str(), it->getOptionData().length());
+ if (OC_STACK_OK != ret)
+ {
+ OIC_LOG_V(ERROR, TAG, "Failed to convert vnd header options! (error=%d)", ret);
+ delete[] options;
+ return nullptr;
+ }
}
return options;