typedef struct
{
uint32_t key;
+ uint64_t version;
uint32_t num_mem;
nns_size_t data_len[NNS_EDGE_DATA_LIMIT];
nns_size_t meta_len;
data_len = 0;
edata_header.key = NNS_EDGE_DATA_KEY;
+ edata_header.version = nns_edge_generate_version_key ();
edata_header.num_mem = ed->num;
for (n = 0; n < ed->num; n++) {
edata_header.data_len[n] = ed->data[n].data_len;
return NNS_EDGE_ERROR_INVALID_PARAMETER;
}
+ if (!nns_edge_parse_version_key (header->version, NULL, NULL, NULL)) {
+ nns_edge_loge ("Invalid param, given data has invalid version.");
+ return NNS_EDGE_ERROR_INVALID_PARAMETER;
+ }
+
+ /**
+ * @todo The number of memories in data.
+ * Total number of memories in edge-data should be less than NNS_EDGE_DATA_LIMIT.
+ * Fetch nns-edge version info and check allowed memories if NNS_EDGE_DATA_LIMIT is updated.
+ */
+ if (header->num_mem > NNS_EDGE_DATA_LIMIT) {
+ nns_edge_loge ("Invalid param, given data has invalid memories.");
+ return NNS_EDGE_ERROR_INVALID_PARAMETER;
+ }
+
/* Check mem size */
total = sizeof (nns_edge_data_header_s) + header->meta_len;
for (n = 0; n < header->num_mem; n++)
{
uint32_t magic;
uint32_t cmd; /**< enum for query commands, see nns_edge_cmd_e. */
+ uint64_t version;
int64_t client_id;
/* memory info */
memset (cmd, 0, sizeof (nns_edge_cmd_s));
nns_edge_handle_set_magic (&cmd->info, NNS_EDGE_MAGIC);
cmd->info.cmd = c;
+ cmd->info.version = nns_edge_generate_version_key ();
cmd->info.client_id = cid;
cmd->info.num = 0;
cmd->info.meta_size = 0;
SAFE_FREE (cmd->meta);
- cmd->info.num = 0U;
- cmd->info.meta_size = 0U;
+ cmd->info.cmd = _NNS_EDGE_CMD_ERROR;
+ cmd->info.version = 0;
+ cmd->info.client_id = 0;
+ cmd->info.num = 0;
+ cmd->info.meta_size = 0;
}
/**
return false;
}
+ if (!nns_edge_parse_version_key (cmd->info.version, NULL, NULL, NULL))
+ return false;
+
+ /**
+ * @todo The number of memories in data.
+ * Total number of memories in edge-data should be less than NNS_EDGE_DATA_LIMIT.
+ * Fetch nns-edge version info and check allowed memories if NNS_EDGE_DATA_LIMIT is updated.
+ */
+ if (cmd->info.num > NNS_EDGE_DATA_LIMIT)
+ return false;
+
return true;
}