laforge has submitted this change. ( https://gerrit.osmocom.org/c/osmo-remsim/+/42201?usp=email )
Change subject: bankd: csv: fail on invalid csv lines ......................................................................
bankd: csv: fail on invalid csv lines
Instead of ignoring invalid regex and non-existent regex for reader.
Change-Id: If10889b43c99adb99d0b7dcdb4287952c3a93d69 --- M src/bankd/bankd_pcsc.c 1 file changed, 10 insertions(+), 1 deletion(-)
Approvals: Jenkins Builder: Verified pespin: Looks good to me, but someone else must approve laforge: Looks good to me, approved
diff --git a/src/bankd/bankd_pcsc.c b/src/bankd/bankd_pcsc.c index 1804d01..1eb7dba 100644 --- a/src/bankd/bankd_pcsc.c +++ b/src/bankd/bankd_pcsc.c @@ -55,6 +55,7 @@ struct bankd *bankd; enum parser_state_name state; struct pcsc_slot_name *cur; + bool invalid_csv; };
@@ -62,6 +63,7 @@ { ps->state = ST_BANK_NR; ps->cur = NULL; + ps->invalid_csv = false; }
static void cb1(void *s, size_t len, void *data) @@ -104,6 +106,7 @@ if (!sn->name_regex) { LOGP(DMAIN, LOGL_ERROR, "B%d:%d: No reader name given. Maybe invalid csv.\n", sn->slot.bank_id, sn->slot.slot_nr); + ps->invalid_csv = true; talloc_free(sn); goto out; } @@ -113,8 +116,9 @@ rc = regcomp(&compiled_name, sn->name_regex, REG_EXTENDED); if (rc != 0) { char *errmsg = get_regerror(sn, rc, &compiled_name); - LOGP(DMAIN, LOGL_ERROR, "B%d:%d: Error compiling regex '%s': %s - Ignoring\n", + LOGP(DMAIN, LOGL_ERROR, "B%d:%d: Error compiling regex '%s': %s\n", sn->slot.bank_id, sn->slot.slot_nr, sn->name_regex, errmsg); + ps->invalid_csv = true; talloc_free(errmsg); talloc_free(sn); } else { @@ -162,6 +166,11 @@ fclose(fp); csv_free(&p);
+ if (ps.invalid_csv) { + LOGP(DMAIN, LOGL_FATAL, "Error parsing bankd PC/SC CSV.\n"); + return -1; + } + return 0; }