[winpr] add WINPR_C_ARRAY_INIT

since C23 allows c++ style initializing replace direct use with this
macro
This commit is contained in:
Armin Novak
2026-02-24 20:18:25 +01:00
parent a5609b929e
commit 48267edf2f
434 changed files with 2204 additions and 2195 deletions

View File

@@ -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);

View File

@@ -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++)

View File

@@ -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))