diff options
author | Jakub Jelen <jjelen@redhat.com> | 2020-10-30 15:12:30 +0100 |
---|---|---|
committer | Jakub Jelen <jjelen@redhat.com> | 2021-01-04 17:33:22 +0100 |
commit | ae68776db9a6097cd6307befc74d4eec00cc55da (patch) | |
tree | 75d3095596ee2aa975bfcd28f5cea2978b87da5e | |
parent | 323defeef280bf2de63d6b5dcdfc13ab7ed9ff4b (diff) |
tests: Fix ofset calculation while reading buffers
Signed-off-by: Jakub Jelen <jjelen@redhat.com>
Acked-by: Frediano Ziglio <fziglio@redhat.com>
-rw-r--r-- | tests/common.c | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/tests/common.c b/tests/common.c index 38a6f89..f859f0c 100644 --- a/tests/common.c +++ b/tests/common.c @@ -333,7 +333,7 @@ void get_properties(VReader *reader, int object_type) void read_buffer(VReader *reader, uint8_t type, int object_type) { - int dwRecvLength = APDUBufSize, dwLength, dwReadLength, offset; + int dwRecvLength = APDUBufSize, dwLength, dwReadLength, offset, left; VReaderStatus status; uint8_t pbRecvBuffer[APDUBufSize]; uint8_t *data; @@ -359,8 +359,9 @@ void read_buffer(VReader *reader, uint8_t type, int object_type) data = g_malloc(dwLength); offset = 0x02; + left = dwLength; do { - dwReadLength = MIN(255, dwLength); + dwReadLength = MIN(255, left); dwRecvLength = dwReadLength+2; read_buffer[2] = (unsigned char) ((offset >> 8) & 0xff); read_buffer[3] = (unsigned char) (offset & 0xff); @@ -375,9 +376,9 @@ void read_buffer(VReader *reader, uint8_t type, int object_type) g_assert_cmphex(pbRecvBuffer[dwRecvLength-1], ==, 0x00); memcpy(data + offset - 2, pbRecvBuffer, dwReadLength); - offset += dwLength; - dwLength -= dwReadLength; - } while (dwLength != 0); + offset += dwReadLength; + left -= dwReadLength; + } while (left != 0); /* Try to parse the TAG buffer, if it makes sense */ if (type == CAC_FILE_TAG) { |