From c6e675bfb789dcb5e63788d9588f32211fe6fc14 Mon Sep 17 00:00:00 2001 From: Alex Wilson Date: Wed, 8 Apr 2020 21:03:02 +1000 Subject: [PATCH] Always copy null terminator when filtering smartcard list --- channels/smartcard/client/smartcard_operations.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/channels/smartcard/client/smartcard_operations.c b/channels/smartcard/client/smartcard_operations.c index 13035fd90..e99d27bf4 100644 --- a/channels/smartcard/client/smartcard_operations.c +++ b/channels/smartcard/client/smartcard_operations.c @@ -456,12 +456,16 @@ static DWORD filter_device_by_name_a(wLinkedList* list, LPSTR* mszReaders, DWORD LPCSTR rreader = &(*mszReaders)[rpos]; LPSTR wreader = &(*mszReaders)[wpos]; size_t readerLen = strnlen(rreader, cchReaders - rpos); + + if (readerLen == 0) + break; + rpos += readerLen + 1; if (filter_match(list, rreader, readerLen)) { if (rreader != wreader) - memmove(wreader, rreader, readerLen); + memmove(wreader, rreader, readerLen + 1); wpos += readerLen + 1; }