5360 segfault using smartcard without any readers (#5361)
authorPascal J. Bourguignon <pjb@informatimago.com>
Fri, 26 Apr 2019 07:10:41 +0000 (09:10 +0200)
committerakallabeth <akallabeth@users.noreply.github.com>
Fri, 26 Apr 2019 07:10:41 +0000 (09:10 +0200)
* Fix: corrected test for astyle.

* Fix: added test for NULL readers returned by ConvertFromUnicode.

channels/smartcard/client/smartcard_operations.c
scripts/format_code.sh

index 47971f1..759085d 100644 (file)
@@ -493,21 +493,21 @@ static DWORD filter_device_by_name_w(wLinkedList* list, LPWSTR* mszReaders, DWOR
 {
        int res;
        DWORD rc;
-       LPSTR readers;
+       LPSTR readers = NULL;
 
        if (LinkedList_Count(list) < 1)
                return cchReaders;
 
        res = ConvertFromUnicode(CP_UTF8, 0, *mszReaders, (int)cchReaders, &readers, 0, NULL,
-                              NULL);
+                                NULL);
 
-       if ((res < 0) || ((DWORD)res != cchReaders))
+       /* When res==0, readers may have been set to NULL by ConvertFromUnicode */
+       if ((res < 0) || ((DWORD)res != cchReaders) || (readers == 0))
                return 0;
 
        free(*mszReaders);
        *mszReaders = NULL;
        rc = filter_device_by_name_a(list, &readers, cchReaders);
-
        res = ConvertToUnicode(CP_UTF8, 0, readers, (int)rc, mszReaders, 0);
 
        if ((res < 0) || ((DWORD)res != rc))
index 3ad769b..f3561ba 100755 (executable)
@@ -2,7 +2,7 @@
 
 ASTYLE=$(which astyle)
 
-if [ ! -x $ASTYLE ]; then
+if [ ! -x "$ASTYLE" ]; then
   echo "No astyle found in path, please install."
   exit 1
 fi