DWORD cchGroups = 0;
IRP* irp = operation->irp;
cchGroups = SCARD_AUTOALLOCATE;
- status = ret.ReturnCode =
- SCardListReaderGroupsA(operation->hContext, (LPSTR)&mszGroups, &cchGroups);
+ ret.ReturnCode = SCardListReaderGroupsA(operation->hContext, (LPSTR)&mszGroups, &cchGroups);
ret.msz = (BYTE*)mszGroups;
ret.cBytes = cchGroups;
- if (status != SCARD_S_SUCCESS)
- return status;
-
status = smartcard_pack_list_reader_groups_return(smartcard, irp->output, &ret, FALSE);
if (status != SCARD_S_SUCCESS)
return SCARD_F_INTERNAL_ERROR;
cbAttrLen = ret->cbAttrLen;
+ if (ret->ReturnCode == SCARD_E_INSUFFICIENT_BUFFER)
+ cbAttrLen = 0;
if (cbAttrLen == SCARD_AUTOALLOCATE)
cbAttrLen = 0;
Stream_Write_UINT32(s, cbAttrLen); /* cbAttrLen (4 bytes) */