From 2e8170aa316c71b5bfadaad465db46a10836cebd Mon Sep 17 00:00:00 2001 From: Klas Lindfors Date: Tue, 24 Jun 2014 15:02:36 +0200 Subject: [PATCH] only return the actual data in ykpiv_fetch_data() --- lib/ykpiv.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/ykpiv.c b/lib/ykpiv.c index beaceab..c182054 100644 --- a/lib/ykpiv.c +++ b/lib/ykpiv.c @@ -610,6 +610,7 @@ ykpiv_rc ykpiv_fetch_object(ykpiv_state *state, int object_id, unsigned char indata[5]; unsigned char templ[] = {0, YKPIV_INS_GET_DATA, 0x3b, 0xff}; long inlen = 5; + ykpiv_rc res; indata[0] = 0x5c; if(object_id == YKPIV_OBJ_DISCOVERY) { @@ -625,5 +626,16 @@ ykpiv_rc ykpiv_fetch_object(ykpiv_state *state, int object_id, return YKPIV_INVALID_OBJECT; } - return ykpiv_transfer_data(state, templ, indata, inlen, data, len, &sw); + if((res = ykpiv_transfer_data(state, templ, indata, inlen, data, len, &sw)) + != YKPIV_OK) { + return res; + } + + { + size_t outlen; + int offs = get_length(data + 1, &outlen); + memmove(data, data + 1 + offs, outlen); + *len = outlen; + } + return YKPIV_OK; }