X-Git-Url: http://git.pld-linux.org/?p=packages%2Fopensc.git;a=blobdiff_plain;f=opensc-segv.patch;h=faa888910bbad3a9784959a9fce6183770db9a30;hp=ce171521ff4416b19ddf9f626940415dd3f2840a;hb=01dfa050dae2043484067b5442792155b80800cf;hpb=73e1e63a765fce244df4165666c2c25378f9a47b diff --git a/opensc-segv.patch b/opensc-segv.patch index ce17152..faa8889 100644 --- a/opensc-segv.patch +++ b/opensc-segv.patch @@ -1,10 +1,19 @@ ---- opensc-0.7.0/src/libopensc/card-default.c.orig Thu May 2 15:55:06 2002 -+++ opensc-0.7.0/src/libopensc/card-default.c Tue Mar 11 15:17:27 2003 -@@ -58,6 +58,7 @@ - apdu.datalen = 0; - apdu.lc = 0; - apdu.le = 256; -+ apdu.resp = &rbuf; - apdu.resplen = sizeof(rbuf); - r = sc_transmit_apdu(card, &apdu); - SC_TEST_RET(card->ctx, r, "APDU transmit failed"); +file->acl[op] can contain special value (1,2,3) cast to pointer; it must be +passed through sc_file_get_acl_entry before dereferencing. + +--- opensc-0.8.1/src/libopensc/card-setcos.c.orig Wed Sep 3 11:28:54 2003 ++++ opensc-0.8.1/src/libopensc/card-setcos.c Wed Jul 21 13:16:44 2004 +@@ -152,8 +152,11 @@ + for (i = 0; i < 6; i++) + idx[i] = ef_idx[i]; + } +- for (i = 0; i < 6; i++) +- buf[i] = acl_to_byte(file->acl[idx[i]]); ++ for (i = 0; i < 6; i++) { ++ const struct sc_acl_entry *entry; ++ entry = sc_file_get_acl_entry(file, idx[i]); ++ buf[i] = acl_to_byte(entry); ++ } + + sc_file_set_sec_attr(file, buf, 6); + }