Support for NULL certificates added

This commit is contained in:
Simon Rozman 2016-06-16 00:24:52 +02:00
parent ec0b283540
commit 6e15d3535d

View File

@ -353,6 +353,7 @@ namespace eapserial
inline void pack(_Inout_ unsigned char *&cursor, _In_ const winstd::cert_context &val) inline void pack(_Inout_ unsigned char *&cursor, _In_ const winstd::cert_context &val)
{ {
if (val) {
*(DWORD*&)cursor = val->dwCertEncodingType; *(DWORD*&)cursor = val->dwCertEncodingType;
cursor += sizeof(DWORD); cursor += sizeof(DWORD);
@ -361,12 +362,19 @@ namespace eapserial
memcpy(cursor, val->pbCertEncoded, val->cbCertEncoded); memcpy(cursor, val->pbCertEncoded, val->cbCertEncoded);
cursor += val->cbCertEncoded; cursor += val->cbCertEncoded;
} else {
*(DWORD*&)cursor = 0;
cursor += sizeof(DWORD);
*(DWORD*&)cursor = 0;
cursor += sizeof(DWORD);
}
} }
inline size_t get_pk_size(const winstd::cert_context &val) inline size_t get_pk_size(const winstd::cert_context &val)
{ {
return sizeof(DWORD) + sizeof(DWORD) + val->cbCertEncoded; return sizeof(DWORD) + sizeof(DWORD) + (val ? val->cbCertEncoded : 0);
} }
@ -378,7 +386,10 @@ namespace eapserial
DWORD dwCertEncodedSize = *(DWORD*&)cursor; DWORD dwCertEncodedSize = *(DWORD*&)cursor;
cursor += sizeof(DWORD); cursor += sizeof(DWORD);
if (dwCertEncodedSize) {
val.create(dwCertEncodingType, (BYTE*)cursor, dwCertEncodedSize); val.create(dwCertEncodingType, (BYTE*)cursor, dwCertEncodedSize);
cursor += dwCertEncodedSize; cursor += dwCertEncodedSize;
} else
val.free();
} }
} }