Add sanity check.

Signed-off-by: Pol Henarejos <pol.henarejos@cttc.es>
This commit is contained in:
Pol Henarejos 2025-10-07 21:11:28 +02:00
parent 031d76737b
commit 0ddfdf8134
No known key found for this signature in database
GPG key ID: C0095B7870A4CCD3

View file

@ -82,14 +82,14 @@ int register_app(int (*select_aid)(app_t *, uint8_t), const uint8_t *aid) {
} }
int select_app(const uint8_t *aid, size_t aid_len) { int select_app(const uint8_t *aid, size_t aid_len) {
if (current_app && current_app->aid && (current_app->aid + 1 == aid || !memcmp(current_app->aid + 1, aid, aid_len))) { if (current_app && current_app->aid && (current_app->aid + 1 == aid || !memcmp(current_app->aid + 1, aid, MIN(current_app->aid[0], aid_len)))) {
current_app->select_aid(current_app, 0); current_app->select_aid(current_app, 0);
return PICOKEY_OK; return PICOKEY_OK;
} }
for (int a = 0; a < num_apps; a++) { for (int a = 0; a < num_apps; a++) {
if (!memcmp(apps[a].aid + 1, aid, MIN(aid_len, apps[a].aid[0]))) { if (!memcmp(apps[a].aid + 1, aid, MIN(aid_len, apps[a].aid[0]))) {
if (current_app) { if (current_app) {
if (current_app->aid && !memcmp(current_app->aid + 1, aid, aid_len)) { if (current_app->aid && !memcmp(current_app->aid + 1, aid, MIN(current_app->aid[0], aid_len))) {
current_app->select_aid(current_app, 1); current_app->select_aid(current_app, 1);
return PICOKEY_OK; return PICOKEY_OK;
} }