diff --git a/g10/call-agent.c b/g10/call-agent.c index 1fa77e7be..c4d146392 100644 --- a/g10/call-agent.c +++ b/g10/call-agent.c @@ -1381,6 +1381,7 @@ agent_scd_serialno (char **r_serialno, const char *demand) char *serialno = NULL; char line[ASSUAN_LINELENGTH]; + *r_serialno = NULL; err = start_agent (NULL, (1 | FLAG_FOR_CARD_SUPPRESS_ERRORS)); if (err) return err; diff --git a/g10/card-util.c b/g10/card-util.c index 168427552..d43081588 100644 --- a/g10/card-util.c +++ b/g10/card-util.c @@ -688,7 +688,8 @@ card_status (ctrl_t ctrl, estream_t fp, const char *serialno) { int err; strlist_t card_list, sl; - char *serialno0, *serialno1; + char *serialno0 = NULL; + char *serialno1 = NULL; int all_cards = 0; int any_card = 0; @@ -733,6 +734,7 @@ card_status (ctrl_t ctrl, estream_t fp, const char *serialno) current_card_status (ctrl, fp, NULL, 0); xfree (serialno1); + serialno1 = NULL; if (!all_cards) goto leave; @@ -740,11 +742,10 @@ card_status (ctrl_t ctrl, estream_t fp, const char *serialno) /* Select the original card again. */ err = agent_scd_serialno (&serialno1, serialno0); - if (!err) - xfree (serialno1); leave: xfree (serialno0); + xfree (serialno1); free_strlist (card_list); } @@ -2000,8 +2001,7 @@ factory_reset (void) char *serialno0; err = agent_scd_serialno (&serialno0, NULL); - if (!err) - xfree (serialno0); + xfree (serialno0); } leave: