Avoid unnecessary memcpy
Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
This commit is contained in:
parent
c4e781103f
commit
21f70601b4
2 changed files with 7 additions and 8 deletions
|
|
@ -85,11 +85,13 @@ void process_fci(const file_t *pe) {
|
|||
}
|
||||
memcpy(res_APDU+res_APDU_size, "\x8A\x01\x05", 3); //life-cycle (5 -> activated)
|
||||
res_APDU_size += 3;
|
||||
uint8_t meta_size = meta_find(pe->fid, res_APDU+res_APDU_size+3, 256);
|
||||
uint8_t *meta_data = NULL;
|
||||
uint8_t meta_size = meta_find(pe->fid, &meta_data);
|
||||
if (meta_size) {
|
||||
res_APDU[res_APDU_size++] = 0xA5;
|
||||
res_APDU[res_APDU_size++] = 0x81;
|
||||
res_APDU[res_APDU_size++] = meta_size;
|
||||
memcpy(res_APDU+res_APDU_size,meta_data,meta_size);
|
||||
res_APDU_size += meta_size;
|
||||
}
|
||||
res_APDU[1] = res_APDU_size-2;
|
||||
|
|
@ -299,7 +301,7 @@ file_t *file_new(uint16_t fid) {
|
|||
//memset((uint8_t *)f->acl, 0x90, sizeof(f->acl));
|
||||
return f;
|
||||
}
|
||||
int meta_find(uint16_t fid, uint8_t *out, size_t out_len) {
|
||||
int meta_find(uint16_t fid, uint8_t **out) {
|
||||
file_t *ef = search_by_fid(EF_META, NULL, SPECIFY_EF);
|
||||
if (!ef)
|
||||
return CCID_ERR_FILE_NOT_FOUND;
|
||||
|
|
@ -310,11 +312,8 @@ int meta_find(uint16_t fid, uint8_t *out, size_t out_len) {
|
|||
continue;
|
||||
uint16_t cfid = (tag_data[0] << 8 | tag_data[1]);
|
||||
if (cfid == fid) {
|
||||
if (out) {
|
||||
if (out_len < tag_len-2)
|
||||
return CCID_ERR_NO_MEMORY;
|
||||
memcpy(out, tag_data+2, tag_len-2);
|
||||
}
|
||||
if (out)
|
||||
*out = tag_data+2;
|
||||
return tag_len-2;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -113,7 +113,7 @@ extern int delete_dynamic_file(file_t *f);
|
|||
|
||||
extern bool isUserAuthenticated;
|
||||
|
||||
extern int meta_find(uint16_t, uint8_t *out, size_t out_len);
|
||||
extern int meta_find(uint16_t, uint8_t **out);
|
||||
extern int meta_delete(uint16_t fid);
|
||||
extern int meta_add(uint16_t fid, const uint8_t *data, uint16_t len);
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue