## Description: add some description ## Origin/Author: add some origin or author ## Bug: bug URL Index: opensc-0.11.12/src/libopensc/card-acos5.c =================================================================== --- opensc-0.11.12.orig/src/libopensc/card-acos5.c 2010-12-20 10:14:41.487447271 +0100 +++ opensc-0.11.12/src/libopensc/card-acos5.c 2010-12-20 10:11:22.884109480 +0100 @@ -140,8 +140,8 @@ /* * Cache serial number. */ - memcpy(card->serialnr.value, apdu.resp, apdu.resplen); - card->serialnr.len = apdu.resplen; + memcpy(card->serialnr.value, apdu.resp, MIN(apdu.resplen, SC_MAX_SERIALNR)); + card->serialnr.len = MIN(apdu.resplen, SC_MAX_SERIALNR); /* * Copy and return serial number. Index: opensc-0.11.12/src/libopensc/card-atrust-acos.c =================================================================== --- opensc-0.11.12.orig/src/libopensc/card-atrust-acos.c 2010-12-20 10:14:41.527446489 +0100 +++ opensc-0.11.12/src/libopensc/card-atrust-acos.c 2010-12-20 10:13:45.131448372 +0100 @@ -853,8 +853,8 @@ if (apdu.sw1 != 0x90 || apdu.sw2 != 0x00) return SC_ERROR_INTERNAL; /* cache serial number */ - memcpy(card->serialnr.value, apdu.resp, apdu.resplen); - card->serialnr.len = apdu.resplen; + memcpy(card->serialnr.value, apdu.resp, MIN(apdu.resplen, SC_MAX_SERIALNR)); + card->serialnr.len = MIN(apdu.resplen, SC_MAX_SERIALNR); /* copy and return serial number */ memcpy(serial, &card->serialnr, sizeof(*serial)); return SC_SUCCESS; Index: opensc-0.11.12/src/libopensc/card-starcos.c =================================================================== --- opensc-0.11.12.orig/src/libopensc/card-starcos.c 2010-12-20 10:14:41.555447114 +0100 +++ opensc-0.11.12/src/libopensc/card-starcos.c 2010-12-20 10:14:36.436565569 +0100 @@ -1289,8 +1289,8 @@ if (apdu.sw1 != 0x90 || apdu.sw2 != 0x00) return SC_ERROR_INTERNAL; /* cache serial number */ - memcpy(card->serialnr.value, apdu.resp, apdu.resplen); - card->serialnr.len = apdu.resplen; + memcpy(card->serialnr.value, apdu.resp, MIN(apdu.resplen, SC_MAX_SERIALNR)); + card->serialnr.len = MIN(apdu.resplen, SC_MAX_SERIALNR); /* copy and return serial number */ memcpy(serial, &card->serialnr, sizeof(*serial)); return SC_SUCCESS;