md: prevent endless loop for card without sn

This commit is contained in:
Frank Morgner 2018-02-23 13:29:54 +01:00
parent d29bdf9da0
commit e8e8153cda

View File

@ -1312,12 +1312,16 @@ md_set_cardid(PCARD_DATA pCardData, struct md_file *file)
memcpy(sn_bin, vs->p15card->tokeninfo->serial_number, sn_len); memcpy(sn_bin, vs->p15card->tokeninfo->serial_number, sn_len);
} }
for (offs=0; offs < MD_CARDID_SIZE; ) { if (sn_len > 0) {
wr = MD_CARDID_SIZE - offs; for (offs=0; offs < MD_CARDID_SIZE; ) {
if (wr > sn_len) wr = MD_CARDID_SIZE - offs;
wr = sn_len; if (wr > sn_len)
memcpy(cardid_bin + offs, sn_bin, wr); wr = sn_len;
offs += wr; memcpy(cardid_bin + offs, sn_bin, wr);
offs += wr;
}
} else {
memset(cardid_bin, 0, MD_CARDID_SIZE);
} }
dwret = md_fs_set_content(pCardData, file, cardid_bin, MD_CARDID_SIZE); dwret = md_fs_set_content(pCardData, file, cardid_bin, MD_CARDID_SIZE);