Overview
Comment: | Worked around bug in GDM (619297) that rejects a slotid of 0 |
---|---|
Downloads: | Tarball | ZIP archive | SQL archive |
Timelines: | family | ancestors | descendants | both | trunk |
Files: | files | file ages | folders |
SHA1: | 78b2c8546f2f6be1be73590aaae078b21e2778e0 |
User & Date: | rkeene on 2010-05-21 15:43:50 |
Other Links: | manifest | tags |
Context
2010-05-21
| ||
15:44 | CACKey 0.5.5 check-in: c97d596fa2 user: rkeene tags: trunk, 0.5.5 | |
15:43 | Worked around bug in GDM (619297) that rejects a slotid of 0 check-in: 78b2c8546f user: rkeene tags: trunk | |
15:43 | Updated to make target directory tree check-in: 627054cdf0 user: rkeene tags: trunk | |
Changes
Modified cackey.c from [1aac84790e] to [a529afaf0b].
3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 .... 3142 3143 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 .... 3178 3179 3180 3181 3182 3183 3184 3185 3186 3187 3188 3189 3190 3191 3192 |
pcsc_readers = malloc(pcsc_readers_len); pcsc_readers_s = pcsc_readers; scard_listreaders_ret = SCardListReaders(*cackey_pcsc_handle, NULL, pcsc_readers, &pcsc_readers_len); if (scard_listreaders_ret == SCARD_S_SUCCESS) { pcsc_readers_e = pcsc_readers + pcsc_readers_len; currslot = 0; while (pcsc_readers < pcsc_readers_e) { curr_reader_len = strlen(pcsc_readers); if ((pcsc_readers + curr_reader_len) > pcsc_readers_e) { break; } ................................................................................ cackey_slots[currslot].label = NULL; } currslot++; pcsc_readers += curr_reader_len + 1; } if (currslot > 0) { slot_count = currslot; } } else { CACKEY_DEBUG_PRINTF("Second call to SCardListReaders failed, return %s/%li", CACKEY_DEBUG_FUNC_SCARDERR_TO_STR(scard_listreaders_ret), (long) scard_listreaders_ret); } free(pcsc_readers_s); } else { ................................................................................ if (count < slot_count) { CACKEY_DEBUG_PRINTF("Error. User allocated %lu entries, but we have %lu entries.", count, slot_count); return(CKR_BUFFER_TOO_SMALL); } for (currslot = 0; currslot < slot_count; currslot++) { pSlotList[currslot] = currslot; } *pulCount = slot_count; CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i). Found %lu readers.", CKR_OK, (unsigned long) slot_count); return(CKR_OK); |
> > | > > | > > | > > | |
3107 3108 3109 3110 3111 3112 3113 3114 3115 3116 3117 3118 3119 3120 3121 3122 3123 .... 3144 3145 3146 3147 3148 3149 3150 3151 3152 3153 3154 3155 3156 3157 3158 3159 3160 3161 3162 3163 .... 3184 3185 3186 3187 3188 3189 3190 3191 3192 3193 3194 3195 3196 3197 3198 3199 3200 |
pcsc_readers = malloc(pcsc_readers_len); pcsc_readers_s = pcsc_readers; scard_listreaders_ret = SCardListReaders(*cackey_pcsc_handle, NULL, pcsc_readers, &pcsc_readers_len); if (scard_listreaders_ret == SCARD_S_SUCCESS) { pcsc_readers_e = pcsc_readers + pcsc_readers_len; /* Start with Slot ID 1, to avoid a bug in GDM */ /* Bug 619297: https://bugzilla.gnome.org/show_bug.cgi?id=619297 */ currslot = 1; while (pcsc_readers < pcsc_readers_e) { curr_reader_len = strlen(pcsc_readers); if ((pcsc_readers + curr_reader_len) > pcsc_readers_e) { break; } ................................................................................ cackey_slots[currslot].label = NULL; } currslot++; pcsc_readers += curr_reader_len + 1; } /* Start with Slot ID 1, to avoid a bug in GDM */ /* Bug 619297: https://bugzilla.gnome.org/show_bug.cgi?id=619297 */ if (currslot > 1) { /* Start with Slot ID 1, to avoid a bug in GDM */ /* Bug 619297: https://bugzilla.gnome.org/show_bug.cgi?id=619297 */ slot_count = currslot - 1; } } else { CACKEY_DEBUG_PRINTF("Second call to SCardListReaders failed, return %s/%li", CACKEY_DEBUG_FUNC_SCARDERR_TO_STR(scard_listreaders_ret), (long) scard_listreaders_ret); } free(pcsc_readers_s); } else { ................................................................................ if (count < slot_count) { CACKEY_DEBUG_PRINTF("Error. User allocated %lu entries, but we have %lu entries.", count, slot_count); return(CKR_BUFFER_TOO_SMALL); } for (currslot = 0; currslot < slot_count; currslot++) { /* Start with Slot ID 1, to avoid a bug in GDM */ /* Bug 619297: https://bugzilla.gnome.org/show_bug.cgi?id=619297 */ pSlotList[currslot] = currslot + 1; } *pulCount = slot_count; CACKEY_DEBUG_PRINTF("Returning CKR_OK (%i). Found %lu readers.", CKR_OK, (unsigned long) slot_count); return(CKR_OK); |