Always copy null terminator when filtering smartcard list
authorAlex Wilson <alex@cooperi.net>
Wed, 8 Apr 2020 11:03:02 +0000 (21:03 +1000)
committerakallabeth <akallabeth@users.noreply.github.com>
Thu, 9 Apr 2020 08:44:25 +0000 (10:44 +0200)
channels/smartcard/client/smartcard_operations.c

index 13035fd..e99d27b 100644 (file)
@@ -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;
                }