Only increase rps if it is not an update.

Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
This commit is contained in:
Pol Henarejos
2022-09-28 22:57:02 +02:00
parent 0c51160d23
commit b1b9dad9f5

View File

@@ -205,6 +205,7 @@ int credential_store(const uint8_t *cred_id, size_t cred_id_len, const uint8_t *
int sloti = -1; int sloti = -1;
Credential cred = {0}; Credential cred = {0};
int ret = 0; int ret = 0;
bool new_record = true;
ret = credential_load(cred_id, cred_id_len, rp_id_hash, &cred); ret = credential_load(cred_id, cred_id_len, rp_id_hash, &cred);
if (ret != 0) { if (ret != 0) {
credential_free(&cred); credential_free(&cred);
@@ -228,6 +229,7 @@ int credential_store(const uint8_t *cred_id, size_t cred_id_len, const uint8_t *
if (memcmp(rcred.userId.data, cred.userId.data, MIN(rcred.userId.len, cred.userId.len)) == 0) { if (memcmp(rcred.userId.data, cred.userId.data, MIN(rcred.userId.len, cred.userId.len)) == 0) {
sloti = i; sloti = i;
credential_free(&rcred); credential_free(&rcred);
new_record = false;
break; break;
} }
credential_free(&rcred); credential_free(&rcred);
@@ -241,6 +243,7 @@ int credential_store(const uint8_t *cred_id, size_t cred_id_len, const uint8_t *
flash_write_data_to_file(ef, data, cred_id_len + 32); flash_write_data_to_file(ef, data, cred_id_len + 32);
free(data); free(data);
if (new_record == true) { //increase rps
sloti = -1; sloti = -1;
for (int i = 0; i < MAX_RESIDENT_CREDENTIALS; i++) { for (int i = 0; i < MAX_RESIDENT_CREDENTIALS; i++) {
ef = search_dynamic_file(EF_RP + i); ef = search_dynamic_file(EF_RP + i);
@@ -267,12 +270,13 @@ int credential_store(const uint8_t *cred_id, size_t cred_id_len, const uint8_t *
else { else {
ef = file_new(EF_RP+sloti); ef = file_new(EF_RP+sloti);
data = (uint8_t *)calloc(1, 1 + 32 + cred.rpId.len); data = (uint8_t *)calloc(1, 1 + 32 + cred.rpId.len);
data[0] = 0; data[0] = 1;
memcpy(data+1, rp_id_hash, 32); memcpy(data+1, rp_id_hash, 32);
memcpy(data + 1 + 32, cred.rpId.data, cred.rpId.len); memcpy(data + 1 + 32, cred.rpId.data, cred.rpId.len);
flash_write_data_to_file(ef, data, 1 + 32 + cred.rpId.len); flash_write_data_to_file(ef, data, 1 + 32 + cred.rpId.len);
free(data); free(data);
} }
}
credential_free(&cred); credential_free(&cred);
low_flash_available(); low_flash_available();
return 0; return 0;