mirror of
https://github.com/morgan9e/FreeRDP
synced 2026-04-15 00:44:19 +09:00
[winpr] add WINPR_C_ARRAY_INIT
since C23 allows c++ style initializing replace direct use with this macro
This commit is contained in:
@@ -91,7 +91,7 @@ static krb5_error_code kerb_do_checksum(krb5_context ctx, const KERB_RPC_ENCRYPT
|
||||
WINPR_ASSERT(out);
|
||||
|
||||
krb5_keyblock* keyblock = NULL;
|
||||
krb5_data data = { 0 };
|
||||
krb5_data data = WINPR_C_ARRAY_INIT;
|
||||
|
||||
krb5_error_code rv = RPC_ENCRYPTION_KEY_to_keyblock(ctx, key, &keyblock);
|
||||
if (rv)
|
||||
@@ -116,8 +116,8 @@ static krb5_error_code kerb_do_encrypt(krb5_context ctx, const KERB_RPC_ENCRYPTI
|
||||
WINPR_ASSERT(out);
|
||||
|
||||
krb5_keyblock* keyblock = NULL;
|
||||
krb5_data data = { 0 };
|
||||
krb5_enc_data enc = { 0 };
|
||||
krb5_data data = WINPR_C_ARRAY_INIT;
|
||||
krb5_enc_data enc = WINPR_C_ARRAY_INIT;
|
||||
size_t elen = 0;
|
||||
|
||||
krb5_error_code rv = RPC_ENCRYPTION_KEY_to_keyblock(ctx, key, &keyblock);
|
||||
@@ -163,8 +163,8 @@ static krb5_error_code kerb_do_decrypt(krb5_context ctx, const KERB_RPC_ENCRYPTI
|
||||
WINPR_ASSERT(plain);
|
||||
|
||||
krb5_keyblock* keyblock = NULL;
|
||||
krb5_data data = { 0 };
|
||||
krb5_enc_data enc = { 0 };
|
||||
krb5_data data = WINPR_C_ARRAY_INIT;
|
||||
krb5_enc_data enc = WINPR_C_ARRAY_INIT;
|
||||
|
||||
krb5_error_code rv = RPC_ENCRYPTION_KEY_to_keyblock(ctx, key, &keyblock);
|
||||
if (rv)
|
||||
@@ -198,7 +198,7 @@ static BOOL rdpear_send_payload(RDPEAR_PLUGIN* rdpear, IWTSVirtualChannelCallbac
|
||||
GENERIC_CHANNEL_CALLBACK* callback = (GENERIC_CHANNEL_CALLBACK*)pChannelCallback;
|
||||
BOOL ret = FALSE;
|
||||
wStream* finalStream = NULL;
|
||||
SecBuffer cryptedBuffer = { 0 };
|
||||
SecBuffer cryptedBuffer = WINPR_C_ARRAY_INIT;
|
||||
wStream* unencodedContent = rdpear_encodePayload(isKerb, payload);
|
||||
if (!unencodedContent)
|
||||
goto out;
|
||||
@@ -307,8 +307,8 @@ static BOOL rdpear_kerb_version(NdrContext* rcontext, wStream* s, UINT32* pstatu
|
||||
static BOOL rdpear_kerb_ComputeTgsChecksum(RDPEAR_PLUGIN* rdpear, NdrContext* rcontext, wStream* s,
|
||||
UINT32* pstatus, KERB_ASN1_DATA* resp)
|
||||
{
|
||||
ComputeTgsChecksumReq req = { 0 };
|
||||
krb5_checksum checksum = { 0 };
|
||||
ComputeTgsChecksumReq req = WINPR_C_ARRAY_INIT;
|
||||
krb5_checksum checksum = WINPR_C_ARRAY_INIT;
|
||||
wStream* asn1Payload = NULL;
|
||||
|
||||
*pstatus = ERROR_INVALID_DATA;
|
||||
@@ -347,8 +347,8 @@ out:
|
||||
static BOOL rdpear_kerb_BuildEncryptedAuthData(RDPEAR_PLUGIN* rdpear, NdrContext* rcontext,
|
||||
wStream* s, UINT32* pstatus, KERB_ASN1_DATA* asn1)
|
||||
{
|
||||
BuildEncryptedAuthDataReq req = { 0 };
|
||||
krb5_data encrypted = { 0 };
|
||||
BuildEncryptedAuthDataReq req = WINPR_C_ARRAY_INIT;
|
||||
krb5_data encrypted = WINPR_C_ARRAY_INIT;
|
||||
wStream* asn1Payload = NULL;
|
||||
krb5_error_code rv = 0;
|
||||
|
||||
@@ -400,7 +400,7 @@ static BOOL extractAuthData(const KERB_ASN1_DATA* src, krb5_authdata* authData,
|
||||
WinPrAsn1Decoder_InitMem(&dec, WINPR_ASN1_DER, src->Asn1Buffer, src->Asn1BufferHints.count);
|
||||
BOOL error = FALSE;
|
||||
WinPrAsn1_INTEGER adType = 0;
|
||||
WinPrAsn1_OctetString os = { 0 };
|
||||
WinPrAsn1_OctetString os = WINPR_C_ARRAY_INIT;
|
||||
|
||||
*haveData = FALSE;
|
||||
if (!WinPrAsn1DecReadSequence(&dec, &dec2))
|
||||
@@ -472,11 +472,11 @@ static BOOL rdpear_kerb_CreateApReqAuthenticator(RDPEAR_PLUGIN* rdpear, NdrConte
|
||||
{
|
||||
krb5_error_code rv = 0;
|
||||
wStream* asn1EncodedAuth = NULL;
|
||||
CreateApReqAuthenticatorReq req = { 0 };
|
||||
krb5_data authenticator = { 0 };
|
||||
CreateApReqAuthenticatorReq req = WINPR_C_ARRAY_INIT;
|
||||
krb5_data authenticator = WINPR_C_ARRAY_INIT;
|
||||
krb5_data* der = NULL;
|
||||
krb5_keyblock* subkey = NULL;
|
||||
krb5_principal_data client = { 0 };
|
||||
krb5_principal_data client = WINPR_C_ARRAY_INIT;
|
||||
|
||||
*pstatus = ERROR_INVALID_DATA;
|
||||
WLog_DBG(TAG, "-> CreateApReqAuthenticator");
|
||||
@@ -485,7 +485,7 @@ static BOOL rdpear_kerb_CreateApReqAuthenticator(RDPEAR_PLUGIN* rdpear, NdrConte
|
||||
!ndr_treat_deferred_read(rcontext, s))
|
||||
goto out;
|
||||
|
||||
krb5_authdata authdata = { 0 };
|
||||
krb5_authdata authdata = WINPR_C_ARRAY_INIT;
|
||||
krb5_authdata* authDataPtr[2] = { &authdata, NULL };
|
||||
BOOL haveData = 0;
|
||||
|
||||
@@ -631,7 +631,7 @@ static BOOL rdpear_findEncryptedData(const KERB_ASN1_DATA* src, int* penctype, k
|
||||
WinPrAsn1Decoder_InitMem(&dec, WINPR_ASN1_DER, src->Asn1Buffer, src->Asn1BufferHints.count);
|
||||
BOOL error = FALSE;
|
||||
WinPrAsn1_INTEGER encType = 0;
|
||||
WinPrAsn1_OctetString os = { 0 };
|
||||
WinPrAsn1_OctetString os = WINPR_C_ARRAY_INIT;
|
||||
|
||||
if (!WinPrAsn1DecReadSequence(&dec, &dec2) ||
|
||||
!WinPrAsn1DecReadContextualInteger(&dec2, 0, &error, &encType) ||
|
||||
@@ -649,7 +649,7 @@ static BOOL rdpear_findEncryptedData(const KERB_ASN1_DATA* src, int* penctype, k
|
||||
static BOOL rdpear_kerb_UnpackKdcReplyBody(RDPEAR_PLUGIN* rdpear, NdrContext* rcontext, wStream* s,
|
||||
UINT32* pstatus, UnpackKdcReplyBodyResp* resp)
|
||||
{
|
||||
UnpackKdcReplyBodyReq req = { 0 };
|
||||
UnpackKdcReplyBodyReq req = WINPR_C_ARRAY_INIT;
|
||||
|
||||
*pstatus = ERROR_INVALID_DATA;
|
||||
|
||||
@@ -668,7 +668,7 @@ static BOOL rdpear_kerb_UnpackKdcReplyBody(RDPEAR_PLUGIN* rdpear, NdrContext* rc
|
||||
// winpr_HexDump(TAG, WLOG_DEBUG, req.EncryptedData->Asn1Buffer,
|
||||
// req.EncryptedData->Asn1BufferHints.count);
|
||||
|
||||
krb5_data asn1Data = { 0 };
|
||||
krb5_data asn1Data = WINPR_C_ARRAY_INIT;
|
||||
int encType = 0;
|
||||
if (!rdpear_findEncryptedData(req.EncryptedData, &encType, &asn1Data) || !asn1Data.length)
|
||||
goto out;
|
||||
@@ -687,7 +687,7 @@ out:
|
||||
static BOOL rdpear_kerb_DecryptApReply(RDPEAR_PLUGIN* rdpear, NdrContext* rcontext, wStream* s,
|
||||
UINT32* pstatus, KERB_ASN1_DATA* resp)
|
||||
{
|
||||
DecryptApReplyReq req = { 0 };
|
||||
DecryptApReplyReq req = WINPR_C_ARRAY_INIT;
|
||||
|
||||
*pstatus = ERROR_INVALID_DATA;
|
||||
if (!ndr_read_DecryptApReplyReq(rcontext, s, NULL, &req) ||
|
||||
@@ -698,7 +698,7 @@ static BOOL rdpear_kerb_DecryptApReply(RDPEAR_PLUGIN* rdpear, NdrContext* rconte
|
||||
// winpr_HexDump(TAG, WLOG_DEBUG, req.EncryptedReply->Asn1Buffer,
|
||||
// req.EncryptedReply->Asn1BufferHints.count);
|
||||
|
||||
krb5_data asn1Data = { 0 };
|
||||
krb5_data asn1Data = WINPR_C_ARRAY_INIT;
|
||||
int encType = 0;
|
||||
if (!rdpear_findEncryptedData(req.EncryptedReply, &encType, &asn1Data) || !asn1Data.length)
|
||||
goto out;
|
||||
@@ -723,8 +723,8 @@ out:
|
||||
static BOOL rdpear_kerb_PackApReply(RDPEAR_PLUGIN* rdpear, NdrContext* rcontext, wStream* s,
|
||||
UINT32* pstatus, PackApReplyResp* resp)
|
||||
{
|
||||
PackApReplyReq req = { 0 };
|
||||
krb5_data asn1Data = { 0 };
|
||||
PackApReplyReq req = WINPR_C_ARRAY_INIT;
|
||||
krb5_data asn1Data = WINPR_C_ARRAY_INIT;
|
||||
krb5_data* out = NULL;
|
||||
|
||||
WLog_DBG(TAG, "-> PackApReply");
|
||||
@@ -780,10 +780,10 @@ static UINT rdpear_decode_payload(RDPEAR_PLUGIN* rdpear,
|
||||
UINT32 status = 0;
|
||||
|
||||
UINT32 uint32Resp = 0;
|
||||
KERB_ASN1_DATA asn1Data = { 0 };
|
||||
CreateApReqAuthenticatorResp createApReqAuthenticatorResp = { 0 };
|
||||
UnpackKdcReplyBodyResp unpackKdcReplyBodyResp = { 0 };
|
||||
PackApReplyResp packApReplyResp = { 0 };
|
||||
KERB_ASN1_DATA asn1Data = WINPR_C_ARRAY_INIT;
|
||||
CreateApReqAuthenticatorResp createApReqAuthenticatorResp = WINPR_C_ARRAY_INIT;
|
||||
UnpackKdcReplyBodyResp unpackKdcReplyBodyResp = WINPR_C_ARRAY_INIT;
|
||||
PackApReplyResp packApReplyResp = WINPR_C_ARRAY_INIT;
|
||||
void* resp = NULL;
|
||||
NdrMessageType respDescr = NULL;
|
||||
|
||||
@@ -806,7 +806,7 @@ static UINT rdpear_decode_payload(RDPEAR_PLUGIN* rdpear,
|
||||
}
|
||||
|
||||
Stream_Seek(s, 16); /* skip first 16 bytes */
|
||||
wStream commandStream = { 0 };
|
||||
wStream commandStream = WINPR_C_ARRAY_INIT;
|
||||
UINT16 callId = 0;
|
||||
UINT16 callId2 = 0;
|
||||
|
||||
@@ -967,7 +967,7 @@ static UINT rdpear_on_data_received(IWTSVirtualChannelCallback* pChannelCallback
|
||||
return ERROR_INVALID_DATA;
|
||||
|
||||
SecBuffer inBuffer = { Length, SECBUFFER_TOKEN, Stream_PointerAs(s, void) };
|
||||
SecBuffer decrypted = { 0 };
|
||||
SecBuffer decrypted = WINPR_C_ARRAY_INIT;
|
||||
|
||||
RDPEAR_PLUGIN* rdpear = (RDPEAR_PLUGIN*)callback->plugin;
|
||||
WINPR_ASSERT(rdpear);
|
||||
@@ -976,15 +976,15 @@ static UINT rdpear_on_data_received(IWTSVirtualChannelCallback* pChannelCallback
|
||||
|
||||
WinPrAsn1Decoder dec = { .encoding = WINPR_ASN1_BER, { 0 } };
|
||||
WinPrAsn1Decoder dec2 = { .encoding = WINPR_ASN1_BER, { 0 } };
|
||||
wStream decodedStream = { 0 };
|
||||
wStream decodedStream = WINPR_C_ARRAY_INIT;
|
||||
Stream_StaticInit(&decodedStream, decrypted.pvBuffer, decrypted.cbBuffer);
|
||||
WinPrAsn1Decoder_Init(&dec, WINPR_ASN1_DER, &decodedStream);
|
||||
|
||||
if (!WinPrAsn1DecReadSequence(&dec, &dec2))
|
||||
goto out;
|
||||
|
||||
WinPrAsn1_OctetString packageName = { 0 };
|
||||
WinPrAsn1_OctetString payload = { 0 };
|
||||
WinPrAsn1_OctetString packageName = WINPR_C_ARRAY_INIT;
|
||||
WinPrAsn1_OctetString payload = WINPR_C_ARRAY_INIT;
|
||||
BOOL error = 0;
|
||||
if (!WinPrAsn1DecReadContextualOctetString(&dec2, 1, &error, &packageName, FALSE))
|
||||
goto out;
|
||||
@@ -992,7 +992,7 @@ static UINT rdpear_on_data_received(IWTSVirtualChannelCallback* pChannelCallback
|
||||
if (!WinPrAsn1DecReadContextualOctetString(&dec2, 2, &error, &payload, FALSE))
|
||||
goto out;
|
||||
|
||||
wStream payloadStream = { 0 };
|
||||
wStream payloadStream = WINPR_C_ARRAY_INIT;
|
||||
Stream_StaticInit(&payloadStream, payload.data, payload.len);
|
||||
|
||||
ret = rdpear_decode_payload(rdpear, pChannelCallback, &packageName, &payloadStream);
|
||||
|
||||
@@ -278,7 +278,7 @@ BOOL ndr_end_constructed(NdrContext* context, wStream* s)
|
||||
|
||||
size_t offset = context->constructs[context->constructLevel];
|
||||
|
||||
wStream staticS = { 0 };
|
||||
wStream staticS = WINPR_C_ARRAY_INIT;
|
||||
Stream_StaticInit(&staticS, Stream_Buffer(s) + offset, 4);
|
||||
|
||||
/* len */
|
||||
@@ -644,7 +644,7 @@ BOOL ndr_struct_read_fromDescr(NdrContext* context, wStream* s, const NdrStructD
|
||||
WINPR_ASSERT(target);
|
||||
|
||||
#define NDR_MAX_STRUCT_DEFERRED 16
|
||||
NdrDeferredEntry deferreds[NDR_MAX_STRUCT_DEFERRED] = { 0 };
|
||||
NdrDeferredEntry deferreds[NDR_MAX_STRUCT_DEFERRED] = WINPR_C_ARRAY_INIT;
|
||||
size_t ndeferred = 0;
|
||||
|
||||
for (size_t i = 0; i < descr->nfields; i++)
|
||||
@@ -719,7 +719,7 @@ BOOL ndr_struct_write_fromDescr(NdrContext* context, wStream* s, const NdrStruct
|
||||
WINPR_ASSERT(descr);
|
||||
WINPR_ASSERT(src);
|
||||
|
||||
NdrDeferredEntry deferreds[NDR_MAX_STRUCT_DEFERRED] = { 0 };
|
||||
NdrDeferredEntry deferreds[NDR_MAX_STRUCT_DEFERRED] = WINPR_C_ARRAY_INIT;
|
||||
size_t ndeferred = 0;
|
||||
|
||||
for (size_t i = 0; i < descr->nfields; i++)
|
||||
|
||||
@@ -150,9 +150,9 @@ static BOOL run_payload(NdrContext* context, const BYTE* payload4, size_t sizeof
|
||||
if (!payload4)
|
||||
return FALSE;
|
||||
|
||||
CreateApReqAuthenticatorReq createApReqAuthenticatorReq = { 0 };
|
||||
CreateApReqAuthenticatorReq createApReqAuthenticatorReq = WINPR_C_ARRAY_INIT;
|
||||
|
||||
wStream staticS = { 0 };
|
||||
wStream staticS = WINPR_C_ARRAY_INIT;
|
||||
wStream* s = Stream_StaticInit(&staticS, payload4, sizeofPayload4);
|
||||
if (!ndr_skip_bytes(context, s, 4)) /* skip union id */
|
||||
return FALSE;
|
||||
@@ -211,10 +211,10 @@ static int TestNdrEarRead(int argc, char* argv[])
|
||||
0x00, 0x00 // (padding)
|
||||
};
|
||||
|
||||
wStream staticS = { 0 };
|
||||
wStream staticS = WINPR_C_ARRAY_INIT;
|
||||
wStream* s = Stream_StaticInit(&staticS, payload, sizeof(payload));
|
||||
|
||||
KERB_ASN1_DATA asn1 = { 0 };
|
||||
KERB_ASN1_DATA asn1 = WINPR_C_ARRAY_INIT;
|
||||
if (!ndr_read_KERB_ASN1_DATA(context, s, NULL, &asn1) ||
|
||||
!ndr_treat_deferred_read(context, s) || asn1.Asn1BufferHints.count != 2 ||
|
||||
*asn1.Asn1Buffer != 0x30)
|
||||
@@ -243,9 +243,9 @@ static int TestNdrEarRead(int argc, char* argv[])
|
||||
0x00, 0x00
|
||||
};
|
||||
|
||||
wStream staticS = { 0 };
|
||||
wStream staticS = WINPR_C_ARRAY_INIT;
|
||||
wStream* s = Stream_StaticInit(&staticS, payload2, sizeof(payload2));
|
||||
RPC_UNICODE_STRING unicode = { 0 };
|
||||
RPC_UNICODE_STRING unicode = WINPR_C_ARRAY_INIT;
|
||||
if (!ndr_read_RPC_UNICODE_STRING(context, s, NULL, &unicode) ||
|
||||
!ndr_treat_deferred_read(context, s))
|
||||
goto out;
|
||||
@@ -277,9 +277,9 @@ static int TestNdrEarRead(int argc, char* argv[])
|
||||
|
||||
0x00, 0x00
|
||||
};
|
||||
KERB_RPC_INTERNAL_NAME intName = { 0 };
|
||||
KERB_RPC_INTERNAL_NAME intName = WINPR_C_ARRAY_INIT;
|
||||
|
||||
wStream staticS = { 0 };
|
||||
wStream staticS = WINPR_C_ARRAY_INIT;
|
||||
wStream* s = Stream_StaticInit(&staticS, payload3, sizeof(payload3));
|
||||
if (!ndr_read_KERB_RPC_INTERNAL_NAME(context, s, NULL, &intName) ||
|
||||
!ndr_treat_deferred_read(context, s))
|
||||
|
||||
Reference in New Issue
Block a user