continue;
default:
data_size = zb_get_data_size(records[j]->type);
+ if (data_size < 0) {
+ for (i = 0; i < j; i++)
+ free(records[i]->value);
+ for (i = 0; i < records_len; i++)
+ free(records[i]);
+ free(records);
+ ERR("zb_get_data_size() Fail(%d)", data_size);
+ return;
+ }
records[j]->value = calloc(data_size, sizeof(unsigned char));
if (NULL == records[j]->value) {
for (i = 0; i < j; i++)
RETM_IF(NULL == resp_iter, "Invalid parameter !");
records = calloc(record_length, sizeof(report_config_record_h));
+ RETM_IF(NULL == records, "calloc() Fail(%d)", errno);
+
for (i = 0; i < record_length; i++) {
records[i] = calloc(1, sizeof(struct reporting_configuration_record_s));
if (NULL == records[i]) {
RETV_IF(NULL == h->value, ZIGBEE_ERROR_OUT_OF_MEMORY);
h->value[0] = v->wstr->n & 0xff;
h->value[1] = (v->wstr->n >> 8) & 0xff ;
- memcpy(h->value + sizeof(short), v->wstr->v + sizeof(short), v->wstr->n);
+ memcpy(h->value + sizeof(short), v->wstr->v + 2, v->wstr->n);
} else
return ZIGBEE_ERROR_NOT_SUPPORTED;
len = zb_get_data_size(h->type);
if (0 < len) {
s = calloc(h->size + 1 , sizeof(char));
+ RETV_IF(NULL == s, ZIGBEE_ERROR_OUT_OF_MEMORY);
memcpy(s, h->val, len);
*count = len;
} else if (ZB_ZCL_OCTAT_STRING == h->type || ZB_ZCL_CHRACTER_STRING == h->type) {
RETV_IF(NULL == h->wstr, ZIGBEE_ERROR_NO_DATA);
s = calloc(sizeof(char), h->wstr->n);
RETV_IF(NULL == s, ZIGBEE_ERROR_OUT_OF_MEMORY);
- memcpy(s, h->wstr->v + sizeof(short), h->wstr->n);
+ memcpy(s, h->wstr->v + 2, h->wstr->n);
*count = h->wstr->n;
} else
return ZIGBEE_ERROR_NOT_SUPPORTED;
/* The first 2 byte indicate invalid or length of string */
h->value[0] = v->wstr->n & 0xff;
h->value[1] = (v->wstr->n >> 8) & 0xff ;
- memcpy(h->value + sizeof(short), v->wstr->v + sizeof(short), v->wstr->n);
+ memcpy(h->value + sizeof(short), v->wstr->v + 2, v->wstr->n);
} else
return ZIGBEE_ERROR_NOT_SUPPORTED;
/* The first 2 byte indicate invalid or length of string */
h->value[0] = v->wstr->n & 0xff;
h->value[1] = (v->wstr->n >> 8) & 0xff ;
- memcpy(h->value + sizeof(short), v->wstr->v + sizeof(short), v->wstr->n);
+ memcpy(h->value + sizeof(short), v->wstr->v + 2, v->wstr->n);
} else
return ZIGBEE_ERROR_NOT_SUPPORTED;
int ret = ZIGBEE_ERROR_NONE;
/* Samjin Power Outlet */
write_attr_record_h attr;
+ int size = -1;
unsigned short cluster_id = ZB_ZCL_IDENTIFY_CLUSTER_ID;
unsigned short attribute_id = ZB_ZCL_IDENTIFY_TIME_ATTRIBUTE_ID;
/* zb_set_id_to_write_attr_record(attr, ZB_ZCL_IDENTIFY_TIME_ATTRIBUTE_ID); */
zb_set_id_to_write_attr_record(attr, attribute_id);
zb_set_type_to_write_attr_record(attr, ZB_ZCL_UNSIGNED_16_BIT_INTEGER);
- zb_set_buf_to_write_attr_record(attr, ZB_ZCL_UNSIGNED_16_BIT_INTEGER, attribute_value,
- zb_get_data_size(ZB_ZCL_UNSIGNED_16_BIT_INTEGER));
+ size = zb_get_data_size(ZB_ZCL_UNSIGNED_16_BIT_INTEGER);
+ if (size < 0) {
+ zb_destroy_write_attr_record(attr);
+ msg("zb_get_data_size(%d) - FAILED!!!", size);
+ return RET_FAILURE;
+ }
+
+ zb_set_buf_to_write_attr_record(attr, ZB_ZCL_UNSIGNED_16_BIT_INTEGER, attribute_value, size);
ret = zb_zcl_global_write_attr(handle, dest_addr16, 1, sj_ep1.ep,
ZB_ZCL_FC_DEFAULT,
unsigned char value[] = { 0x02, 0x01};
/* Samjin Power Outlet */
write_attr_record_h attr;
+ int size = -1;
ret = zb_create_write_attr_record(&attr);
if (ZIGBEE_ERROR_NONE != ret) {
zb_set_id_to_write_attr_record(attr, ZB_ZCL_IDENTIFY_TIME_ATTRIBUTE_ID);
zb_set_type_to_write_attr_record(attr, ZB_ZCL_UNSIGNED_16_BIT_INTEGER);
- zb_set_buf_to_write_attr_record(attr, ZB_ZCL_UNSIGNED_16_BIT_INTEGER, value,
- zb_get_data_size(ZB_ZCL_UNSIGNED_16_BIT_INTEGER));
+ size = zb_get_data_size(ZB_ZCL_UNSIGNED_16_BIT_INTEGER);
+ if (size < 0) {
+ zb_destroy_write_attr_record(attr);
+ msg("zb_get_data_size(%d) - FAILED!!!", size);
+ return RET_FAILURE;
+ }
+
+ zb_set_buf_to_write_attr_record(attr, ZB_ZCL_UNSIGNED_16_BIT_INTEGER, value, size);
ret = zb_zcl_global_write_attr_undivided(handle, dest_addr16, 1,
sj_ep1.ep, ZB_ZCL_FC_DEFAULT, ZB_ZCL_IDENTIFY_CLUSTER_ID, &attr, 1,
zigbee_zcl_global_write_attributes_rsp, NULL);
unsigned char value[] = { 0x02, 0x01};
/* Samjin Power Outlet */
write_attr_record_h attr;
+ int size = -1;
ret = zb_create_write_attr_record(&attr);
if (ZIGBEE_ERROR_NONE != ret) {
zb_set_id_to_write_attr_record(attr, ZB_ZCL_IDENTIFY_TIME_ATTRIBUTE_ID);
zb_set_type_to_write_attr_record(attr, ZB_ZCL_UNSIGNED_16_BIT_INTEGER);
- zb_set_buf_to_write_attr_record(attr, ZB_ZCL_UNSIGNED_16_BIT_INTEGER, value,
- zb_get_data_size(ZB_ZCL_UNSIGNED_16_BIT_INTEGER));
+ size = zb_get_data_size(ZB_ZCL_UNSIGNED_16_BIT_INTEGER);
+ if (size < 0) {
+ zb_destroy_write_attr_record(attr);
+ msg("zb_get_data_size(%d) - FAILED!!!", size);
+ return RET_FAILURE;
+ }
+
+ zb_set_buf_to_write_attr_record(attr, ZB_ZCL_UNSIGNED_16_BIT_INTEGER, value, size);
ret = zb_zcl_global_write_attr_no_rsp(handle, dest_addr16, 1, sj_ep1.ep,
ZB_ZCL_FC_DEFAULT, ZB_ZCL_IDENTIFY_CLUSTER_ID, &attr, 1);
zb_destroy_write_attr_record(attr);