Coverage Report

Created: 2026-05-11 07:01

next uncovered line (L), next uncovered region (R), next uncovered branch (B)
/src/FreeRDP/libfreerdp/common/settings_getters.c
Line
Count
Source
1
/* Generated by  */
2
3
#define FREERDP_SETTINGS_INTERNAL_USE
4
5
#include <freerdp/settings_types_private.h>
6
7
#include "../core/settings.h"
8
9
#include <winpr/assert.h>
10
#include <freerdp/settings.h>
11
#include <freerdp/log.h>
12
13
#define TAG FREERDP_TAG("common.settings")
14
15
static void free_string(char** current, BOOL cleanup)
16
14.0M
{
17
14.0M
  if (cleanup)
18
12.2M
  {
19
12.2M
    if (*current)
20
1.31M
      memset(*current, 0, strlen(*current));
21
12.2M
    free(*current);
22
12.2M
    (*current) = nullptr;
23
12.2M
  }
24
14.0M
}
25
26
static BOOL alloc_empty_string(char** current, const char* next, size_t next_len)
27
14.0M
{
28
14.0M
  if (!next && (next_len > 0))
29
0
  {
30
0
    *current = calloc(next_len, 1);
31
0
    return (*current != nullptr);
32
0
  }
33
14.0M
  return FALSE;
34
14.0M
}
35
36
static BOOL update_string_copy_(char** current, const char* next, size_t next_len, BOOL cleanup)
37
14.0M
{
38
14.0M
  free_string(current, cleanup);
39
40
14.0M
  if (alloc_empty_string(current, next, next_len))
41
0
    return TRUE;
42
43
14.0M
  *current = (next ? strndup(next, next_len) : nullptr);
44
14.0M
  return !next || (*current != nullptr);
45
14.0M
}
46
47
static BOOL update_string_(char** current, char* next, size_t next_len)
48
52.5k
{
49
52.5k
  free_string(current, TRUE);
50
51
52.5k
  if (alloc_empty_string(current, next, next_len))
52
0
    return TRUE;
53
54
52.5k
  *current = next;
55
52.5k
  return !next || (*current != nullptr);
56
52.5k
}
57
58
BOOL freerdp_settings_get_bool(WINPR_ATTR_UNUSED const rdpSettings* settings,
59
                               WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_Bool id)
60
4.34M
{
61
4.34M
  WINPR_ASSERT(settings);
62
63
4.34M
  switch (id)
64
4.34M
  {
65
17.4k
    case FreeRDP_AadSecurity:
66
17.4k
      return settings->AadSecurity;
67
68
17.4k
    case FreeRDP_AllowCacheWaitingList:
69
17.4k
      return settings->AllowCacheWaitingList;
70
71
17.4k
    case FreeRDP_AllowDesktopComposition:
72
17.4k
      return settings->AllowDesktopComposition;
73
74
17.4k
    case FreeRDP_AllowFontSmoothing:
75
17.4k
      return settings->AllowFontSmoothing;
76
77
22.3k
    case FreeRDP_AllowUnanouncedOrdersFromServer:
78
22.3k
      return settings->AllowUnanouncedOrdersFromServer;
79
80
17.4k
    case FreeRDP_AltSecFrameMarkerSupport:
81
17.4k
      return settings->AltSecFrameMarkerSupport;
82
83
17.4k
    case FreeRDP_AsyncChannels:
84
17.4k
      return settings->AsyncChannels;
85
86
17.4k
    case FreeRDP_AsyncUpdate:
87
17.4k
      return settings->AsyncUpdate;
88
89
17.4k
    case FreeRDP_AudioCapture:
90
17.4k
      return settings->AudioCapture;
91
92
17.4k
    case FreeRDP_AudioPlayback:
93
17.4k
      return settings->AudioPlayback;
94
95
17.4k
    case FreeRDP_Authentication:
96
17.4k
      return settings->Authentication;
97
98
17.4k
    case FreeRDP_AuthenticationOnly:
99
17.4k
      return settings->AuthenticationOnly;
100
101
17.4k
    case FreeRDP_AutoAcceptCertificate:
102
17.4k
      return settings->AutoAcceptCertificate;
103
104
17.4k
    case FreeRDP_AutoDenyCertificate:
105
17.4k
      return settings->AutoDenyCertificate;
106
107
17.4k
    case FreeRDP_AutoLogonEnabled:
108
17.4k
      return settings->AutoLogonEnabled;
109
110
17.4k
    case FreeRDP_AutoReconnectionEnabled:
111
17.4k
      return settings->AutoReconnectionEnabled;
112
113
17.4k
    case FreeRDP_SessionHasBeenReconnected:
114
17.4k
      return settings->SessionHasBeenReconnected;
115
116
17.4k
    case FreeRDP_AutoReconnectionPacketSupported:
117
17.4k
      return settings->AutoReconnectionPacketSupported;
118
119
305k
    case FreeRDP_BitmapCacheEnabled:
120
305k
      return settings->BitmapCacheEnabled;
121
122
28.0k
    case FreeRDP_BitmapCachePersistEnabled:
123
28.0k
      return settings->BitmapCachePersistEnabled;
124
125
17.4k
    case FreeRDP_BitmapCacheV3Enabled:
126
17.4k
      return settings->BitmapCacheV3Enabled;
127
128
17.4k
    case FreeRDP_BitmapCompressionDisabled:
129
17.4k
      return settings->BitmapCompressionDisabled;
130
131
17.4k
    case FreeRDP_CertificateCallbackPreferPEM:
132
17.4k
      return settings->CertificateCallbackPreferPEM;
133
134
21.5k
    case FreeRDP_CompressionEnabled:
135
21.5k
      return settings->CompressionEnabled;
136
137
17.4k
    case FreeRDP_ConnectChildSession:
138
17.4k
      return settings->ConnectChildSession;
139
140
17.4k
    case FreeRDP_ConsoleSession:
141
17.4k
      return settings->ConsoleSession;
142
143
17.4k
    case FreeRDP_CredentialsFromStdin:
144
17.4k
      return settings->CredentialsFromStdin;
145
146
149k
    case FreeRDP_DeactivateClientDecoding:
147
149k
      return settings->DeactivateClientDecoding;
148
149
17.4k
    case FreeRDP_Decorations:
150
17.4k
      return settings->Decorations;
151
152
17.4k
    case FreeRDP_DesktopResize:
153
17.4k
      return settings->DesktopResize;
154
155
17.4k
    case FreeRDP_DeviceRedirection:
156
17.4k
      return settings->DeviceRedirection;
157
158
17.4k
    case FreeRDP_DisableCredentialsDelegation:
159
17.4k
      return settings->DisableCredentialsDelegation;
160
161
17.4k
    case FreeRDP_DisableCtrlAltDel:
162
17.4k
      return settings->DisableCtrlAltDel;
163
164
17.4k
    case FreeRDP_DisableCursorBlinking:
165
17.4k
      return settings->DisableCursorBlinking;
166
167
17.4k
    case FreeRDP_DisableCursorShadow:
168
17.4k
      return settings->DisableCursorShadow;
169
170
17.4k
    case FreeRDP_DisableFullWindowDrag:
171
17.4k
      return settings->DisableFullWindowDrag;
172
173
17.4k
    case FreeRDP_DisableMenuAnims:
174
17.4k
      return settings->DisableMenuAnims;
175
176
17.4k
    case FreeRDP_DisableRemoteAppCapsCheck:
177
17.4k
      return settings->DisableRemoteAppCapsCheck;
178
179
17.4k
    case FreeRDP_DisableThemes:
180
17.4k
      return settings->DisableThemes;
181
182
17.4k
    case FreeRDP_DisableWallpaper:
183
17.4k
      return settings->DisableWallpaper;
184
185
17.4k
    case FreeRDP_DrawAllowColorSubsampling:
186
17.4k
      return settings->DrawAllowColorSubsampling;
187
188
17.4k
    case FreeRDP_DrawAllowDynamicColorFidelity:
189
17.4k
      return settings->DrawAllowDynamicColorFidelity;
190
191
17.4k
    case FreeRDP_DrawAllowSkipAlpha:
192
17.4k
      return settings->DrawAllowSkipAlpha;
193
194
17.4k
    case FreeRDP_DrawGdiPlusCacheEnabled:
195
17.4k
      return settings->DrawGdiPlusCacheEnabled;
196
197
17.4k
    case FreeRDP_DrawGdiPlusEnabled:
198
17.4k
      return settings->DrawGdiPlusEnabled;
199
200
17.4k
    case FreeRDP_DrawNineGridEnabled:
201
17.4k
      return settings->DrawNineGridEnabled;
202
203
17.4k
    case FreeRDP_DumpRemoteFx:
204
17.4k
      return settings->DumpRemoteFx;
205
206
17.4k
    case FreeRDP_DynamicDaylightTimeDisabled:
207
17.4k
      return settings->DynamicDaylightTimeDisabled;
208
209
17.4k
    case FreeRDP_DynamicResolutionUpdate:
210
17.4k
      return settings->DynamicResolutionUpdate;
211
212
17.4k
    case FreeRDP_EmbeddedWindow:
213
17.4k
      return settings->EmbeddedWindow;
214
215
17.4k
    case FreeRDP_EnableWindowsKey:
216
17.4k
      return settings->EnableWindowsKey;
217
218
17.4k
    case FreeRDP_EncomspVirtualChannel:
219
17.4k
      return settings->EncomspVirtualChannel;
220
221
17.4k
    case FreeRDP_ExtSecurity:
222
17.4k
      return settings->ExtSecurity;
223
224
17.4k
    case FreeRDP_ExternalCertificateManagement:
225
17.4k
      return settings->ExternalCertificateManagement;
226
227
17.4k
    case FreeRDP_FIPSMode:
228
17.4k
      return settings->FIPSMode;
229
230
17.4k
    case FreeRDP_FastPathInput:
231
17.4k
      return settings->FastPathInput;
232
233
21.4k
    case FreeRDP_FastPathOutput:
234
21.4k
      return settings->FastPathOutput;
235
236
17.4k
    case FreeRDP_ForceEncryptedCsPdu:
237
17.4k
      return settings->ForceEncryptedCsPdu;
238
239
17.4k
    case FreeRDP_ForceMultimon:
240
17.4k
      return settings->ForceMultimon;
241
242
17.4k
    case FreeRDP_FrameMarkerCommandEnabled:
243
17.4k
      return settings->FrameMarkerCommandEnabled;
244
245
17.4k
    case FreeRDP_Fullscreen:
246
17.4k
      return settings->Fullscreen;
247
248
17.4k
    case FreeRDP_GatewayArmTransport:
249
17.4k
      return settings->GatewayArmTransport;
250
251
17.4k
    case FreeRDP_GatewayAvdUseTenantid:
252
17.4k
      return settings->GatewayAvdUseTenantid;
253
254
17.4k
    case FreeRDP_GatewayBypassLocal:
255
17.4k
      return settings->GatewayBypassLocal;
256
257
17.4k
    case FreeRDP_GatewayEnabled:
258
17.4k
      return settings->GatewayEnabled;
259
260
17.4k
    case FreeRDP_GatewayHttpExtAuthSspiNtlm:
261
17.4k
      return settings->GatewayHttpExtAuthSspiNtlm;
262
263
17.4k
    case FreeRDP_GatewayHttpTransport:
264
17.4k
      return settings->GatewayHttpTransport;
265
266
17.4k
    case FreeRDP_GatewayHttpUseWebsockets:
267
17.4k
      return settings->GatewayHttpUseWebsockets;
268
269
17.4k
    case FreeRDP_GatewayIgnoreRedirectionPolicy:
270
17.4k
      return settings->GatewayIgnoreRedirectionPolicy;
271
272
17.4k
    case FreeRDP_GatewayRpcTransport:
273
17.4k
      return settings->GatewayRpcTransport;
274
275
17.4k
    case FreeRDP_GatewayUdpTransport:
276
17.4k
      return settings->GatewayUdpTransport;
277
278
17.4k
    case FreeRDP_GatewayUseSameCredentials:
279
17.4k
      return settings->GatewayUseSameCredentials;
280
281
17.4k
    case FreeRDP_GfxAVC444:
282
17.4k
      return settings->GfxAVC444;
283
284
17.4k
    case FreeRDP_GfxAVC444v2:
285
17.4k
      return settings->GfxAVC444v2;
286
287
17.4k
    case FreeRDP_GfxCodecAV1:
288
17.4k
      return settings->GfxCodecAV1;
289
290
17.4k
    case FreeRDP_GfxH264:
291
17.4k
      return settings->GfxH264;
292
293
17.4k
    case FreeRDP_GfxPlanar:
294
17.4k
      return settings->GfxPlanar;
295
296
17.4k
    case FreeRDP_GfxProgressive:
297
17.4k
      return settings->GfxProgressive;
298
299
17.4k
    case FreeRDP_GfxProgressiveV2:
300
17.4k
      return settings->GfxProgressiveV2;
301
302
17.4k
    case FreeRDP_GfxSendQoeAck:
303
17.4k
      return settings->GfxSendQoeAck;
304
305
17.4k
    case FreeRDP_GfxSmallCache:
306
17.4k
      return settings->GfxSmallCache;
307
308
17.4k
    case FreeRDP_GfxSuspendFrameAck:
309
17.4k
      return settings->GfxSuspendFrameAck;
310
311
17.4k
    case FreeRDP_GfxThinClient:
312
17.4k
      return settings->GfxThinClient;
313
314
17.4k
    case FreeRDP_GrabKeyboard:
315
17.4k
      return settings->GrabKeyboard;
316
317
17.4k
    case FreeRDP_GrabMouse:
318
17.4k
      return settings->GrabMouse;
319
320
21.0k
    case FreeRDP_HasExtendedMouseEvent:
321
21.0k
      return settings->HasExtendedMouseEvent;
322
323
17.4k
    case FreeRDP_HasHorizontalWheel:
324
17.4k
      return settings->HasHorizontalWheel;
325
326
17.4k
    case FreeRDP_HasMonitorAttributes:
327
17.4k
      return settings->HasMonitorAttributes;
328
329
48.6k
    case FreeRDP_HasQoeEvent:
330
48.6k
      return settings->HasQoeEvent;
331
332
22.5k
    case FreeRDP_HasRelativeMouseEvent:
333
22.5k
      return settings->HasRelativeMouseEvent;
334
335
17.4k
    case FreeRDP_HiDefRemoteApp:
336
17.4k
      return settings->HiDefRemoteApp;
337
338
17.4k
    case FreeRDP_IPv6Enabled:
339
17.4k
      return settings->IPv6Enabled;
340
341
17.4k
    case FreeRDP_IgnoreCertificate:
342
17.4k
      return settings->IgnoreCertificate;
343
344
17.4k
    case FreeRDP_IgnoreInvalidDevices:
345
17.4k
      return settings->IgnoreInvalidDevices;
346
347
17.4k
    case FreeRDP_JpegCodec:
348
17.4k
      return settings->JpegCodec;
349
350
17.4k
    case FreeRDP_KerberosRdgIsProxy:
351
17.4k
      return settings->KerberosRdgIsProxy;
352
353
17.4k
    case FreeRDP_ListMonitors:
354
17.4k
      return settings->ListMonitors;
355
356
17.4k
    case FreeRDP_LocalConnection:
357
17.4k
      return settings->LocalConnection;
358
359
17.4k
    case FreeRDP_LogonErrors:
360
17.4k
      return settings->LogonErrors;
361
362
17.4k
    case FreeRDP_LogonNotify:
363
17.4k
      return settings->LogonNotify;
364
365
17.4k
    case FreeRDP_LongCredentialsSupported:
366
17.4k
      return settings->LongCredentialsSupported;
367
368
17.4k
    case FreeRDP_LyncRdpMode:
369
17.4k
      return settings->LyncRdpMode;
370
371
17.4k
    case FreeRDP_MaximizeShell:
372
17.4k
      return settings->MaximizeShell;
373
374
17.4k
    case FreeRDP_MouseAttached:
375
17.4k
      return settings->MouseAttached;
376
377
17.4k
    case FreeRDP_MouseHasWheel:
378
17.4k
      return settings->MouseHasWheel;
379
380
17.4k
    case FreeRDP_MouseMotion:
381
17.4k
      return settings->MouseMotion;
382
383
17.4k
    case FreeRDP_MouseUseRelativeMove:
384
17.4k
      return settings->MouseUseRelativeMove;
385
386
17.4k
    case FreeRDP_MstscCookieMode:
387
17.4k
      return settings->MstscCookieMode;
388
389
17.4k
    case FreeRDP_MultiTouchGestures:
390
17.4k
      return settings->MultiTouchGestures;
391
392
17.4k
    case FreeRDP_MultiTouchInput:
393
17.4k
      return settings->MultiTouchInput;
394
395
17.4k
    case FreeRDP_NSCodec:
396
17.4k
      return settings->NSCodec;
397
398
17.4k
    case FreeRDP_NSCodecAllowDynamicColorFidelity:
399
17.4k
      return settings->NSCodecAllowDynamicColorFidelity;
400
401
17.4k
    case FreeRDP_NSCodecAllowSubsampling:
402
17.4k
      return settings->NSCodecAllowSubsampling;
403
404
17.4k
    case FreeRDP_NegotiateSecurityLayer:
405
17.4k
      return settings->NegotiateSecurityLayer;
406
407
25.2k
    case FreeRDP_NetworkAutoDetect:
408
25.2k
      return settings->NetworkAutoDetect;
409
410
17.4k
    case FreeRDP_NlaSecurity:
411
17.4k
      return settings->NlaSecurity;
412
413
17.4k
    case FreeRDP_NoBitmapCompressionHeader:
414
17.4k
      return settings->NoBitmapCompressionHeader;
415
416
17.4k
    case FreeRDP_OldLicenseBehaviour:
417
17.4k
      return settings->OldLicenseBehaviour;
418
419
17.4k
    case FreeRDP_PasswordIsSmartcardPin:
420
17.4k
      return settings->PasswordIsSmartcardPin;
421
422
17.4k
    case FreeRDP_PercentScreenUseHeight:
423
17.4k
      return settings->PercentScreenUseHeight;
424
425
17.4k
    case FreeRDP_PercentScreenUseWidth:
426
17.4k
      return settings->PercentScreenUseWidth;
427
428
17.4k
    case FreeRDP_PlayRemoteFx:
429
17.4k
      return settings->PlayRemoteFx;
430
431
17.4k
    case FreeRDP_PreferIPv6OverIPv4:
432
17.4k
      return settings->PreferIPv6OverIPv4;
433
434
17.4k
    case FreeRDP_PrintReconnectCookie:
435
17.4k
      return settings->PrintReconnectCookie;
436
437
17.4k
    case FreeRDP_PromptForCredentials:
438
17.4k
      return settings->PromptForCredentials;
439
440
17.4k
    case FreeRDP_RdpSecurity:
441
17.4k
      return settings->RdpSecurity;
442
443
17.4k
    case FreeRDP_RdstlsSecurity:
444
17.4k
      return settings->RdstlsSecurity;
445
446
17.4k
    case FreeRDP_RedirectClipboard:
447
17.4k
      return settings->RedirectClipboard;
448
449
17.4k
    case FreeRDP_RedirectDrives:
450
17.4k
      return settings->RedirectDrives;
451
452
17.4k
    case FreeRDP_RedirectHomeDrive:
453
17.4k
      return settings->RedirectHomeDrive;
454
455
17.4k
    case FreeRDP_RedirectParallelPorts:
456
17.4k
      return settings->RedirectParallelPorts;
457
458
17.4k
    case FreeRDP_RedirectPrinters:
459
17.4k
      return settings->RedirectPrinters;
460
461
17.4k
    case FreeRDP_RedirectSerialPorts:
462
17.4k
      return settings->RedirectSerialPorts;
463
464
17.4k
    case FreeRDP_RedirectSmartCards:
465
17.4k
      return settings->RedirectSmartCards;
466
467
17.4k
    case FreeRDP_RedirectWebAuthN:
468
17.4k
      return settings->RedirectWebAuthN;
469
470
17.4k
    case FreeRDP_RefreshRect:
471
17.4k
      return settings->RefreshRect;
472
473
17.4k
    case FreeRDP_RemdeskVirtualChannel:
474
17.4k
      return settings->RemdeskVirtualChannel;
475
476
17.4k
    case FreeRDP_RemoteAppLanguageBarSupported:
477
17.4k
      return settings->RemoteAppLanguageBarSupported;
478
479
17.4k
    case FreeRDP_RemoteApplicationMode:
480
17.4k
      return settings->RemoteApplicationMode;
481
482
17.4k
    case FreeRDP_RemoteAssistanceMode:
483
17.4k
      return settings->RemoteAssistanceMode;
484
485
17.4k
    case FreeRDP_RemoteAssistanceRequestControl:
486
17.4k
      return settings->RemoteAssistanceRequestControl;
487
488
17.4k
    case FreeRDP_RemoteConsoleAudio:
489
17.4k
      return settings->RemoteConsoleAudio;
490
491
17.4k
    case FreeRDP_RemoteCredentialGuard:
492
17.4k
      return settings->RemoteCredentialGuard;
493
494
17.4k
    case FreeRDP_RemoteFxCodec:
495
17.4k
      return settings->RemoteFxCodec;
496
497
17.4k
    case FreeRDP_RemoteFxImageCodec:
498
17.4k
      return settings->RemoteFxImageCodec;
499
500
17.4k
    case FreeRDP_RemoteFxOnly:
501
17.4k
      return settings->RemoteFxOnly;
502
503
17.4k
    case FreeRDP_RestrictedAdminModeRequired:
504
17.4k
      return settings->RestrictedAdminModeRequired;
505
506
17.4k
    case FreeRDP_RestrictedAdminModeSupported:
507
17.4k
      return settings->RestrictedAdminModeSupported;
508
509
17.4k
    case FreeRDP_SaltedChecksum:
510
17.4k
      return settings->SaltedChecksum;
511
512
17.4k
    case FreeRDP_SendPreconnectionPdu:
513
17.4k
      return settings->SendPreconnectionPdu;
514
515
17.4k
    case FreeRDP_ServerLicenseRequired:
516
17.4k
      return settings->ServerLicenseRequired;
517
518
393k
    case FreeRDP_ServerMode:
519
393k
      return settings->ServerMode;
520
521
17.4k
    case FreeRDP_SmartSizing:
522
17.4k
      return settings->SmartSizing;
523
524
17.4k
    case FreeRDP_SmartcardEmulation:
525
17.4k
      return settings->SmartcardEmulation;
526
527
17.4k
    case FreeRDP_SmartcardLogon:
528
17.4k
      return settings->SmartcardLogon;
529
530
17.4k
    case FreeRDP_SoftwareGdi:
531
17.4k
      return settings->SoftwareGdi;
532
533
17.4k
    case FreeRDP_SoundBeepsEnabled:
534
17.4k
      return settings->SoundBeepsEnabled;
535
536
17.4k
    case FreeRDP_SpanMonitors:
537
17.4k
      return settings->SpanMonitors;
538
539
17.4k
    case FreeRDP_SupportAsymetricKeys:
540
17.4k
      return settings->SupportAsymetricKeys;
541
542
17.4k
    case FreeRDP_SupportDisplayControl:
543
17.4k
      return settings->SupportDisplayControl;
544
545
17.4k
    case FreeRDP_SupportDynamicChannels:
546
17.4k
      return settings->SupportDynamicChannels;
547
548
18.0k
    case FreeRDP_SupportDynamicTimeZone:
549
18.0k
      return settings->SupportDynamicTimeZone;
550
551
17.4k
    case FreeRDP_SupportEchoChannel:
552
17.4k
      return settings->SupportEchoChannel;
553
554
17.4k
    case FreeRDP_SupportEdgeActionV1:
555
17.4k
      return settings->SupportEdgeActionV1;
556
557
17.4k
    case FreeRDP_SupportEdgeActionV2:
558
17.4k
      return settings->SupportEdgeActionV2;
559
560
17.4k
    case FreeRDP_SupportErrorInfoPdu:
561
17.4k
      return settings->SupportErrorInfoPdu;
562
563
17.4k
    case FreeRDP_SupportGeometryTracking:
564
17.4k
      return settings->SupportGeometryTracking;
565
566
17.4k
    case FreeRDP_SupportGraphicsPipeline:
567
17.4k
      return settings->SupportGraphicsPipeline;
568
569
17.4k
    case FreeRDP_SupportHeartbeatPdu:
570
17.4k
      return settings->SupportHeartbeatPdu;
571
572
17.4k
    case FreeRDP_SupportMonitorLayoutPdu:
573
17.4k
      return settings->SupportMonitorLayoutPdu;
574
575
17.4k
    case FreeRDP_SupportMultitransport:
576
17.4k
      return settings->SupportMultitransport;
577
578
17.4k
    case FreeRDP_SupportSSHAgentChannel:
579
17.4k
      return settings->SupportSSHAgentChannel;
580
581
17.4k
    case FreeRDP_SupportSkipChannelJoin:
582
17.4k
      return settings->SupportSkipChannelJoin;
583
584
17.4k
    case FreeRDP_SupportStatusInfoPdu:
585
17.4k
      return settings->SupportStatusInfoPdu;
586
587
17.4k
    case FreeRDP_SupportVideoOptimized:
588
17.4k
      return settings->SupportVideoOptimized;
589
590
17.4k
    case FreeRDP_SuppressOutput:
591
17.4k
      return settings->SuppressOutput;
592
593
17.4k
    case FreeRDP_SurfaceCommandsEnabled:
594
17.4k
      return settings->SurfaceCommandsEnabled;
595
596
17.4k
    case FreeRDP_SurfaceFrameMarkerEnabled:
597
17.4k
      return settings->SurfaceFrameMarkerEnabled;
598
599
17.4k
    case FreeRDP_SuspendInput:
600
17.4k
      return settings->SuspendInput;
601
602
17.4k
    case FreeRDP_SynchronousDynamicChannels:
603
17.4k
      return settings->SynchronousDynamicChannels;
604
605
17.4k
    case FreeRDP_SynchronousStaticChannels:
606
17.4k
      return settings->SynchronousStaticChannels;
607
608
25.5k
    case FreeRDP_TcpKeepAlive:
609
25.5k
      return settings->TcpKeepAlive;
610
611
17.4k
    case FreeRDP_TlsSecurity:
612
17.4k
      return settings->TlsSecurity;
613
614
17.4k
    case FreeRDP_ToggleFullscreen:
615
17.4k
      return settings->ToggleFullscreen;
616
617
17.4k
    case FreeRDP_TransportDump:
618
17.4k
      return settings->TransportDump;
619
620
17.7k
    case FreeRDP_TransportDumpReplay:
621
17.7k
      return settings->TransportDumpReplay;
622
623
17.4k
    case FreeRDP_TransportDumpReplayNodelay:
624
17.4k
      return settings->TransportDumpReplayNodelay;
625
626
46.0k
    case FreeRDP_UnicodeInput:
627
46.0k
      return settings->UnicodeInput;
628
629
17.4k
    case FreeRDP_UnmapButtons:
630
17.4k
      return settings->UnmapButtons;
631
632
17.4k
    case FreeRDP_UseCommonStdioCallbacks:
633
17.4k
      return settings->UseCommonStdioCallbacks;
634
635
17.4k
    case FreeRDP_UseMultimon:
636
17.4k
      return settings->UseMultimon;
637
638
17.4k
    case FreeRDP_UseRdpSecurityLayer:
639
17.4k
      return settings->UseRdpSecurityLayer;
640
641
17.4k
    case FreeRDP_UsingSavedCredentials:
642
17.4k
      return settings->UsingSavedCredentials;
643
644
17.4k
    case FreeRDP_VideoDisable:
645
17.4k
      return settings->VideoDisable;
646
647
17.4k
    case FreeRDP_VmConnectMode:
648
17.4k
      return settings->VmConnectMode;
649
650
17.4k
    case FreeRDP_WaitForOutputBufferFlush:
651
17.4k
      return settings->WaitForOutputBufferFlush;
652
653
17.4k
    case FreeRDP_Workarea:
654
17.4k
      return settings->Workarea;
655
656
0
    default:
657
0
      WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
658
0
               freerdp_settings_get_type_name_for_key(id));
659
0
      WINPR_ASSERT(FALSE);
660
0
      return FALSE;
661
4.34M
  }
662
4.34M
}
663
664
BOOL freerdp_settings_set_bool(WINPR_ATTR_UNUSED rdpSettings* settings,
665
                               WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_Bool id, BOOL val)
666
10.1M
{
667
10.1M
  union
668
10.1M
  {
669
10.1M
    void* v;
670
10.1M
    const void* cv;
671
10.1M
    BOOL c;
672
10.1M
    const BOOL cc;
673
10.1M
  } cnv;
674
10.1M
  WINPR_ASSERT(settings);
675
676
10.1M
  cnv.c = val;
677
678
10.1M
  switch (id)
679
10.1M
  {
680
87.2k
    case FreeRDP_AadSecurity:
681
87.2k
      settings->AadSecurity = cnv.c;
682
87.2k
      break;
683
684
87.2k
    case FreeRDP_AllowCacheWaitingList:
685
87.2k
      settings->AllowCacheWaitingList = cnv.c;
686
87.2k
      break;
687
688
87.8k
    case FreeRDP_AllowDesktopComposition:
689
87.8k
      settings->AllowDesktopComposition = cnv.c;
690
87.8k
      break;
691
692
87.8k
    case FreeRDP_AllowFontSmoothing:
693
87.8k
      settings->AllowFontSmoothing = cnv.c;
694
87.8k
      break;
695
696
17.4k
    case FreeRDP_AllowUnanouncedOrdersFromServer:
697
17.4k
      settings->AllowUnanouncedOrdersFromServer = cnv.c;
698
17.4k
      break;
699
700
17.4k
    case FreeRDP_AltSecFrameMarkerSupport:
701
17.4k
      settings->AltSecFrameMarkerSupport = cnv.c;
702
17.4k
      break;
703
704
17.4k
    case FreeRDP_AsyncChannels:
705
17.4k
      settings->AsyncChannels = cnv.c;
706
17.4k
      break;
707
708
17.4k
    case FreeRDP_AsyncUpdate:
709
17.4k
      settings->AsyncUpdate = cnv.c;
710
17.4k
      break;
711
712
17.4k
    case FreeRDP_AudioCapture:
713
17.4k
      settings->AudioCapture = cnv.c;
714
17.4k
      break;
715
716
17.4k
    case FreeRDP_AudioPlayback:
717
17.4k
      settings->AudioPlayback = cnv.c;
718
17.4k
      break;
719
720
87.2k
    case FreeRDP_Authentication:
721
87.2k
      settings->Authentication = cnv.c;
722
87.2k
      break;
723
724
87.2k
    case FreeRDP_AuthenticationOnly:
725
87.2k
      settings->AuthenticationOnly = cnv.c;
726
87.2k
      break;
727
728
17.4k
    case FreeRDP_AutoAcceptCertificate:
729
17.4k
      settings->AutoAcceptCertificate = cnv.c;
730
17.4k
      break;
731
732
17.4k
    case FreeRDP_AutoDenyCertificate:
733
17.4k
      settings->AutoDenyCertificate = cnv.c;
734
17.4k
      break;
735
736
17.4k
    case FreeRDP_AutoLogonEnabled:
737
17.4k
      settings->AutoLogonEnabled = cnv.c;
738
17.4k
      break;
739
740
87.2k
    case FreeRDP_AutoReconnectionEnabled:
741
87.2k
      settings->AutoReconnectionEnabled = cnv.c;
742
87.2k
      break;
743
744
17.4k
    case FreeRDP_SessionHasBeenReconnected:
745
17.4k
      settings->SessionHasBeenReconnected = cnv.c;
746
17.4k
      break;
747
748
17.4k
    case FreeRDP_AutoReconnectionPacketSupported:
749
17.4k
      settings->AutoReconnectionPacketSupported = cnv.c;
750
17.4k
      break;
751
752
34.7k
    case FreeRDP_BitmapCacheEnabled:
753
34.7k
      settings->BitmapCacheEnabled = cnv.c;
754
34.7k
      break;
755
756
36.7k
    case FreeRDP_BitmapCachePersistEnabled:
757
36.7k
      settings->BitmapCachePersistEnabled = cnv.c;
758
36.7k
      break;
759
760
17.4k
    case FreeRDP_BitmapCacheV3Enabled:
761
17.4k
      settings->BitmapCacheV3Enabled = cnv.c;
762
17.4k
      break;
763
764
17.4k
    case FreeRDP_BitmapCompressionDisabled:
765
17.4k
      settings->BitmapCompressionDisabled = cnv.c;
766
17.4k
      break;
767
768
87.2k
    case FreeRDP_CertificateCallbackPreferPEM:
769
87.2k
      settings->CertificateCallbackPreferPEM = cnv.c;
770
87.2k
      break;
771
772
87.2k
    case FreeRDP_CompressionEnabled:
773
87.2k
      settings->CompressionEnabled = cnv.c;
774
87.2k
      break;
775
776
17.4k
    case FreeRDP_ConnectChildSession:
777
17.4k
      settings->ConnectChildSession = cnv.c;
778
17.4k
      break;
779
780
17.4k
    case FreeRDP_ConsoleSession:
781
17.4k
      settings->ConsoleSession = cnv.c;
782
17.4k
      break;
783
784
87.2k
    case FreeRDP_CredentialsFromStdin:
785
87.2k
      settings->CredentialsFromStdin = cnv.c;
786
87.2k
      break;
787
788
17.4k
    case FreeRDP_DeactivateClientDecoding:
789
17.4k
      settings->DeactivateClientDecoding = cnv.c;
790
17.4k
      break;
791
792
87.2k
    case FreeRDP_Decorations:
793
87.2k
      settings->Decorations = cnv.c;
794
87.2k
      break;
795
796
87.2k
    case FreeRDP_DesktopResize:
797
87.2k
      settings->DesktopResize = cnv.c;
798
87.2k
      break;
799
800
17.4k
    case FreeRDP_DeviceRedirection:
801
17.4k
      settings->DeviceRedirection = cnv.c;
802
17.4k
      break;
803
804
87.2k
    case FreeRDP_DisableCredentialsDelegation:
805
87.2k
      settings->DisableCredentialsDelegation = cnv.c;
806
87.2k
      break;
807
808
17.4k
    case FreeRDP_DisableCtrlAltDel:
809
17.4k
      settings->DisableCtrlAltDel = cnv.c;
810
17.4k
      break;
811
812
17.4k
    case FreeRDP_DisableCursorBlinking:
813
17.4k
      settings->DisableCursorBlinking = cnv.c;
814
17.4k
      break;
815
816
17.4k
    case FreeRDP_DisableCursorShadow:
817
17.4k
      settings->DisableCursorShadow = cnv.c;
818
17.4k
      break;
819
820
87.8k
    case FreeRDP_DisableFullWindowDrag:
821
87.8k
      settings->DisableFullWindowDrag = cnv.c;
822
87.8k
      break;
823
824
87.8k
    case FreeRDP_DisableMenuAnims:
825
87.8k
      settings->DisableMenuAnims = cnv.c;
826
87.8k
      break;
827
828
17.4k
    case FreeRDP_DisableRemoteAppCapsCheck:
829
17.4k
      settings->DisableRemoteAppCapsCheck = cnv.c;
830
17.4k
      break;
831
832
87.8k
    case FreeRDP_DisableThemes:
833
87.8k
      settings->DisableThemes = cnv.c;
834
87.8k
      break;
835
836
87.8k
    case FreeRDP_DisableWallpaper:
837
87.8k
      settings->DisableWallpaper = cnv.c;
838
87.8k
      break;
839
840
87.2k
    case FreeRDP_DrawAllowColorSubsampling:
841
87.2k
      settings->DrawAllowColorSubsampling = cnv.c;
842
87.2k
      break;
843
844
87.2k
    case FreeRDP_DrawAllowDynamicColorFidelity:
845
87.2k
      settings->DrawAllowDynamicColorFidelity = cnv.c;
846
87.2k
      break;
847
848
87.2k
    case FreeRDP_DrawAllowSkipAlpha:
849
87.2k
      settings->DrawAllowSkipAlpha = cnv.c;
850
87.2k
      break;
851
852
17.4k
    case FreeRDP_DrawGdiPlusCacheEnabled:
853
17.4k
      settings->DrawGdiPlusCacheEnabled = cnv.c;
854
17.4k
      break;
855
856
87.2k
    case FreeRDP_DrawGdiPlusEnabled:
857
87.2k
      settings->DrawGdiPlusEnabled = cnv.c;
858
87.2k
      break;
859
860
17.4k
    case FreeRDP_DrawNineGridEnabled:
861
17.4k
      settings->DrawNineGridEnabled = cnv.c;
862
17.4k
      break;
863
864
17.4k
    case FreeRDP_DumpRemoteFx:
865
17.4k
      settings->DumpRemoteFx = cnv.c;
866
17.4k
      break;
867
868
69.8k
    case FreeRDP_DynamicDaylightTimeDisabled:
869
69.8k
      settings->DynamicDaylightTimeDisabled = cnv.c;
870
69.8k
      break;
871
872
17.4k
    case FreeRDP_DynamicResolutionUpdate:
873
17.4k
      settings->DynamicResolutionUpdate = cnv.c;
874
17.4k
      break;
875
876
17.4k
    case FreeRDP_EmbeddedWindow:
877
17.4k
      settings->EmbeddedWindow = cnv.c;
878
17.4k
      break;
879
880
17.4k
    case FreeRDP_EnableWindowsKey:
881
17.4k
      settings->EnableWindowsKey = cnv.c;
882
17.4k
      break;
883
884
17.4k
    case FreeRDP_EncomspVirtualChannel:
885
17.4k
      settings->EncomspVirtualChannel = cnv.c;
886
17.4k
      break;
887
888
87.2k
    case FreeRDP_ExtSecurity:
889
87.2k
      settings->ExtSecurity = cnv.c;
890
87.2k
      break;
891
892
17.4k
    case FreeRDP_ExternalCertificateManagement:
893
17.4k
      settings->ExternalCertificateManagement = cnv.c;
894
17.4k
      break;
895
896
87.2k
    case FreeRDP_FIPSMode:
897
87.2k
      settings->FIPSMode = cnv.c;
898
87.2k
      break;
899
900
113k
    case FreeRDP_FastPathInput:
901
113k
      settings->FastPathInput = cnv.c;
902
113k
      break;
903
904
87.2k
    case FreeRDP_FastPathOutput:
905
87.2k
      settings->FastPathOutput = cnv.c;
906
87.2k
      break;
907
908
17.4k
    case FreeRDP_ForceEncryptedCsPdu:
909
17.4k
      settings->ForceEncryptedCsPdu = cnv.c;
910
17.4k
      break;
911
912
17.4k
    case FreeRDP_ForceMultimon:
913
17.4k
      settings->ForceMultimon = cnv.c;
914
17.4k
      break;
915
916
87.2k
    case FreeRDP_FrameMarkerCommandEnabled:
917
87.2k
      settings->FrameMarkerCommandEnabled = cnv.c;
918
87.2k
      break;
919
920
87.2k
    case FreeRDP_Fullscreen:
921
87.2k
      settings->Fullscreen = cnv.c;
922
87.2k
      break;
923
924
87.2k
    case FreeRDP_GatewayArmTransport:
925
87.2k
      settings->GatewayArmTransport = cnv.c;
926
87.2k
      break;
927
928
61.7k
    case FreeRDP_GatewayAvdUseTenantid:
929
61.7k
      settings->GatewayAvdUseTenantid = cnv.c;
930
61.7k
      break;
931
932
87.2k
    case FreeRDP_GatewayBypassLocal:
933
87.2k
      settings->GatewayBypassLocal = cnv.c;
934
87.2k
      break;
935
936
17.4k
    case FreeRDP_GatewayEnabled:
937
17.4k
      settings->GatewayEnabled = cnv.c;
938
17.4k
      break;
939
940
87.2k
    case FreeRDP_GatewayHttpExtAuthSspiNtlm:
941
87.2k
      settings->GatewayHttpExtAuthSspiNtlm = cnv.c;
942
87.2k
      break;
943
944
87.2k
    case FreeRDP_GatewayHttpTransport:
945
87.2k
      settings->GatewayHttpTransport = cnv.c;
946
87.2k
      break;
947
948
87.2k
    case FreeRDP_GatewayHttpUseWebsockets:
949
87.2k
      settings->GatewayHttpUseWebsockets = cnv.c;
950
87.2k
      break;
951
952
17.4k
    case FreeRDP_GatewayIgnoreRedirectionPolicy:
953
17.4k
      settings->GatewayIgnoreRedirectionPolicy = cnv.c;
954
17.4k
      break;
955
956
87.2k
    case FreeRDP_GatewayRpcTransport:
957
87.2k
      settings->GatewayRpcTransport = cnv.c;
958
87.2k
      break;
959
960
87.2k
    case FreeRDP_GatewayUdpTransport:
961
87.2k
      settings->GatewayUdpTransport = cnv.c;
962
87.2k
      break;
963
964
87.2k
    case FreeRDP_GatewayUseSameCredentials:
965
87.2k
      settings->GatewayUseSameCredentials = cnv.c;
966
87.2k
      break;
967
968
87.2k
    case FreeRDP_GfxAVC444:
969
87.2k
      settings->GfxAVC444 = cnv.c;
970
87.2k
      break;
971
972
17.4k
    case FreeRDP_GfxAVC444v2:
973
17.4k
      settings->GfxAVC444v2 = cnv.c;
974
17.4k
      break;
975
976
87.2k
    case FreeRDP_GfxCodecAV1:
977
87.2k
      settings->GfxCodecAV1 = cnv.c;
978
87.2k
      break;
979
980
87.2k
    case FreeRDP_GfxH264:
981
87.2k
      settings->GfxH264 = cnv.c;
982
87.2k
      break;
983
984
87.2k
    case FreeRDP_GfxPlanar:
985
87.2k
      settings->GfxPlanar = cnv.c;
986
87.2k
      break;
987
988
87.2k
    case FreeRDP_GfxProgressive:
989
87.2k
      settings->GfxProgressive = cnv.c;
990
87.2k
      break;
991
992
87.2k
    case FreeRDP_GfxProgressiveV2:
993
87.2k
      settings->GfxProgressiveV2 = cnv.c;
994
87.2k
      break;
995
996
87.2k
    case FreeRDP_GfxSendQoeAck:
997
87.2k
      settings->GfxSendQoeAck = cnv.c;
998
87.2k
      break;
999
1000
87.2k
    case FreeRDP_GfxSmallCache:
1001
87.2k
      settings->GfxSmallCache = cnv.c;
1002
87.2k
      break;
1003
1004
17.4k
    case FreeRDP_GfxSuspendFrameAck:
1005
17.4k
      settings->GfxSuspendFrameAck = cnv.c;
1006
17.4k
      break;
1007
1008
87.2k
    case FreeRDP_GfxThinClient:
1009
87.2k
      settings->GfxThinClient = cnv.c;
1010
87.2k
      break;
1011
1012
87.2k
    case FreeRDP_GrabKeyboard:
1013
87.2k
      settings->GrabKeyboard = cnv.c;
1014
87.2k
      break;
1015
1016
17.4k
    case FreeRDP_GrabMouse:
1017
17.4k
      settings->GrabMouse = cnv.c;
1018
17.4k
      break;
1019
1020
113k
    case FreeRDP_HasExtendedMouseEvent:
1021
113k
      settings->HasExtendedMouseEvent = cnv.c;
1022
113k
      break;
1023
1024
113k
    case FreeRDP_HasHorizontalWheel:
1025
113k
      settings->HasHorizontalWheel = cnv.c;
1026
113k
      break;
1027
1028
17.4k
    case FreeRDP_HasMonitorAttributes:
1029
17.4k
      settings->HasMonitorAttributes = cnv.c;
1030
17.4k
      break;
1031
1032
113k
    case FreeRDP_HasQoeEvent:
1033
113k
      settings->HasQoeEvent = cnv.c;
1034
113k
      break;
1035
1036
113k
    case FreeRDP_HasRelativeMouseEvent:
1037
113k
      settings->HasRelativeMouseEvent = cnv.c;
1038
113k
      break;
1039
1040
87.2k
    case FreeRDP_HiDefRemoteApp:
1041
87.2k
      settings->HiDefRemoteApp = cnv.c;
1042
87.2k
      break;
1043
1044
17.4k
    case FreeRDP_IPv6Enabled:
1045
17.4k
      settings->IPv6Enabled = cnv.c;
1046
17.4k
      break;
1047
1048
17.4k
    case FreeRDP_IgnoreCertificate:
1049
17.4k
      settings->IgnoreCertificate = cnv.c;
1050
17.4k
      break;
1051
1052
17.4k
    case FreeRDP_IgnoreInvalidDevices:
1053
17.4k
      settings->IgnoreInvalidDevices = cnv.c;
1054
17.4k
      break;
1055
1056
20.3k
    case FreeRDP_JpegCodec:
1057
20.3k
      settings->JpegCodec = cnv.c;
1058
20.3k
      break;
1059
1060
17.4k
    case FreeRDP_KerberosRdgIsProxy:
1061
17.4k
      settings->KerberosRdgIsProxy = cnv.c;
1062
17.4k
      break;
1063
1064
17.4k
    case FreeRDP_ListMonitors:
1065
17.4k
      settings->ListMonitors = cnv.c;
1066
17.4k
      break;
1067
1068
17.4k
    case FreeRDP_LocalConnection:
1069
17.4k
      settings->LocalConnection = cnv.c;
1070
17.4k
      break;
1071
1072
17.4k
    case FreeRDP_LogonErrors:
1073
17.4k
      settings->LogonErrors = cnv.c;
1074
17.4k
      break;
1075
1076
87.2k
    case FreeRDP_LogonNotify:
1077
87.2k
      settings->LogonNotify = cnv.c;
1078
87.2k
      break;
1079
1080
87.2k
    case FreeRDP_LongCredentialsSupported:
1081
87.2k
      settings->LongCredentialsSupported = cnv.c;
1082
87.2k
      break;
1083
1084
17.4k
    case FreeRDP_LyncRdpMode:
1085
17.4k
      settings->LyncRdpMode = cnv.c;
1086
17.4k
      break;
1087
1088
17.4k
    case FreeRDP_MaximizeShell:
1089
17.4k
      settings->MaximizeShell = cnv.c;
1090
17.4k
      break;
1091
1092
17.4k
    case FreeRDP_MouseAttached:
1093
17.4k
      settings->MouseAttached = cnv.c;
1094
17.4k
      break;
1095
1096
17.4k
    case FreeRDP_MouseHasWheel:
1097
17.4k
      settings->MouseHasWheel = cnv.c;
1098
17.4k
      break;
1099
1100
87.2k
    case FreeRDP_MouseMotion:
1101
87.2k
      settings->MouseMotion = cnv.c;
1102
87.2k
      break;
1103
1104
17.4k
    case FreeRDP_MouseUseRelativeMove:
1105
17.4k
      settings->MouseUseRelativeMove = cnv.c;
1106
17.4k
      break;
1107
1108
87.2k
    case FreeRDP_MstscCookieMode:
1109
87.2k
      settings->MstscCookieMode = cnv.c;
1110
87.2k
      break;
1111
1112
17.4k
    case FreeRDP_MultiTouchGestures:
1113
17.4k
      settings->MultiTouchGestures = cnv.c;
1114
17.4k
      break;
1115
1116
17.4k
    case FreeRDP_MultiTouchInput:
1117
17.4k
      settings->MultiTouchInput = cnv.c;
1118
17.4k
      break;
1119
1120
21.2k
    case FreeRDP_NSCodec:
1121
21.2k
      settings->NSCodec = cnv.c;
1122
21.2k
      break;
1123
1124
87.2k
    case FreeRDP_NSCodecAllowDynamicColorFidelity:
1125
87.2k
      settings->NSCodecAllowDynamicColorFidelity = cnv.c;
1126
87.2k
      break;
1127
1128
87.2k
    case FreeRDP_NSCodecAllowSubsampling:
1129
87.2k
      settings->NSCodecAllowSubsampling = cnv.c;
1130
87.2k
      break;
1131
1132
87.2k
    case FreeRDP_NegotiateSecurityLayer:
1133
87.2k
      settings->NegotiateSecurityLayer = cnv.c;
1134
87.2k
      break;
1135
1136
87.2k
    case FreeRDP_NetworkAutoDetect:
1137
87.2k
      settings->NetworkAutoDetect = cnv.c;
1138
87.2k
      break;
1139
1140
87.2k
    case FreeRDP_NlaSecurity:
1141
87.2k
      settings->NlaSecurity = cnv.c;
1142
87.2k
      break;
1143
1144
87.2k
    case FreeRDP_NoBitmapCompressionHeader:
1145
87.2k
      settings->NoBitmapCompressionHeader = cnv.c;
1146
87.2k
      break;
1147
1148
17.4k
    case FreeRDP_OldLicenseBehaviour:
1149
17.4k
      settings->OldLicenseBehaviour = cnv.c;
1150
17.4k
      break;
1151
1152
17.4k
    case FreeRDP_PasswordIsSmartcardPin:
1153
17.4k
      settings->PasswordIsSmartcardPin = cnv.c;
1154
17.4k
      break;
1155
1156
17.4k
    case FreeRDP_PercentScreenUseHeight:
1157
17.4k
      settings->PercentScreenUseHeight = cnv.c;
1158
17.4k
      break;
1159
1160
17.4k
    case FreeRDP_PercentScreenUseWidth:
1161
17.4k
      settings->PercentScreenUseWidth = cnv.c;
1162
17.4k
      break;
1163
1164
17.4k
    case FreeRDP_PlayRemoteFx:
1165
17.4k
      settings->PlayRemoteFx = cnv.c;
1166
17.4k
      break;
1167
1168
17.4k
    case FreeRDP_PreferIPv6OverIPv4:
1169
17.4k
      settings->PreferIPv6OverIPv4 = cnv.c;
1170
17.4k
      break;
1171
1172
17.4k
    case FreeRDP_PrintReconnectCookie:
1173
17.4k
      settings->PrintReconnectCookie = cnv.c;
1174
17.4k
      break;
1175
1176
17.4k
    case FreeRDP_PromptForCredentials:
1177
17.4k
      settings->PromptForCredentials = cnv.c;
1178
17.4k
      break;
1179
1180
87.2k
    case FreeRDP_RdpSecurity:
1181
87.2k
      settings->RdpSecurity = cnv.c;
1182
87.2k
      break;
1183
1184
87.2k
    case FreeRDP_RdstlsSecurity:
1185
87.2k
      settings->RdstlsSecurity = cnv.c;
1186
87.2k
      break;
1187
1188
69.7k
    case FreeRDP_RedirectClipboard:
1189
69.7k
      settings->RedirectClipboard = cnv.c;
1190
69.7k
      break;
1191
1192
17.4k
    case FreeRDP_RedirectDrives:
1193
17.4k
      settings->RedirectDrives = cnv.c;
1194
17.4k
      break;
1195
1196
17.4k
    case FreeRDP_RedirectHomeDrive:
1197
17.4k
      settings->RedirectHomeDrive = cnv.c;
1198
17.4k
      break;
1199
1200
17.4k
    case FreeRDP_RedirectParallelPorts:
1201
17.4k
      settings->RedirectParallelPorts = cnv.c;
1202
17.4k
      break;
1203
1204
17.4k
    case FreeRDP_RedirectPrinters:
1205
17.4k
      settings->RedirectPrinters = cnv.c;
1206
17.4k
      break;
1207
1208
17.4k
    case FreeRDP_RedirectSerialPorts:
1209
17.4k
      settings->RedirectSerialPorts = cnv.c;
1210
17.4k
      break;
1211
1212
17.4k
    case FreeRDP_RedirectSmartCards:
1213
17.4k
      settings->RedirectSmartCards = cnv.c;
1214
17.4k
      break;
1215
1216
17.4k
    case FreeRDP_RedirectWebAuthN:
1217
17.4k
      settings->RedirectWebAuthN = cnv.c;
1218
17.4k
      break;
1219
1220
87.2k
    case FreeRDP_RefreshRect:
1221
87.2k
      settings->RefreshRect = cnv.c;
1222
87.2k
      break;
1223
1224
17.4k
    case FreeRDP_RemdeskVirtualChannel:
1225
17.4k
      settings->RemdeskVirtualChannel = cnv.c;
1226
17.4k
      break;
1227
1228
17.4k
    case FreeRDP_RemoteAppLanguageBarSupported:
1229
17.4k
      settings->RemoteAppLanguageBarSupported = cnv.c;
1230
17.4k
      break;
1231
1232
17.4k
    case FreeRDP_RemoteApplicationMode:
1233
17.4k
      settings->RemoteApplicationMode = cnv.c;
1234
17.4k
      break;
1235
1236
17.4k
    case FreeRDP_RemoteAssistanceMode:
1237
17.4k
      settings->RemoteAssistanceMode = cnv.c;
1238
17.4k
      break;
1239
1240
17.4k
    case FreeRDP_RemoteAssistanceRequestControl:
1241
17.4k
      settings->RemoteAssistanceRequestControl = cnv.c;
1242
17.4k
      break;
1243
1244
17.4k
    case FreeRDP_RemoteConsoleAudio:
1245
17.4k
      settings->RemoteConsoleAudio = cnv.c;
1246
17.4k
      break;
1247
1248
17.4k
    case FreeRDP_RemoteCredentialGuard:
1249
17.4k
      settings->RemoteCredentialGuard = cnv.c;
1250
17.4k
      break;
1251
1252
20.3k
    case FreeRDP_RemoteFxCodec:
1253
20.3k
      settings->RemoteFxCodec = cnv.c;
1254
20.3k
      break;
1255
1256
18.9k
    case FreeRDP_RemoteFxImageCodec:
1257
18.9k
      settings->RemoteFxImageCodec = cnv.c;
1258
18.9k
      break;
1259
1260
17.4k
    case FreeRDP_RemoteFxOnly:
1261
17.4k
      settings->RemoteFxOnly = cnv.c;
1262
17.4k
      break;
1263
1264
87.2k
    case FreeRDP_RestrictedAdminModeRequired:
1265
87.2k
      settings->RestrictedAdminModeRequired = cnv.c;
1266
87.2k
      break;
1267
1268
87.2k
    case FreeRDP_RestrictedAdminModeSupported:
1269
87.2k
      settings->RestrictedAdminModeSupported = cnv.c;
1270
87.2k
      break;
1271
1272
87.2k
    case FreeRDP_SaltedChecksum:
1273
87.2k
      settings->SaltedChecksum = cnv.c;
1274
87.2k
      break;
1275
1276
17.4k
    case FreeRDP_SendPreconnectionPdu:
1277
17.4k
      settings->SendPreconnectionPdu = cnv.c;
1278
17.4k
      break;
1279
1280
17.4k
    case FreeRDP_ServerLicenseRequired:
1281
17.4k
      settings->ServerLicenseRequired = cnv.c;
1282
17.4k
      break;
1283
1284
87.2k
    case FreeRDP_ServerMode:
1285
87.2k
      settings->ServerMode = cnv.c;
1286
87.2k
      break;
1287
1288
17.4k
    case FreeRDP_SmartSizing:
1289
17.4k
      settings->SmartSizing = cnv.c;
1290
17.4k
      break;
1291
1292
17.4k
    case FreeRDP_SmartcardEmulation:
1293
17.4k
      settings->SmartcardEmulation = cnv.c;
1294
17.4k
      break;
1295
1296
87.2k
    case FreeRDP_SmartcardLogon:
1297
87.2k
      settings->SmartcardLogon = cnv.c;
1298
87.2k
      break;
1299
1300
87.2k
    case FreeRDP_SoftwareGdi:
1301
87.2k
      settings->SoftwareGdi = cnv.c;
1302
87.2k
      break;
1303
1304
87.2k
    case FreeRDP_SoundBeepsEnabled:
1305
87.2k
      settings->SoundBeepsEnabled = cnv.c;
1306
87.2k
      break;
1307
1308
17.4k
    case FreeRDP_SpanMonitors:
1309
17.4k
      settings->SpanMonitors = cnv.c;
1310
17.4k
      break;
1311
1312
87.2k
    case FreeRDP_SupportAsymetricKeys:
1313
87.2k
      settings->SupportAsymetricKeys = cnv.c;
1314
87.2k
      break;
1315
1316
87.2k
    case FreeRDP_SupportDisplayControl:
1317
87.2k
      settings->SupportDisplayControl = cnv.c;
1318
87.2k
      break;
1319
1320
17.4k
    case FreeRDP_SupportDynamicChannels:
1321
17.4k
      settings->SupportDynamicChannels = cnv.c;
1322
17.4k
      break;
1323
1324
87.2k
    case FreeRDP_SupportDynamicTimeZone:
1325
87.2k
      settings->SupportDynamicTimeZone = cnv.c;
1326
87.2k
      break;
1327
1328
17.4k
    case FreeRDP_SupportEchoChannel:
1329
17.4k
      settings->SupportEchoChannel = cnv.c;
1330
17.4k
      break;
1331
1332
17.4k
    case FreeRDP_SupportEdgeActionV1:
1333
17.4k
      settings->SupportEdgeActionV1 = cnv.c;
1334
17.4k
      break;
1335
1336
17.4k
    case FreeRDP_SupportEdgeActionV2:
1337
17.4k
      settings->SupportEdgeActionV2 = cnv.c;
1338
17.4k
      break;
1339
1340
87.2k
    case FreeRDP_SupportErrorInfoPdu:
1341
87.2k
      settings->SupportErrorInfoPdu = cnv.c;
1342
87.2k
      break;
1343
1344
17.4k
    case FreeRDP_SupportGeometryTracking:
1345
17.4k
      settings->SupportGeometryTracking = cnv.c;
1346
17.4k
      break;
1347
1348
87.2k
    case FreeRDP_SupportGraphicsPipeline:
1349
87.2k
      settings->SupportGraphicsPipeline = cnv.c;
1350
87.2k
      break;
1351
1352
87.2k
    case FreeRDP_SupportHeartbeatPdu:
1353
87.2k
      settings->SupportHeartbeatPdu = cnv.c;
1354
87.2k
      break;
1355
1356
87.2k
    case FreeRDP_SupportMonitorLayoutPdu:
1357
87.2k
      settings->SupportMonitorLayoutPdu = cnv.c;
1358
87.2k
      break;
1359
1360
87.7k
    case FreeRDP_SupportMultitransport:
1361
87.7k
      settings->SupportMultitransport = cnv.c;
1362
87.7k
      break;
1363
1364
17.4k
    case FreeRDP_SupportSSHAgentChannel:
1365
17.4k
      settings->SupportSSHAgentChannel = cnv.c;
1366
17.4k
      break;
1367
1368
87.2k
    case FreeRDP_SupportSkipChannelJoin:
1369
87.2k
      settings->SupportSkipChannelJoin = cnv.c;
1370
87.2k
      break;
1371
1372
87.2k
    case FreeRDP_SupportStatusInfoPdu:
1373
87.2k
      settings->SupportStatusInfoPdu = cnv.c;
1374
87.2k
      break;
1375
1376
17.4k
    case FreeRDP_SupportVideoOptimized:
1377
17.4k
      settings->SupportVideoOptimized = cnv.c;
1378
17.4k
      break;
1379
1380
87.2k
    case FreeRDP_SuppressOutput:
1381
87.2k
      settings->SuppressOutput = cnv.c;
1382
87.2k
      break;
1383
1384
17.4k
    case FreeRDP_SurfaceCommandsEnabled:
1385
17.4k
      settings->SurfaceCommandsEnabled = cnv.c;
1386
17.4k
      break;
1387
1388
87.2k
    case FreeRDP_SurfaceFrameMarkerEnabled:
1389
87.2k
      settings->SurfaceFrameMarkerEnabled = cnv.c;
1390
87.2k
      break;
1391
1392
17.4k
    case FreeRDP_SuspendInput:
1393
17.4k
      settings->SuspendInput = cnv.c;
1394
17.4k
      break;
1395
1396
17.4k
    case FreeRDP_SynchronousDynamicChannels:
1397
17.4k
      settings->SynchronousDynamicChannels = cnv.c;
1398
17.4k
      break;
1399
1400
17.4k
    case FreeRDP_SynchronousStaticChannels:
1401
17.4k
      settings->SynchronousStaticChannels = cnv.c;
1402
17.4k
      break;
1403
1404
87.2k
    case FreeRDP_TcpKeepAlive:
1405
87.2k
      settings->TcpKeepAlive = cnv.c;
1406
87.2k
      break;
1407
1408
87.2k
    case FreeRDP_TlsSecurity:
1409
87.2k
      settings->TlsSecurity = cnv.c;
1410
87.2k
      break;
1411
1412
87.2k
    case FreeRDP_ToggleFullscreen:
1413
87.2k
      settings->ToggleFullscreen = cnv.c;
1414
87.2k
      break;
1415
1416
17.4k
    case FreeRDP_TransportDump:
1417
17.4k
      settings->TransportDump = cnv.c;
1418
17.4k
      break;
1419
1420
52.3k
    case FreeRDP_TransportDumpReplay:
1421
52.3k
      settings->TransportDumpReplay = cnv.c;
1422
52.3k
      break;
1423
1424
17.4k
    case FreeRDP_TransportDumpReplayNodelay:
1425
17.4k
      settings->TransportDumpReplayNodelay = cnv.c;
1426
17.4k
      break;
1427
1428
128k
    case FreeRDP_UnicodeInput:
1429
128k
      settings->UnicodeInput = cnv.c;
1430
128k
      break;
1431
1432
87.2k
    case FreeRDP_UnmapButtons:
1433
87.2k
      settings->UnmapButtons = cnv.c;
1434
87.2k
      break;
1435
1436
17.4k
    case FreeRDP_UseCommonStdioCallbacks:
1437
17.4k
      settings->UseCommonStdioCallbacks = cnv.c;
1438
17.4k
      break;
1439
1440
17.4k
    case FreeRDP_UseMultimon:
1441
17.4k
      settings->UseMultimon = cnv.c;
1442
17.4k
      break;
1443
1444
87.2k
    case FreeRDP_UseRdpSecurityLayer:
1445
87.2k
      settings->UseRdpSecurityLayer = cnv.c;
1446
87.2k
      break;
1447
1448
17.4k
    case FreeRDP_UsingSavedCredentials:
1449
17.4k
      settings->UsingSavedCredentials = cnv.c;
1450
17.4k
      break;
1451
1452
17.4k
    case FreeRDP_VideoDisable:
1453
17.4k
      settings->VideoDisable = cnv.c;
1454
17.4k
      break;
1455
1456
17.4k
    case FreeRDP_VmConnectMode:
1457
17.4k
      settings->VmConnectMode = cnv.c;
1458
17.4k
      break;
1459
1460
87.2k
    case FreeRDP_WaitForOutputBufferFlush:
1461
87.2k
      settings->WaitForOutputBufferFlush = cnv.c;
1462
87.2k
      break;
1463
1464
87.2k
    case FreeRDP_Workarea:
1465
87.2k
      settings->Workarea = cnv.c;
1466
87.2k
      break;
1467
1468
0
    default:
1469
0
      WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
1470
0
               freerdp_settings_get_type_name_for_key(id));
1471
0
      return FALSE;
1472
10.1M
  }
1473
10.1M
  return TRUE;
1474
10.1M
}
1475
1476
UINT16 freerdp_settings_get_uint16(WINPR_ATTR_UNUSED const rdpSettings* settings,
1477
                                   WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_UInt16 id)
1478
226k
{
1479
226k
  WINPR_ASSERT(settings);
1480
1481
226k
  switch (id)
1482
226k
  {
1483
17.4k
    case FreeRDP_CapsGeneralCompressionLevel:
1484
17.4k
      return settings->CapsGeneralCompressionLevel;
1485
1486
17.4k
    case FreeRDP_CapsGeneralCompressionTypes:
1487
17.4k
      return settings->CapsGeneralCompressionTypes;
1488
1489
17.4k
    case FreeRDP_CapsProtocolVersion:
1490
17.4k
      return settings->CapsProtocolVersion;
1491
1492
17.4k
    case FreeRDP_CapsRemoteUnshareFlag:
1493
17.4k
      return settings->CapsRemoteUnshareFlag;
1494
1495
17.4k
    case FreeRDP_CapsUpdateCapabilityFlag:
1496
17.4k
      return settings->CapsUpdateCapabilityFlag;
1497
1498
17.4k
    case FreeRDP_DesktopOrientation:
1499
17.4k
      return settings->DesktopOrientation;
1500
1501
17.4k
    case FreeRDP_OrderSupportFlags:
1502
17.4k
      return settings->OrderSupportFlags;
1503
1504
17.4k
    case FreeRDP_OrderSupportFlagsEx:
1505
17.4k
      return settings->OrderSupportFlagsEx;
1506
1507
17.4k
    case FreeRDP_ProxyPort:
1508
17.4k
      return settings->ProxyPort;
1509
1510
17.4k
    case FreeRDP_SupportedColorDepths:
1511
17.4k
      return settings->SupportedColorDepths;
1512
1513
17.4k
    case FreeRDP_TLSMaxVersion:
1514
17.4k
      return settings->TLSMaxVersion;
1515
1516
17.4k
    case FreeRDP_TLSMinVersion:
1517
17.4k
      return settings->TLSMinVersion;
1518
1519
17.4k
    case FreeRDP_TextANSICodePage:
1520
17.4k
      return settings->TextANSICodePage;
1521
1522
0
    default:
1523
0
      WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
1524
0
               freerdp_settings_get_type_name_for_key(id));
1525
0
      WINPR_ASSERT(FALSE);
1526
0
      return 0;
1527
226k
  }
1528
226k
}
1529
1530
BOOL freerdp_settings_set_uint16(WINPR_ATTR_UNUSED rdpSettings* settings,
1531
                                 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_UInt16 id, UINT16 val)
1532
689k
{
1533
689k
  union
1534
689k
  {
1535
689k
    void* v;
1536
689k
    const void* cv;
1537
689k
    UINT16 c;
1538
689k
    const UINT16 cc;
1539
689k
  } cnv;
1540
689k
  WINPR_ASSERT(settings);
1541
1542
689k
  cnv.c = val;
1543
1544
689k
  switch (id)
1545
689k
  {
1546
17.4k
    case FreeRDP_CapsGeneralCompressionLevel:
1547
17.4k
      settings->CapsGeneralCompressionLevel = cnv.c;
1548
17.4k
      break;
1549
1550
17.4k
    case FreeRDP_CapsGeneralCompressionTypes:
1551
17.4k
      settings->CapsGeneralCompressionTypes = cnv.c;
1552
17.4k
      break;
1553
1554
87.2k
    case FreeRDP_CapsProtocolVersion:
1555
87.2k
      settings->CapsProtocolVersion = cnv.c;
1556
87.2k
      break;
1557
1558
17.4k
    case FreeRDP_CapsRemoteUnshareFlag:
1559
17.4k
      settings->CapsRemoteUnshareFlag = cnv.c;
1560
17.4k
      break;
1561
1562
17.4k
    case FreeRDP_CapsUpdateCapabilityFlag:
1563
17.4k
      settings->CapsUpdateCapabilityFlag = cnv.c;
1564
17.4k
      break;
1565
1566
61.7k
    case FreeRDP_DesktopOrientation:
1567
61.7k
      settings->DesktopOrientation = cnv.c;
1568
61.7k
      break;
1569
1570
87.2k
    case FreeRDP_OrderSupportFlags:
1571
87.2k
      settings->OrderSupportFlags = cnv.c;
1572
87.2k
      break;
1573
1574
17.4k
    case FreeRDP_OrderSupportFlagsEx:
1575
17.4k
      settings->OrderSupportFlagsEx = cnv.c;
1576
17.4k
      break;
1577
1578
17.4k
    case FreeRDP_ProxyPort:
1579
17.4k
      settings->ProxyPort = cnv.c;
1580
17.4k
      break;
1581
1582
87.2k
    case FreeRDP_SupportedColorDepths:
1583
87.2k
      settings->SupportedColorDepths = cnv.c;
1584
87.2k
      break;
1585
1586
87.2k
    case FreeRDP_TLSMaxVersion:
1587
87.2k
      settings->TLSMaxVersion = cnv.c;
1588
87.2k
      break;
1589
1590
87.2k
    case FreeRDP_TLSMinVersion:
1591
87.2k
      settings->TLSMinVersion = cnv.c;
1592
87.2k
      break;
1593
1594
87.2k
    case FreeRDP_TextANSICodePage:
1595
87.2k
      settings->TextANSICodePage = cnv.c;
1596
87.2k
      break;
1597
1598
0
    default:
1599
0
      WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
1600
0
               freerdp_settings_get_type_name_for_key(id));
1601
0
      return FALSE;
1602
689k
  }
1603
689k
  return TRUE;
1604
689k
}
1605
1606
INT16 freerdp_settings_get_int16(WINPR_ATTR_UNUSED const rdpSettings* settings,
1607
                                 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_Int16 id)
1608
0
{
1609
0
  WINPR_ASSERT(settings);
1610
1611
0
  switch (id)
1612
0
  {
1613
0
    default:
1614
0
      WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
1615
0
               freerdp_settings_get_type_name_for_key(id));
1616
0
      WINPR_ASSERT(FALSE);
1617
0
      return 0;
1618
0
  }
1619
0
}
1620
1621
BOOL freerdp_settings_set_int16(WINPR_ATTR_UNUSED rdpSettings* settings,
1622
                                WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_Int16 id, INT16 val)
1623
0
{
1624
0
  union
1625
0
  {
1626
0
    void* v;
1627
0
    const void* cv;
1628
0
    INT16 c;
1629
0
    const INT16 cc;
1630
0
  } cnv;
1631
0
  WINPR_ASSERT(settings);
1632
1633
0
  cnv.c = val;
1634
1635
0
  switch (id)
1636
0
  {
1637
0
    default:
1638
0
      WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
1639
0
               freerdp_settings_get_type_name_for_key(id));
1640
0
      return FALSE;
1641
0
  }
1642
0
  return TRUE;
1643
0
}
1644
1645
UINT32 freerdp_settings_get_uint32(WINPR_ATTR_UNUSED const rdpSettings* settings,
1646
                                   WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_UInt32 id)
1647
3.28M
{
1648
3.28M
  WINPR_ASSERT(settings);
1649
1650
3.28M
  switch (id)
1651
3.28M
  {
1652
17.4k
    case FreeRDP_AcceptedCertLength:
1653
17.4k
      return settings->AcceptedCertLength;
1654
1655
17.4k
    case FreeRDP_AuthenticationLevel:
1656
17.4k
      return settings->AuthenticationLevel;
1657
1658
17.4k
    case FreeRDP_AutoReconnectMaxRetries:
1659
17.4k
      return settings->AutoReconnectMaxRetries;
1660
1661
428k
    case FreeRDP_BitmapCacheV2NumCells:
1662
428k
      return settings->BitmapCacheV2NumCells;
1663
1664
17.4k
    case FreeRDP_BitmapCacheV3CodecId:
1665
17.4k
      return settings->BitmapCacheV3CodecId;
1666
1667
17.4k
    case FreeRDP_BitmapCacheVersion:
1668
17.4k
      return settings->BitmapCacheVersion;
1669
1670
17.4k
    case FreeRDP_BrushSupportLevel:
1671
17.4k
      return settings->BrushSupportLevel;
1672
1673
34.8k
    case FreeRDP_ChannelCount:
1674
34.8k
      return settings->ChannelCount;
1675
1676
34.8k
    case FreeRDP_ChannelDefArraySize:
1677
34.8k
      return settings->ChannelDefArraySize;
1678
1679
17.4k
    case FreeRDP_ClientBuild:
1680
17.4k
      return settings->ClientBuild;
1681
1682
34.8k
    case FreeRDP_ClientRandomLength:
1683
34.8k
      return settings->ClientRandomLength;
1684
1685
17.4k
    case FreeRDP_ClientSessionId:
1686
17.4k
      return settings->ClientSessionId;
1687
1688
17.4k
    case FreeRDP_ClipboardFeatureMask:
1689
17.4k
      return settings->ClipboardFeatureMask;
1690
1691
17.4k
    case FreeRDP_ClusterInfoFlags:
1692
17.4k
      return settings->ClusterInfoFlags;
1693
1694
19.1k
    case FreeRDP_ColorDepth:
1695
19.1k
      return settings->ColorDepth;
1696
1697
38.9k
    case FreeRDP_ColorPointerCacheSize:
1698
38.9k
      return settings->ColorPointerCacheSize;
1699
1700
17.4k
    case FreeRDP_CompDeskSupportLevel:
1701
17.4k
      return settings->CompDeskSupportLevel;
1702
1703
74.3k
    case FreeRDP_CompressionLevel:
1704
74.3k
      return settings->CompressionLevel;
1705
1706
17.4k
    case FreeRDP_ConnectionType:
1707
17.4k
      return settings->ConnectionType;
1708
1709
17.4k
    case FreeRDP_CookieMaxLength:
1710
17.4k
      return settings->CookieMaxLength;
1711
1712
22.0k
    case FreeRDP_DesktopHeight:
1713
22.0k
      return settings->DesktopHeight;
1714
1715
17.4k
    case FreeRDP_DesktopPhysicalHeight:
1716
17.4k
      return settings->DesktopPhysicalHeight;
1717
1718
17.4k
    case FreeRDP_DesktopPhysicalWidth:
1719
17.4k
      return settings->DesktopPhysicalWidth;
1720
1721
17.4k
    case FreeRDP_DesktopPosX:
1722
17.4k
      return settings->DesktopPosX;
1723
1724
17.4k
    case FreeRDP_DesktopPosY:
1725
17.4k
      return settings->DesktopPosY;
1726
1727
17.4k
    case FreeRDP_DesktopScaleFactor:
1728
17.4k
      return settings->DesktopScaleFactor;
1729
1730
22.0k
    case FreeRDP_DesktopWidth:
1731
22.0k
      return settings->DesktopWidth;
1732
1733
34.8k
    case FreeRDP_DeviceArraySize:
1734
34.8k
      return settings->DeviceArraySize;
1735
1736
34.8k
    case FreeRDP_DeviceCount:
1737
34.8k
      return settings->DeviceCount;
1738
1739
17.4k
    case FreeRDP_DeviceScaleFactor:
1740
17.4k
      return settings->DeviceScaleFactor;
1741
1742
17.4k
    case FreeRDP_DrawNineGridCacheEntries:
1743
17.4k
      return settings->DrawNineGridCacheEntries;
1744
1745
17.4k
    case FreeRDP_DrawNineGridCacheSize:
1746
17.4k
      return settings->DrawNineGridCacheSize;
1747
1748
34.8k
    case FreeRDP_DynamicChannelArraySize:
1749
34.8k
      return settings->DynamicChannelArraySize;
1750
1751
34.8k
    case FreeRDP_DynamicChannelCount:
1752
34.8k
      return settings->DynamicChannelCount;
1753
1754
17.4k
    case FreeRDP_EarlyCapabilityFlags:
1755
17.4k
      return settings->EarlyCapabilityFlags;
1756
1757
17.4k
    case FreeRDP_EncryptionLevel:
1758
17.4k
      return settings->EncryptionLevel;
1759
1760
17.4k
    case FreeRDP_EncryptionMethods:
1761
17.4k
      return settings->EncryptionMethods;
1762
1763
17.4k
    case FreeRDP_ExtEncryptionMethods:
1764
17.4k
      return settings->ExtEncryptionMethods;
1765
1766
17.4k
    case FreeRDP_FakeMouseMotionInterval:
1767
17.4k
      return settings->FakeMouseMotionInterval;
1768
1769
17.4k
    case FreeRDP_Floatbar:
1770
17.4k
      return settings->Floatbar;
1771
1772
17.4k
    case FreeRDP_ForceIPvX:
1773
17.4k
      return settings->ForceIPvX;
1774
1775
17.4k
    case FreeRDP_FrameAcknowledge:
1776
17.4k
      return settings->FrameAcknowledge;
1777
1778
17.4k
    case FreeRDP_GatewayAcceptedCertLength:
1779
17.4k
      return settings->GatewayAcceptedCertLength;
1780
1781
17.4k
    case FreeRDP_GatewayCredentialsSource:
1782
17.4k
      return settings->GatewayCredentialsSource;
1783
1784
17.4k
    case FreeRDP_GatewayPort:
1785
17.4k
      return settings->GatewayPort;
1786
1787
17.4k
    case FreeRDP_GatewayUsageMethod:
1788
17.4k
      return settings->GatewayUsageMethod;
1789
1790
17.4k
    case FreeRDP_GfxCapsFilter:
1791
17.4k
      return settings->GfxCapsFilter;
1792
1793
17.4k
    case FreeRDP_GfxCodecAV1Profile:
1794
17.4k
      return settings->GfxCodecAV1Profile;
1795
1796
226k
    case FreeRDP_GlyphSupportLevel:
1797
226k
      return settings->GlyphSupportLevel;
1798
1799
17.4k
    case FreeRDP_JpegCodecId:
1800
17.4k
      return settings->JpegCodecId;
1801
1802
17.4k
    case FreeRDP_JpegQuality:
1803
17.4k
      return settings->JpegQuality;
1804
1805
17.4k
    case FreeRDP_KeySpec:
1806
17.4k
      return settings->KeySpec;
1807
1808
17.4k
    case FreeRDP_KeyboardCodePage:
1809
17.4k
      return settings->KeyboardCodePage;
1810
1811
17.4k
    case FreeRDP_KeyboardFunctionKey:
1812
17.4k
      return settings->KeyboardFunctionKey;
1813
1814
17.4k
    case FreeRDP_KeyboardHook:
1815
17.4k
      return settings->KeyboardHook;
1816
1817
17.4k
    case FreeRDP_KeyboardLayout:
1818
17.4k
      return settings->KeyboardLayout;
1819
1820
17.4k
    case FreeRDP_KeyboardSubType:
1821
17.4k
      return settings->KeyboardSubType;
1822
1823
17.4k
    case FreeRDP_KeyboardType:
1824
17.4k
      return settings->KeyboardType;
1825
1826
17.4k
    case FreeRDP_LargePointerFlag:
1827
17.4k
      return settings->LargePointerFlag;
1828
1829
34.8k
    case FreeRDP_LoadBalanceInfoLength:
1830
34.8k
      return settings->LoadBalanceInfoLength;
1831
1832
17.4k
    case FreeRDP_MonitorAttributeFlags:
1833
17.4k
      return settings->MonitorAttributeFlags;
1834
1835
17.4k
    case FreeRDP_MonitorCount:
1836
17.4k
      return settings->MonitorCount;
1837
1838
34.8k
    case FreeRDP_MonitorDefArraySize:
1839
34.8k
      return settings->MonitorDefArraySize;
1840
1841
17.4k
    case FreeRDP_MonitorFlags:
1842
17.4k
      return settings->MonitorFlags;
1843
1844
34.6k
    case FreeRDP_MultifragMaxRequestSize:
1845
34.6k
      return settings->MultifragMaxRequestSize;
1846
1847
17.4k
    case FreeRDP_MultitransportFlags:
1848
17.4k
      return settings->MultitransportFlags;
1849
1850
17.4k
    case FreeRDP_NSCodecColorLossLevel:
1851
17.4k
      return settings->NSCodecColorLossLevel;
1852
1853
17.4k
    case FreeRDP_NSCodecId:
1854
17.4k
      return settings->NSCodecId;
1855
1856
17.4k
    case FreeRDP_NegotiationFlags:
1857
17.4k
      return settings->NegotiationFlags;
1858
1859
34.8k
    case FreeRDP_NumMonitorIds:
1860
34.8k
      return settings->NumMonitorIds;
1861
1862
17.4k
    case FreeRDP_OffscreenCacheEntries:
1863
17.4k
      return settings->OffscreenCacheEntries;
1864
1865
17.4k
    case FreeRDP_OffscreenCacheSize:
1866
17.4k
      return settings->OffscreenCacheSize;
1867
1868
17.4k
    case FreeRDP_OffscreenSupportLevel:
1869
17.4k
      return settings->OffscreenSupportLevel;
1870
1871
17.4k
    case FreeRDP_OsMajorType:
1872
17.4k
      return settings->OsMajorType;
1873
1874
17.4k
    case FreeRDP_OsMinorType:
1875
17.4k
      return settings->OsMinorType;
1876
1877
17.4k
    case FreeRDP_Password51Length:
1878
17.4k
      return settings->Password51Length;
1879
1880
17.4k
    case FreeRDP_PduSource:
1881
17.4k
      return settings->PduSource;
1882
1883
17.4k
    case FreeRDP_PercentScreen:
1884
17.4k
      return settings->PercentScreen;
1885
1886
21.1k
    case FreeRDP_PerformanceFlags:
1887
21.1k
      return settings->PerformanceFlags;
1888
1889
38.9k
    case FreeRDP_PointerCacheSize:
1890
38.9k
      return settings->PointerCacheSize;
1891
1892
17.4k
    case FreeRDP_PreconnectionId:
1893
17.4k
      return settings->PreconnectionId;
1894
1895
17.4k
    case FreeRDP_ProxyType:
1896
17.4k
      return settings->ProxyType;
1897
1898
18.1k
    case FreeRDP_RdpVersion:
1899
18.1k
      return settings->RdpVersion;
1900
1901
17.4k
    case FreeRDP_ReceivedCapabilitiesSize:
1902
17.4k
      return settings->ReceivedCapabilitiesSize;
1903
1904
17.4k
    case FreeRDP_RedirectedSessionId:
1905
17.4k
      return settings->RedirectedSessionId;
1906
1907
17.4k
    case FreeRDP_RedirectionAcceptedCertLength:
1908
17.4k
      return settings->RedirectionAcceptedCertLength;
1909
1910
17.4k
    case FreeRDP_RedirectionFlags:
1911
17.4k
      return settings->RedirectionFlags;
1912
1913
34.8k
    case FreeRDP_RedirectionGuidLength:
1914
34.8k
      return settings->RedirectionGuidLength;
1915
1916
34.8k
    case FreeRDP_RedirectionPasswordLength:
1917
34.8k
      return settings->RedirectionPasswordLength;
1918
1919
17.4k
    case FreeRDP_RedirectionPreferType:
1920
17.4k
      return settings->RedirectionPreferType;
1921
1922
34.8k
    case FreeRDP_RedirectionTsvUrlLength:
1923
34.8k
      return settings->RedirectionTsvUrlLength;
1924
1925
17.4k
    case FreeRDP_RemoteAppNumIconCacheEntries:
1926
17.4k
      return settings->RemoteAppNumIconCacheEntries;
1927
1928
17.4k
    case FreeRDP_RemoteAppNumIconCaches:
1929
17.4k
      return settings->RemoteAppNumIconCaches;
1930
1931
17.4k
    case FreeRDP_RemoteApplicationExpandCmdLine:
1932
17.4k
      return settings->RemoteApplicationExpandCmdLine;
1933
1934
17.4k
    case FreeRDP_RemoteApplicationExpandWorkingDir:
1935
17.4k
      return settings->RemoteApplicationExpandWorkingDir;
1936
1937
17.4k
    case FreeRDP_RemoteApplicationSupportLevel:
1938
17.4k
      return settings->RemoteApplicationSupportLevel;
1939
1940
17.4k
    case FreeRDP_RemoteApplicationSupportMask:
1941
17.4k
      return settings->RemoteApplicationSupportMask;
1942
1943
17.4k
    case FreeRDP_RemoteFxCaptureFlags:
1944
17.4k
      return settings->RemoteFxCaptureFlags;
1945
1946
17.4k
    case FreeRDP_RemoteFxCodecId:
1947
17.4k
      return settings->RemoteFxCodecId;
1948
1949
17.4k
    case FreeRDP_RemoteFxCodecMode:
1950
17.4k
      return settings->RemoteFxCodecMode;
1951
1952
17.4k
    case FreeRDP_RemoteFxRlgrMode:
1953
17.4k
      return settings->RemoteFxRlgrMode;
1954
1955
22.3k
    case FreeRDP_RemoteWndSupportLevel:
1956
22.3k
      return settings->RemoteWndSupportLevel;
1957
1958
17.4k
    case FreeRDP_RequestedProtocols:
1959
17.4k
      return settings->RequestedProtocols;
1960
1961
17.4k
    case FreeRDP_SelectedProtocol:
1962
17.4k
      return settings->SelectedProtocol;
1963
1964
34.8k
    case FreeRDP_ServerCertificateLength:
1965
34.8k
      return settings->ServerCertificateLength;
1966
1967
17.4k
    case FreeRDP_ServerLicenseProductIssuersCount:
1968
17.4k
      return settings->ServerLicenseProductIssuersCount;
1969
1970
17.4k
    case FreeRDP_ServerLicenseProductVersion:
1971
17.4k
      return settings->ServerLicenseProductVersion;
1972
1973
17.4k
    case FreeRDP_ServerPort:
1974
17.4k
      return settings->ServerPort;
1975
1976
34.8k
    case FreeRDP_ServerRandomLength:
1977
34.8k
      return settings->ServerRandomLength;
1978
1979
17.4k
    case FreeRDP_ShareId:
1980
17.4k
      return settings->ShareId;
1981
1982
17.4k
    case FreeRDP_SmartSizingHeight:
1983
17.4k
      return settings->SmartSizingHeight;
1984
1985
17.4k
    case FreeRDP_SmartSizingWidth:
1986
17.4k
      return settings->SmartSizingWidth;
1987
1988
34.8k
    case FreeRDP_StaticChannelArraySize:
1989
34.8k
      return settings->StaticChannelArraySize;
1990
1991
34.8k
    case FreeRDP_StaticChannelCount:
1992
34.8k
      return settings->StaticChannelCount;
1993
1994
17.4k
    case FreeRDP_SurfaceCommandsSupported:
1995
17.4k
      return settings->SurfaceCommandsSupported;
1996
1997
34.8k
    case FreeRDP_TargetNetAddressCount:
1998
34.8k
      return settings->TargetNetAddressCount;
1999
2000
25.5k
    case FreeRDP_TcpAckTimeout:
2001
25.5k
      return settings->TcpAckTimeout;
2002
2003
17.4k
    case FreeRDP_TcpConnectTimeout:
2004
17.4k
      return settings->TcpConnectTimeout;
2005
2006
25.5k
    case FreeRDP_TcpKeepAliveDelay:
2007
25.5k
      return settings->TcpKeepAliveDelay;
2008
2009
25.5k
    case FreeRDP_TcpKeepAliveInterval:
2010
25.5k
      return settings->TcpKeepAliveInterval;
2011
2012
25.5k
    case FreeRDP_TcpKeepAliveRetries:
2013
25.5k
      return settings->TcpKeepAliveRetries;
2014
2015
17.4k
    case FreeRDP_ThreadingFlags:
2016
17.4k
      return settings->ThreadingFlags;
2017
2018
17.4k
    case FreeRDP_TlsSecLevel:
2019
17.4k
      return settings->TlsSecLevel;
2020
2021
17.4k
    case FreeRDP_VCChunkSize:
2022
17.4k
      return settings->VCChunkSize;
2023
2024
17.4k
    case FreeRDP_VCFlags:
2025
17.4k
      return settings->VCFlags;
2026
2027
0
#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
2028
    // API Compatibility section, remove with FreeRDP 4.x
2029
0
    case (FreeRDP_Settings_Keys_UInt32)FreeRDP_MonitorLocalShiftX:
2030
0
      return (UINT32)settings->MonitorLocalShiftX;
2031
2032
    // API Compatibility section, remove with FreeRDP 4.x
2033
0
    case (FreeRDP_Settings_Keys_UInt32)FreeRDP_MonitorLocalShiftY:
2034
0
      return (UINT32)settings->MonitorLocalShiftY;
2035
2036
0
#endif
2037
0
    default:
2038
0
      WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
2039
0
               freerdp_settings_get_type_name_for_key(id));
2040
0
      WINPR_ASSERT(FALSE);
2041
0
      return 0;
2042
3.28M
  }
2043
3.28M
}
2044
2045
BOOL freerdp_settings_set_uint32(WINPR_ATTR_UNUSED rdpSettings* settings,
2046
                                 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_UInt32 id, UINT32 val)
2047
10.3M
{
2048
10.3M
  union
2049
10.3M
  {
2050
10.3M
    void* v;
2051
10.3M
    const void* cv;
2052
10.3M
    UINT32 c;
2053
10.3M
    const UINT32 cc;
2054
10.3M
  } cnv;
2055
10.3M
  WINPR_ASSERT(settings);
2056
2057
10.3M
  cnv.c = val;
2058
2059
10.3M
  switch (id)
2060
10.3M
  {
2061
17.4k
    case FreeRDP_AcceptedCertLength:
2062
17.4k
      settings->AcceptedCertLength = cnv.c;
2063
17.4k
      break;
2064
2065
87.2k
    case FreeRDP_AuthenticationLevel:
2066
87.2k
      settings->AuthenticationLevel = cnv.c;
2067
87.2k
      break;
2068
2069
87.2k
    case FreeRDP_AutoReconnectMaxRetries:
2070
87.2k
      settings->AutoReconnectMaxRetries = cnv.c;
2071
87.2k
      break;
2072
2073
241k
    case FreeRDP_BitmapCacheV2NumCells:
2074
241k
      settings->BitmapCacheV2NumCells = cnv.c;
2075
241k
      break;
2076
2077
17.4k
    case FreeRDP_BitmapCacheV3CodecId:
2078
17.4k
      settings->BitmapCacheV3CodecId = cnv.c;
2079
17.4k
      break;
2080
2081
17.4k
    case FreeRDP_BitmapCacheVersion:
2082
17.4k
      settings->BitmapCacheVersion = cnv.c;
2083
17.4k
      break;
2084
2085
87.2k
    case FreeRDP_BrushSupportLevel:
2086
87.2k
      settings->BrushSupportLevel = cnv.c;
2087
87.2k
      break;
2088
2089
104k
    case FreeRDP_ChannelCount:
2090
104k
      settings->ChannelCount = cnv.c;
2091
104k
      break;
2092
2093
296k
    case FreeRDP_ChannelDefArraySize:
2094
296k
      settings->ChannelDefArraySize = cnv.c;
2095
296k
      break;
2096
2097
87.2k
    case FreeRDP_ClientBuild:
2098
87.2k
      settings->ClientBuild = cnv.c;
2099
87.2k
      break;
2100
2101
139k
    case FreeRDP_ClientRandomLength:
2102
139k
      settings->ClientRandomLength = cnv.c;
2103
139k
      break;
2104
2105
17.4k
    case FreeRDP_ClientSessionId:
2106
17.4k
      settings->ClientSessionId = cnv.c;
2107
17.4k
      break;
2108
2109
87.2k
    case FreeRDP_ClipboardFeatureMask:
2110
87.2k
      settings->ClipboardFeatureMask = cnv.c;
2111
87.2k
      break;
2112
2113
87.2k
    case FreeRDP_ClusterInfoFlags:
2114
87.2k
      settings->ClusterInfoFlags = cnv.c;
2115
87.2k
      break;
2116
2117
90.8k
    case FreeRDP_ColorDepth:
2118
90.8k
      settings->ColorDepth = cnv.c;
2119
90.8k
      break;
2120
2121
97.9k
    case FreeRDP_ColorPointerCacheSize:
2122
97.9k
      settings->ColorPointerCacheSize = cnv.c;
2123
97.9k
      break;
2124
2125
17.4k
    case FreeRDP_CompDeskSupportLevel:
2126
17.4k
      settings->CompDeskSupportLevel = cnv.c;
2127
17.4k
      break;
2128
2129
87.2k
    case FreeRDP_CompressionLevel:
2130
87.2k
      settings->CompressionLevel = cnv.c;
2131
87.2k
      break;
2132
2133
87.2k
    case FreeRDP_ConnectionType:
2134
87.2k
      settings->ConnectionType = cnv.c;
2135
87.2k
      break;
2136
2137
87.2k
    case FreeRDP_CookieMaxLength:
2138
87.2k
      settings->CookieMaxLength = cnv.c;
2139
87.2k
      break;
2140
2141
87.2k
    case FreeRDP_DesktopHeight:
2142
87.2k
      settings->DesktopHeight = cnv.c;
2143
87.2k
      break;
2144
2145
61.7k
    case FreeRDP_DesktopPhysicalHeight:
2146
61.7k
      settings->DesktopPhysicalHeight = cnv.c;
2147
61.7k
      break;
2148
2149
61.7k
    case FreeRDP_DesktopPhysicalWidth:
2150
61.7k
      settings->DesktopPhysicalWidth = cnv.c;
2151
61.7k
      break;
2152
2153
87.2k
    case FreeRDP_DesktopPosX:
2154
87.2k
      settings->DesktopPosX = cnv.c;
2155
87.2k
      break;
2156
2157
87.2k
    case FreeRDP_DesktopPosY:
2158
87.2k
      settings->DesktopPosY = cnv.c;
2159
87.2k
      break;
2160
2161
61.7k
    case FreeRDP_DesktopScaleFactor:
2162
61.7k
      settings->DesktopScaleFactor = cnv.c;
2163
61.7k
      break;
2164
2165
87.2k
    case FreeRDP_DesktopWidth:
2166
87.2k
      settings->DesktopWidth = cnv.c;
2167
87.2k
      break;
2168
2169
366k
    case FreeRDP_DeviceArraySize:
2170
366k
      settings->DeviceArraySize = cnv.c;
2171
366k
      break;
2172
2173
261k
    case FreeRDP_DeviceCount:
2174
261k
      settings->DeviceCount = cnv.c;
2175
261k
      break;
2176
2177
61.7k
    case FreeRDP_DeviceScaleFactor:
2178
61.7k
      settings->DeviceScaleFactor = cnv.c;
2179
61.7k
      break;
2180
2181
87.2k
    case FreeRDP_DrawNineGridCacheEntries:
2182
87.2k
      settings->DrawNineGridCacheEntries = cnv.c;
2183
87.2k
      break;
2184
2185
87.2k
    case FreeRDP_DrawNineGridCacheSize:
2186
87.2k
      settings->DrawNineGridCacheSize = cnv.c;
2187
87.2k
      break;
2188
2189
366k
    case FreeRDP_DynamicChannelArraySize:
2190
366k
      settings->DynamicChannelArraySize = cnv.c;
2191
366k
      break;
2192
2193
261k
    case FreeRDP_DynamicChannelCount:
2194
261k
      settings->DynamicChannelCount = cnv.c;
2195
261k
      break;
2196
2197
17.4k
    case FreeRDP_EarlyCapabilityFlags:
2198
17.4k
      settings->EarlyCapabilityFlags = cnv.c;
2199
17.4k
      break;
2200
2201
87.2k
    case FreeRDP_EncryptionLevel:
2202
87.2k
      settings->EncryptionLevel = cnv.c;
2203
87.2k
      break;
2204
2205
87.2k
    case FreeRDP_EncryptionMethods:
2206
87.2k
      settings->EncryptionMethods = cnv.c;
2207
87.2k
      break;
2208
2209
17.4k
    case FreeRDP_ExtEncryptionMethods:
2210
17.4k
      settings->ExtEncryptionMethods = cnv.c;
2211
17.4k
      break;
2212
2213
17.4k
    case FreeRDP_FakeMouseMotionInterval:
2214
17.4k
      settings->FakeMouseMotionInterval = cnv.c;
2215
17.4k
      break;
2216
2217
17.4k
    case FreeRDP_Floatbar:
2218
17.4k
      settings->Floatbar = cnv.c;
2219
17.4k
      break;
2220
2221
17.4k
    case FreeRDP_ForceIPvX:
2222
17.4k
      settings->ForceIPvX = cnv.c;
2223
17.4k
      break;
2224
2225
87.2k
    case FreeRDP_FrameAcknowledge:
2226
87.2k
      settings->FrameAcknowledge = cnv.c;
2227
87.2k
      break;
2228
2229
17.4k
    case FreeRDP_GatewayAcceptedCertLength:
2230
17.4k
      settings->GatewayAcceptedCertLength = cnv.c;
2231
17.4k
      break;
2232
2233
17.4k
    case FreeRDP_GatewayCredentialsSource:
2234
17.4k
      settings->GatewayCredentialsSource = cnv.c;
2235
17.4k
      break;
2236
2237
87.2k
    case FreeRDP_GatewayPort:
2238
87.2k
      settings->GatewayPort = cnv.c;
2239
87.2k
      break;
2240
2241
17.4k
    case FreeRDP_GatewayUsageMethod:
2242
17.4k
      settings->GatewayUsageMethod = cnv.c;
2243
17.4k
      break;
2244
2245
17.4k
    case FreeRDP_GfxCapsFilter:
2246
17.4k
      settings->GfxCapsFilter = cnv.c;
2247
17.4k
      break;
2248
2249
87.2k
    case FreeRDP_GfxCodecAV1Profile:
2250
87.2k
      settings->GfxCodecAV1Profile = cnv.c;
2251
87.2k
      break;
2252
2253
87.2k
    case FreeRDP_GlyphSupportLevel:
2254
87.2k
      settings->GlyphSupportLevel = cnv.c;
2255
87.2k
      break;
2256
2257
17.4k
    case FreeRDP_JpegCodecId:
2258
17.4k
      settings->JpegCodecId = cnv.c;
2259
17.4k
      break;
2260
2261
17.4k
    case FreeRDP_JpegQuality:
2262
17.4k
      settings->JpegQuality = cnv.c;
2263
17.4k
      break;
2264
2265
87.2k
    case FreeRDP_KeySpec:
2266
87.2k
      settings->KeySpec = cnv.c;
2267
87.2k
      break;
2268
2269
17.4k
    case FreeRDP_KeyboardCodePage:
2270
17.4k
      settings->KeyboardCodePage = cnv.c;
2271
17.4k
      break;
2272
2273
87.2k
    case FreeRDP_KeyboardFunctionKey:
2274
87.2k
      settings->KeyboardFunctionKey = cnv.c;
2275
87.2k
      break;
2276
2277
87.2k
    case FreeRDP_KeyboardHook:
2278
87.2k
      settings->KeyboardHook = cnv.c;
2279
87.2k
      break;
2280
2281
87.2k
    case FreeRDP_KeyboardLayout:
2282
87.2k
      settings->KeyboardLayout = cnv.c;
2283
87.2k
      break;
2284
2285
87.2k
    case FreeRDP_KeyboardSubType:
2286
87.2k
      settings->KeyboardSubType = cnv.c;
2287
87.2k
      break;
2288
2289
87.2k
    case FreeRDP_KeyboardType:
2290
87.2k
      settings->KeyboardType = cnv.c;
2291
87.2k
      break;
2292
2293
87.2k
    case FreeRDP_LargePointerFlag:
2294
87.2k
      settings->LargePointerFlag = cnv.c;
2295
87.2k
      break;
2296
2297
139k
    case FreeRDP_LoadBalanceInfoLength:
2298
139k
      settings->LoadBalanceInfoLength = cnv.c;
2299
139k
      break;
2300
2301
17.4k
    case FreeRDP_MonitorAttributeFlags:
2302
17.4k
      settings->MonitorAttributeFlags = cnv.c;
2303
17.4k
      break;
2304
2305
87.2k
    case FreeRDP_MonitorCount:
2306
87.2k
      settings->MonitorCount = cnv.c;
2307
87.2k
      break;
2308
2309
296k
    case FreeRDP_MonitorDefArraySize:
2310
296k
      settings->MonitorDefArraySize = cnv.c;
2311
296k
      break;
2312
2313
17.4k
    case FreeRDP_MonitorFlags:
2314
17.4k
      settings->MonitorFlags = cnv.c;
2315
17.4k
      break;
2316
2317
92.7k
    case FreeRDP_MultifragMaxRequestSize:
2318
92.7k
      settings->MultifragMaxRequestSize = cnv.c;
2319
92.7k
      break;
2320
2321
87.7k
    case FreeRDP_MultitransportFlags:
2322
87.7k
      settings->MultitransportFlags = cnv.c;
2323
87.7k
      break;
2324
2325
87.2k
    case FreeRDP_NSCodecColorLossLevel:
2326
87.2k
      settings->NSCodecColorLossLevel = cnv.c;
2327
87.2k
      break;
2328
2329
17.4k
    case FreeRDP_NSCodecId:
2330
17.4k
      settings->NSCodecId = cnv.c;
2331
17.4k
      break;
2332
2333
17.4k
    case FreeRDP_NegotiationFlags:
2334
17.4k
      settings->NegotiationFlags = cnv.c;
2335
17.4k
      break;
2336
2337
209k
    case FreeRDP_NumMonitorIds:
2338
209k
      settings->NumMonitorIds = cnv.c;
2339
209k
      break;
2340
2341
87.2k
    case FreeRDP_OffscreenCacheEntries:
2342
87.2k
      settings->OffscreenCacheEntries = cnv.c;
2343
87.2k
      break;
2344
2345
87.2k
    case FreeRDP_OffscreenCacheSize:
2346
87.2k
      settings->OffscreenCacheSize = cnv.c;
2347
87.2k
      break;
2348
2349
87.2k
    case FreeRDP_OffscreenSupportLevel:
2350
87.2k
      settings->OffscreenSupportLevel = cnv.c;
2351
87.2k
      break;
2352
2353
17.4k
    case FreeRDP_OsMajorType:
2354
17.4k
      settings->OsMajorType = cnv.c;
2355
17.4k
      break;
2356
2357
17.4k
    case FreeRDP_OsMinorType:
2358
17.4k
      settings->OsMinorType = cnv.c;
2359
17.4k
      break;
2360
2361
122k
    case FreeRDP_Password51Length:
2362
122k
      settings->Password51Length = cnv.c;
2363
122k
      break;
2364
2365
17.4k
    case FreeRDP_PduSource:
2366
17.4k
      settings->PduSource = cnv.c;
2367
17.4k
      break;
2368
2369
17.4k
    case FreeRDP_PercentScreen:
2370
17.4k
      settings->PercentScreen = cnv.c;
2371
17.4k
      break;
2372
2373
87.2k
    case FreeRDP_PerformanceFlags:
2374
87.2k
      settings->PerformanceFlags = cnv.c;
2375
87.2k
      break;
2376
2377
97.9k
    case FreeRDP_PointerCacheSize:
2378
97.9k
      settings->PointerCacheSize = cnv.c;
2379
97.9k
      break;
2380
2381
17.4k
    case FreeRDP_PreconnectionId:
2382
17.4k
      settings->PreconnectionId = cnv.c;
2383
17.4k
      break;
2384
2385
17.4k
    case FreeRDP_ProxyType:
2386
17.4k
      settings->ProxyType = cnv.c;
2387
17.4k
      break;
2388
2389
87.2k
    case FreeRDP_RdpVersion:
2390
87.2k
      settings->RdpVersion = cnv.c;
2391
87.2k
      break;
2392
2393
17.4k
    case FreeRDP_ReceivedCapabilitiesSize:
2394
17.4k
      settings->ReceivedCapabilitiesSize = cnv.c;
2395
17.4k
      break;
2396
2397
17.4k
    case FreeRDP_RedirectedSessionId:
2398
17.4k
      settings->RedirectedSessionId = cnv.c;
2399
17.4k
      break;
2400
2401
17.4k
    case FreeRDP_RedirectionAcceptedCertLength:
2402
17.4k
      settings->RedirectionAcceptedCertLength = cnv.c;
2403
17.4k
      break;
2404
2405
17.4k
    case FreeRDP_RedirectionFlags:
2406
17.4k
      settings->RedirectionFlags = cnv.c;
2407
17.4k
      break;
2408
2409
139k
    case FreeRDP_RedirectionGuidLength:
2410
139k
      settings->RedirectionGuidLength = cnv.c;
2411
139k
      break;
2412
2413
139k
    case FreeRDP_RedirectionPasswordLength:
2414
139k
      settings->RedirectionPasswordLength = cnv.c;
2415
139k
      break;
2416
2417
17.4k
    case FreeRDP_RedirectionPreferType:
2418
17.4k
      settings->RedirectionPreferType = cnv.c;
2419
17.4k
      break;
2420
2421
139k
    case FreeRDP_RedirectionTsvUrlLength:
2422
139k
      settings->RedirectionTsvUrlLength = cnv.c;
2423
139k
      break;
2424
2425
87.2k
    case FreeRDP_RemoteAppNumIconCacheEntries:
2426
87.2k
      settings->RemoteAppNumIconCacheEntries = cnv.c;
2427
87.2k
      break;
2428
2429
87.2k
    case FreeRDP_RemoteAppNumIconCaches:
2430
87.2k
      settings->RemoteAppNumIconCaches = cnv.c;
2431
87.2k
      break;
2432
2433
17.4k
    case FreeRDP_RemoteApplicationExpandCmdLine:
2434
17.4k
      settings->RemoteApplicationExpandCmdLine = cnv.c;
2435
17.4k
      break;
2436
2437
17.4k
    case FreeRDP_RemoteApplicationExpandWorkingDir:
2438
17.4k
      settings->RemoteApplicationExpandWorkingDir = cnv.c;
2439
17.4k
      break;
2440
2441
17.4k
    case FreeRDP_RemoteApplicationSupportLevel:
2442
17.4k
      settings->RemoteApplicationSupportLevel = cnv.c;
2443
17.4k
      break;
2444
2445
87.2k
    case FreeRDP_RemoteApplicationSupportMask:
2446
87.2k
      settings->RemoteApplicationSupportMask = cnv.c;
2447
87.2k
      break;
2448
2449
17.4k
    case FreeRDP_RemoteFxCaptureFlags:
2450
17.4k
      settings->RemoteFxCaptureFlags = cnv.c;
2451
17.4k
      break;
2452
2453
17.4k
    case FreeRDP_RemoteFxCodecId:
2454
17.4k
      settings->RemoteFxCodecId = cnv.c;
2455
17.4k
      break;
2456
2457
17.4k
    case FreeRDP_RemoteFxCodecMode:
2458
17.4k
      settings->RemoteFxCodecMode = cnv.c;
2459
17.4k
      break;
2460
2461
87.2k
    case FreeRDP_RemoteFxRlgrMode:
2462
87.2k
      settings->RemoteFxRlgrMode = cnv.c;
2463
87.2k
      break;
2464
2465
87.2k
    case FreeRDP_RemoteWndSupportLevel:
2466
87.2k
      settings->RemoteWndSupportLevel = cnv.c;
2467
87.2k
      break;
2468
2469
17.4k
    case FreeRDP_RequestedProtocols:
2470
17.4k
      settings->RequestedProtocols = cnv.c;
2471
17.4k
      break;
2472
2473
17.4k
    case FreeRDP_SelectedProtocol:
2474
17.4k
      settings->SelectedProtocol = cnv.c;
2475
17.4k
      break;
2476
2477
140k
    case FreeRDP_ServerCertificateLength:
2478
140k
      settings->ServerCertificateLength = cnv.c;
2479
140k
      break;
2480
2481
296k
    case FreeRDP_ServerLicenseProductIssuersCount:
2482
296k
      settings->ServerLicenseProductIssuersCount = cnv.c;
2483
296k
      break;
2484
2485
87.2k
    case FreeRDP_ServerLicenseProductVersion:
2486
87.2k
      settings->ServerLicenseProductVersion = cnv.c;
2487
87.2k
      break;
2488
2489
87.2k
    case FreeRDP_ServerPort:
2490
87.2k
      settings->ServerPort = cnv.c;
2491
87.2k
      break;
2492
2493
140k
    case FreeRDP_ServerRandomLength:
2494
140k
      settings->ServerRandomLength = cnv.c;
2495
140k
      break;
2496
2497
21.0k
    case FreeRDP_ShareId:
2498
21.0k
      settings->ShareId = cnv.c;
2499
21.0k
      break;
2500
2501
17.4k
    case FreeRDP_SmartSizingHeight:
2502
17.4k
      settings->SmartSizingHeight = cnv.c;
2503
17.4k
      break;
2504
2505
17.4k
    case FreeRDP_SmartSizingWidth:
2506
17.4k
      settings->SmartSizingWidth = cnv.c;
2507
17.4k
      break;
2508
2509
366k
    case FreeRDP_StaticChannelArraySize:
2510
366k
      settings->StaticChannelArraySize = cnv.c;
2511
366k
      break;
2512
2513
261k
    case FreeRDP_StaticChannelCount:
2514
261k
      settings->StaticChannelCount = cnv.c;
2515
261k
      break;
2516
2517
87.2k
    case FreeRDP_SurfaceCommandsSupported:
2518
87.2k
      settings->SurfaceCommandsSupported = cnv.c;
2519
87.2k
      break;
2520
2521
17.4k
    case FreeRDP_TargetNetAddressCount:
2522
17.4k
      settings->TargetNetAddressCount = cnv.c;
2523
17.4k
      break;
2524
2525
87.2k
    case FreeRDP_TcpAckTimeout:
2526
87.2k
      settings->TcpAckTimeout = cnv.c;
2527
87.2k
      break;
2528
2529
87.2k
    case FreeRDP_TcpConnectTimeout:
2530
87.2k
      settings->TcpConnectTimeout = cnv.c;
2531
87.2k
      break;
2532
2533
87.2k
    case FreeRDP_TcpKeepAliveDelay:
2534
87.2k
      settings->TcpKeepAliveDelay = cnv.c;
2535
87.2k
      break;
2536
2537
87.2k
    case FreeRDP_TcpKeepAliveInterval:
2538
87.2k
      settings->TcpKeepAliveInterval = cnv.c;
2539
87.2k
      break;
2540
2541
87.2k
    case FreeRDP_TcpKeepAliveRetries:
2542
87.2k
      settings->TcpKeepAliveRetries = cnv.c;
2543
87.2k
      break;
2544
2545
17.4k
    case FreeRDP_ThreadingFlags:
2546
17.4k
      settings->ThreadingFlags = cnv.c;
2547
17.4k
      break;
2548
2549
87.2k
    case FreeRDP_TlsSecLevel:
2550
87.2k
      settings->TlsSecLevel = cnv.c;
2551
87.2k
      break;
2552
2553
87.2k
    case FreeRDP_VCChunkSize:
2554
87.2k
      settings->VCChunkSize = cnv.c;
2555
87.2k
      break;
2556
2557
17.4k
    case FreeRDP_VCFlags:
2558
17.4k
      settings->VCFlags = cnv.c;
2559
17.4k
      break;
2560
2561
0
#if !defined(WITHOUT_FREERDP_3x_DEPRECATED)
2562
    // API Compatibility section, remove with FreeRDP 4.x
2563
0
    case FreeRDP_MonitorLocalShiftX:
2564
0
      settings->MonitorLocalShiftX = (int32_t)cnv.c;
2565
0
      break;
2566
2567
    // API Compatibility section, remove with FreeRDP 4.x
2568
0
    case FreeRDP_MonitorLocalShiftY:
2569
0
      settings->MonitorLocalShiftY = (int32_t)cnv.c;
2570
0
      break;
2571
2572
0
#endif
2573
0
    default:
2574
0
      WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
2575
0
               freerdp_settings_get_type_name_for_key(id));
2576
0
      return FALSE;
2577
10.3M
  }
2578
10.3M
  return TRUE;
2579
10.3M
}
2580
2581
INT32 freerdp_settings_get_int32(WINPR_ATTR_UNUSED const rdpSettings* settings,
2582
                                 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_Int32 id)
2583
69.7k
{
2584
69.7k
  WINPR_ASSERT(settings);
2585
2586
69.7k
  switch (id)
2587
69.7k
  {
2588
17.4k
    case FreeRDP_MonitorLocalShiftX:
2589
17.4k
      return settings->MonitorLocalShiftX;
2590
2591
17.4k
    case FreeRDP_MonitorLocalShiftY:
2592
17.4k
      return settings->MonitorLocalShiftY;
2593
2594
17.4k
    case FreeRDP_XPan:
2595
17.4k
      return settings->XPan;
2596
2597
17.4k
    case FreeRDP_YPan:
2598
17.4k
      return settings->YPan;
2599
2600
0
    default:
2601
0
      WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
2602
0
               freerdp_settings_get_type_name_for_key(id));
2603
0
      WINPR_ASSERT(FALSE);
2604
0
      return 0;
2605
69.7k
  }
2606
69.7k
}
2607
2608
BOOL freerdp_settings_set_int32(WINPR_ATTR_UNUSED rdpSettings* settings,
2609
                                WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_Int32 id, INT32 val)
2610
209k
{
2611
209k
  union
2612
209k
  {
2613
209k
    void* v;
2614
209k
    const void* cv;
2615
209k
    INT32 c;
2616
209k
    const INT32 cc;
2617
209k
  } cnv;
2618
209k
  WINPR_ASSERT(settings);
2619
2620
209k
  cnv.c = val;
2621
2622
209k
  switch (id)
2623
209k
  {
2624
87.2k
    case FreeRDP_MonitorLocalShiftX:
2625
87.2k
      settings->MonitorLocalShiftX = cnv.c;
2626
87.2k
      break;
2627
2628
87.2k
    case FreeRDP_MonitorLocalShiftY:
2629
87.2k
      settings->MonitorLocalShiftY = cnv.c;
2630
87.2k
      break;
2631
2632
17.4k
    case FreeRDP_XPan:
2633
17.4k
      settings->XPan = cnv.c;
2634
17.4k
      break;
2635
2636
17.4k
    case FreeRDP_YPan:
2637
17.4k
      settings->YPan = cnv.c;
2638
17.4k
      break;
2639
2640
0
    default:
2641
0
      WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
2642
0
               freerdp_settings_get_type_name_for_key(id));
2643
0
      return FALSE;
2644
209k
  }
2645
209k
  return TRUE;
2646
209k
}
2647
2648
UINT64 freerdp_settings_get_uint64(WINPR_ATTR_UNUSED const rdpSettings* settings,
2649
                                   WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_UInt64 id)
2650
34.8k
{
2651
34.8k
  WINPR_ASSERT(settings);
2652
2653
34.8k
  switch (id)
2654
34.8k
  {
2655
17.4k
    case FreeRDP_MonitorOverrideFlags:
2656
17.4k
      return settings->MonitorOverrideFlags;
2657
2658
17.4k
    case FreeRDP_ParentWindowId:
2659
17.4k
      return settings->ParentWindowId;
2660
2661
0
    default:
2662
0
      WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
2663
0
               freerdp_settings_get_type_name_for_key(id));
2664
0
      WINPR_ASSERT(FALSE);
2665
0
      return 0;
2666
34.8k
  }
2667
34.8k
}
2668
2669
BOOL freerdp_settings_set_uint64(WINPR_ATTR_UNUSED rdpSettings* settings,
2670
                                 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_UInt64 id, UINT64 val)
2671
34.8k
{
2672
34.8k
  union
2673
34.8k
  {
2674
34.8k
    void* v;
2675
34.8k
    const void* cv;
2676
34.8k
    UINT64 c;
2677
34.8k
    const UINT64 cc;
2678
34.8k
  } cnv;
2679
34.8k
  WINPR_ASSERT(settings);
2680
2681
34.8k
  cnv.c = val;
2682
2683
34.8k
  switch (id)
2684
34.8k
  {
2685
17.4k
    case FreeRDP_MonitorOverrideFlags:
2686
17.4k
      settings->MonitorOverrideFlags = cnv.c;
2687
17.4k
      break;
2688
2689
17.4k
    case FreeRDP_ParentWindowId:
2690
17.4k
      settings->ParentWindowId = cnv.c;
2691
17.4k
      break;
2692
2693
0
    default:
2694
0
      WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
2695
0
               freerdp_settings_get_type_name_for_key(id));
2696
0
      return FALSE;
2697
34.8k
  }
2698
34.8k
  return TRUE;
2699
34.8k
}
2700
2701
INT64 freerdp_settings_get_int64(WINPR_ATTR_UNUSED const rdpSettings* settings,
2702
                                 WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_Int64 id)
2703
0
{
2704
0
  WINPR_ASSERT(settings);
2705
2706
0
  switch (id)
2707
0
  {
2708
0
    default:
2709
0
      WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
2710
0
               freerdp_settings_get_type_name_for_key(id));
2711
0
      WINPR_ASSERT(FALSE);
2712
0
      return 0;
2713
0
  }
2714
0
}
2715
2716
BOOL freerdp_settings_set_int64(WINPR_ATTR_UNUSED rdpSettings* settings,
2717
                                WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_Int64 id, INT64 val)
2718
0
{
2719
0
  union
2720
0
  {
2721
0
    void* v;
2722
0
    const void* cv;
2723
0
    INT64 c;
2724
0
    const INT64 cc;
2725
0
  } cnv;
2726
0
  WINPR_ASSERT(settings);
2727
2728
0
  cnv.c = val;
2729
2730
0
  switch (id)
2731
0
  {
2732
0
    default:
2733
0
      WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
2734
0
               freerdp_settings_get_type_name_for_key(id));
2735
0
      return FALSE;
2736
0
  }
2737
0
  return TRUE;
2738
0
}
2739
2740
const char* freerdp_settings_get_string(WINPR_ATTR_UNUSED const rdpSettings* settings,
2741
                                        WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_String id)
2742
1.98M
{
2743
1.98M
  WINPR_ASSERT(settings);
2744
2745
1.98M
  switch (id)
2746
1.98M
  {
2747
17.4k
    case FreeRDP_AadServerHostname:
2748
17.4k
      return settings->AadServerHostname;
2749
2750
17.4k
    case FreeRDP_AcceptedCert:
2751
17.4k
      return settings->AcceptedCert;
2752
2753
34.8k
    case FreeRDP_ActionScript:
2754
34.8k
      return settings->ActionScript;
2755
2756
17.4k
    case FreeRDP_AllowedTlsCiphers:
2757
17.4k
      return settings->AllowedTlsCiphers;
2758
2759
17.4k
    case FreeRDP_AlternateShell:
2760
17.4k
      return settings->AlternateShell;
2761
2762
17.4k
    case FreeRDP_AssistanceFile:
2763
17.4k
      return settings->AssistanceFile;
2764
2765
17.4k
    case FreeRDP_AuthenticationPackageList:
2766
17.4k
      return settings->AuthenticationPackageList;
2767
2768
17.4k
    case FreeRDP_AuthenticationServiceClass:
2769
17.4k
      return settings->AuthenticationServiceClass;
2770
2771
17.4k
    case FreeRDP_BitmapCachePersistFile:
2772
17.4k
      return settings->BitmapCachePersistFile;
2773
2774
17.4k
    case FreeRDP_CardName:
2775
17.4k
      return settings->CardName;
2776
2777
17.4k
    case FreeRDP_CertificateAcceptedFingerprints:
2778
17.4k
      return settings->CertificateAcceptedFingerprints;
2779
2780
17.4k
    case FreeRDP_CertificateName:
2781
17.4k
      return settings->CertificateName;
2782
2783
17.4k
    case FreeRDP_ClientAddress:
2784
17.4k
      return settings->ClientAddress;
2785
2786
87.2k
    case FreeRDP_ClientDir:
2787
87.2k
      return settings->ClientDir;
2788
2789
17.4k
    case FreeRDP_ClientHostname:
2790
17.4k
      return settings->ClientHostname;
2791
2792
17.4k
    case FreeRDP_ClientProductId:
2793
17.4k
      return settings->ClientProductId;
2794
2795
17.4k
    case FreeRDP_ClipboardUseSelection:
2796
17.4k
      return settings->ClipboardUseSelection;
2797
2798
17.4k
    case FreeRDP_ComputerName:
2799
17.4k
      return settings->ComputerName;
2800
2801
17.4k
    case FreeRDP_ConfigPath:
2802
17.4k
      return settings->ConfigPath;
2803
2804
17.4k
    case FreeRDP_ConnectionFile:
2805
17.4k
      return settings->ConnectionFile;
2806
2807
17.4k
    case FreeRDP_ContainerName:
2808
17.4k
      return settings->ContainerName;
2809
2810
17.4k
    case FreeRDP_CspName:
2811
17.4k
      return settings->CspName;
2812
2813
17.4k
    case FreeRDP_CurrentPath:
2814
17.4k
      return settings->CurrentPath;
2815
2816
17.4k
    case FreeRDP_Domain:
2817
17.4k
      return settings->Domain;
2818
2819
17.4k
    case FreeRDP_DrivesToRedirect:
2820
17.4k
      return settings->DrivesToRedirect;
2821
2822
17.4k
    case FreeRDP_DumpRemoteFxFile:
2823
17.4k
      return settings->DumpRemoteFxFile;
2824
2825
17.4k
    case FreeRDP_DynamicDSTTimeZoneKeyName:
2826
17.4k
      return settings->DynamicDSTTimeZoneKeyName;
2827
2828
17.4k
    case FreeRDP_GatewayAcceptedCert:
2829
17.4k
      return settings->GatewayAcceptedCert;
2830
2831
17.4k
    case FreeRDP_GatewayAccessToken:
2832
17.4k
      return settings->GatewayAccessToken;
2833
2834
17.4k
    case FreeRDP_GatewayAvdAadtenantid:
2835
17.4k
      return settings->GatewayAvdAadtenantid;
2836
2837
17.4k
    case FreeRDP_GatewayAvdAccessAadFormat:
2838
17.4k
      return settings->GatewayAvdAccessAadFormat;
2839
2840
17.4k
    case FreeRDP_GatewayAvdAccessTokenFormat:
2841
17.4k
      return settings->GatewayAvdAccessTokenFormat;
2842
2843
17.4k
    case FreeRDP_GatewayAvdActivityhint:
2844
17.4k
      return settings->GatewayAvdActivityhint;
2845
2846
17.4k
    case FreeRDP_GatewayAvdArmpath:
2847
17.4k
      return settings->GatewayAvdArmpath;
2848
2849
17.4k
    case FreeRDP_GatewayAvdClientID:
2850
17.4k
      return settings->GatewayAvdClientID;
2851
2852
17.4k
    case FreeRDP_GatewayAvdDiagnosticserviceurl:
2853
17.4k
      return settings->GatewayAvdDiagnosticserviceurl;
2854
2855
17.4k
    case FreeRDP_GatewayAvdGeo:
2856
17.4k
      return settings->GatewayAvdGeo;
2857
2858
17.4k
    case FreeRDP_GatewayAvdHubdiscoverygeourl:
2859
17.4k
      return settings->GatewayAvdHubdiscoverygeourl;
2860
2861
17.4k
    case FreeRDP_GatewayAvdScope:
2862
17.4k
      return settings->GatewayAvdScope;
2863
2864
17.4k
    case FreeRDP_GatewayAvdWvdEndpointPool:
2865
17.4k
      return settings->GatewayAvdWvdEndpointPool;
2866
2867
17.4k
    case FreeRDP_GatewayAzureActiveDirectory:
2868
17.4k
      return settings->GatewayAzureActiveDirectory;
2869
2870
17.4k
    case FreeRDP_GatewayDomain:
2871
17.4k
      return settings->GatewayDomain;
2872
2873
17.4k
    case FreeRDP_GatewayHostname:
2874
17.4k
      return settings->GatewayHostname;
2875
2876
17.4k
    case FreeRDP_GatewayHttpExtAuthBearer:
2877
17.4k
      return settings->GatewayHttpExtAuthBearer;
2878
2879
17.4k
    case FreeRDP_GatewayHttpMsUserAgent:
2880
17.4k
      return settings->GatewayHttpMsUserAgent;
2881
2882
17.4k
    case FreeRDP_GatewayHttpReferer:
2883
17.4k
      return settings->GatewayHttpReferer;
2884
2885
17.4k
    case FreeRDP_GatewayHttpUserAgent:
2886
17.4k
      return settings->GatewayHttpUserAgent;
2887
2888
17.4k
    case FreeRDP_GatewayPassword:
2889
17.4k
      return settings->GatewayPassword;
2890
2891
17.4k
    case FreeRDP_GatewayUrl:
2892
17.4k
      return settings->GatewayUrl;
2893
2894
17.4k
    case FreeRDP_GatewayUsername:
2895
17.4k
      return settings->GatewayUsername;
2896
2897
69.7k
    case FreeRDP_HomePath:
2898
69.7k
      return settings->HomePath;
2899
2900
17.4k
    case FreeRDP_ImeFileName:
2901
17.4k
      return settings->ImeFileName;
2902
2903
17.4k
    case FreeRDP_KerberosArmor:
2904
17.4k
      return settings->KerberosArmor;
2905
2906
17.4k
    case FreeRDP_KerberosCache:
2907
17.4k
      return settings->KerberosCache;
2908
2909
17.4k
    case FreeRDP_KerberosKdcUrl:
2910
17.4k
      return settings->KerberosKdcUrl;
2911
2912
17.4k
    case FreeRDP_KerberosKeytab:
2913
17.4k
      return settings->KerberosKeytab;
2914
2915
17.4k
    case FreeRDP_KerberosLifeTime:
2916
17.4k
      return settings->KerberosLifeTime;
2917
2918
17.4k
    case FreeRDP_KerberosRealm:
2919
17.4k
      return settings->KerberosRealm;
2920
2921
17.4k
    case FreeRDP_KerberosRenewableLifeTime:
2922
17.4k
      return settings->KerberosRenewableLifeTime;
2923
2924
17.4k
    case FreeRDP_KerberosStartTime:
2925
17.4k
      return settings->KerberosStartTime;
2926
2927
17.4k
    case FreeRDP_KeyboardPipeName:
2928
17.4k
      return settings->KeyboardPipeName;
2929
2930
17.4k
    case FreeRDP_KeyboardRemappingList:
2931
17.4k
      return settings->KeyboardRemappingList;
2932
2933
17.4k
    case FreeRDP_NtlmSamFile:
2934
17.4k
      return settings->NtlmSamFile;
2935
2936
17.4k
    case FreeRDP_Password:
2937
17.4k
      return settings->Password;
2938
2939
17.4k
    case FreeRDP_PasswordHash:
2940
17.4k
      return settings->PasswordHash;
2941
2942
17.4k
    case FreeRDP_Pkcs11Module:
2943
17.4k
      return settings->Pkcs11Module;
2944
2945
17.4k
    case FreeRDP_PkinitAnchors:
2946
17.4k
      return settings->PkinitAnchors;
2947
2948
17.4k
    case FreeRDP_PlayRemoteFxFile:
2949
17.4k
      return settings->PlayRemoteFxFile;
2950
2951
17.4k
    case FreeRDP_PreconnectionBlob:
2952
17.4k
      return settings->PreconnectionBlob;
2953
2954
17.4k
    case FreeRDP_ProxyHostname:
2955
17.4k
      return settings->ProxyHostname;
2956
2957
17.4k
    case FreeRDP_ProxyPassword:
2958
17.4k
      return settings->ProxyPassword;
2959
2960
17.4k
    case FreeRDP_ProxyUsername:
2961
17.4k
      return settings->ProxyUsername;
2962
2963
17.4k
    case FreeRDP_RDP2TCPArgs:
2964
17.4k
      return settings->RDP2TCPArgs;
2965
2966
17.4k
    case FreeRDP_ReaderName:
2967
17.4k
      return settings->ReaderName;
2968
2969
17.4k
    case FreeRDP_RedirectionAcceptedCert:
2970
17.4k
      return settings->RedirectionAcceptedCert;
2971
2972
17.4k
    case FreeRDP_RedirectionDomain:
2973
17.4k
      return settings->RedirectionDomain;
2974
2975
17.4k
    case FreeRDP_RedirectionTargetFQDN:
2976
17.4k
      return settings->RedirectionTargetFQDN;
2977
2978
17.4k
    case FreeRDP_RedirectionTargetNetBiosName:
2979
17.4k
      return settings->RedirectionTargetNetBiosName;
2980
2981
17.4k
    case FreeRDP_RedirectionUsername:
2982
17.4k
      return settings->RedirectionUsername;
2983
2984
17.4k
    case FreeRDP_RemoteApplicationCmdLine:
2985
17.4k
      return settings->RemoteApplicationCmdLine;
2986
2987
17.4k
    case FreeRDP_RemoteApplicationFile:
2988
17.4k
      return settings->RemoteApplicationFile;
2989
2990
17.4k
    case FreeRDP_RemoteApplicationGuid:
2991
17.4k
      return settings->RemoteApplicationGuid;
2992
2993
17.4k
    case FreeRDP_RemoteApplicationIcon:
2994
17.4k
      return settings->RemoteApplicationIcon;
2995
2996
17.4k
    case FreeRDP_RemoteApplicationName:
2997
17.4k
      return settings->RemoteApplicationName;
2998
2999
17.4k
    case FreeRDP_RemoteApplicationProgram:
3000
17.4k
      return settings->RemoteApplicationProgram;
3001
3002
17.4k
    case FreeRDP_RemoteApplicationWorkingDir:
3003
17.4k
      return settings->RemoteApplicationWorkingDir;
3004
3005
17.4k
    case FreeRDP_RemoteAssistancePassStub:
3006
17.4k
      return settings->RemoteAssistancePassStub;
3007
3008
17.4k
    case FreeRDP_RemoteAssistancePassword:
3009
17.4k
      return settings->RemoteAssistancePassword;
3010
3011
17.4k
    case FreeRDP_RemoteAssistanceRCTicket:
3012
17.4k
      return settings->RemoteAssistanceRCTicket;
3013
3014
17.4k
    case FreeRDP_RemoteAssistanceSessionId:
3015
17.4k
      return settings->RemoteAssistanceSessionId;
3016
3017
17.4k
    case FreeRDP_ServerHostname:
3018
17.4k
      return settings->ServerHostname;
3019
3020
17.4k
    case FreeRDP_ServerLicenseCompanyName:
3021
17.4k
      return settings->ServerLicenseCompanyName;
3022
3023
17.4k
    case FreeRDP_ServerLicenseProductName:
3024
17.4k
      return settings->ServerLicenseProductName;
3025
3026
17.4k
    case FreeRDP_ShellWorkingDirectory:
3027
17.4k
      return settings->ShellWorkingDirectory;
3028
3029
17.4k
    case FreeRDP_SmartcardCertificate:
3030
17.4k
      return settings->SmartcardCertificate;
3031
3032
17.4k
    case FreeRDP_SmartcardPrivateKey:
3033
17.4k
      return settings->SmartcardPrivateKey;
3034
3035
17.4k
    case FreeRDP_SspiModule:
3036
17.4k
      return settings->SspiModule;
3037
3038
17.4k
    case FreeRDP_TargetNetAddress:
3039
17.4k
      return settings->TargetNetAddress;
3040
3041
17.4k
    case FreeRDP_TerminalDescriptor:
3042
17.4k
      return settings->TerminalDescriptor;
3043
3044
17.4k
    case FreeRDP_TlsSecretsFile:
3045
17.4k
      return settings->TlsSecretsFile;
3046
3047
17.4k
    case FreeRDP_TransportDumpFile:
3048
17.4k
      return settings->TransportDumpFile;
3049
3050
17.4k
    case FreeRDP_UserSpecifiedServerName:
3051
17.4k
      return settings->UserSpecifiedServerName;
3052
3053
17.4k
    case FreeRDP_Username:
3054
17.4k
      return settings->Username;
3055
3056
17.4k
    case FreeRDP_WinSCardModule:
3057
17.4k
      return settings->WinSCardModule;
3058
3059
17.4k
    case FreeRDP_WindowTitle:
3060
17.4k
      return settings->WindowTitle;
3061
3062
17.4k
    case FreeRDP_WmClass:
3063
17.4k
      return settings->WmClass;
3064
3065
0
    default:
3066
0
      WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
3067
0
               freerdp_settings_get_type_name_for_key(id));
3068
0
      WINPR_ASSERT(FALSE);
3069
0
      return nullptr;
3070
1.98M
  }
3071
1.98M
}
3072
3073
char* freerdp_settings_get_string_writable(rdpSettings* settings, FreeRDP_Settings_Keys_String id)
3074
0
{
3075
0
  WINPR_ASSERT(settings);
3076
3077
0
  switch (id)
3078
0
  {
3079
0
    case FreeRDP_AadServerHostname:
3080
0
      return settings->AadServerHostname;
3081
3082
0
    case FreeRDP_AcceptedCert:
3083
0
      return settings->AcceptedCert;
3084
3085
0
    case FreeRDP_ActionScript:
3086
0
      return settings->ActionScript;
3087
3088
0
    case FreeRDP_AllowedTlsCiphers:
3089
0
      return settings->AllowedTlsCiphers;
3090
3091
0
    case FreeRDP_AlternateShell:
3092
0
      return settings->AlternateShell;
3093
3094
0
    case FreeRDP_AssistanceFile:
3095
0
      return settings->AssistanceFile;
3096
3097
0
    case FreeRDP_AuthenticationPackageList:
3098
0
      return settings->AuthenticationPackageList;
3099
3100
0
    case FreeRDP_AuthenticationServiceClass:
3101
0
      return settings->AuthenticationServiceClass;
3102
3103
0
    case FreeRDP_BitmapCachePersistFile:
3104
0
      return settings->BitmapCachePersistFile;
3105
3106
0
    case FreeRDP_CardName:
3107
0
      return settings->CardName;
3108
3109
0
    case FreeRDP_CertificateAcceptedFingerprints:
3110
0
      return settings->CertificateAcceptedFingerprints;
3111
3112
0
    case FreeRDP_CertificateName:
3113
0
      return settings->CertificateName;
3114
3115
0
    case FreeRDP_ClientAddress:
3116
0
      return settings->ClientAddress;
3117
3118
0
    case FreeRDP_ClientDir:
3119
0
      return settings->ClientDir;
3120
3121
0
    case FreeRDP_ClientHostname:
3122
0
      return settings->ClientHostname;
3123
3124
0
    case FreeRDP_ClientProductId:
3125
0
      return settings->ClientProductId;
3126
3127
0
    case FreeRDP_ClipboardUseSelection:
3128
0
      return settings->ClipboardUseSelection;
3129
3130
0
    case FreeRDP_ComputerName:
3131
0
      return settings->ComputerName;
3132
3133
0
    case FreeRDP_ConfigPath:
3134
0
      return settings->ConfigPath;
3135
3136
0
    case FreeRDP_ConnectionFile:
3137
0
      return settings->ConnectionFile;
3138
3139
0
    case FreeRDP_ContainerName:
3140
0
      return settings->ContainerName;
3141
3142
0
    case FreeRDP_CspName:
3143
0
      return settings->CspName;
3144
3145
0
    case FreeRDP_CurrentPath:
3146
0
      return settings->CurrentPath;
3147
3148
0
    case FreeRDP_Domain:
3149
0
      return settings->Domain;
3150
3151
0
    case FreeRDP_DrivesToRedirect:
3152
0
      return settings->DrivesToRedirect;
3153
3154
0
    case FreeRDP_DumpRemoteFxFile:
3155
0
      return settings->DumpRemoteFxFile;
3156
3157
0
    case FreeRDP_DynamicDSTTimeZoneKeyName:
3158
0
      return settings->DynamicDSTTimeZoneKeyName;
3159
3160
0
    case FreeRDP_GatewayAcceptedCert:
3161
0
      return settings->GatewayAcceptedCert;
3162
3163
0
    case FreeRDP_GatewayAccessToken:
3164
0
      return settings->GatewayAccessToken;
3165
3166
0
    case FreeRDP_GatewayAvdAadtenantid:
3167
0
      return settings->GatewayAvdAadtenantid;
3168
3169
0
    case FreeRDP_GatewayAvdAccessAadFormat:
3170
0
      return settings->GatewayAvdAccessAadFormat;
3171
3172
0
    case FreeRDP_GatewayAvdAccessTokenFormat:
3173
0
      return settings->GatewayAvdAccessTokenFormat;
3174
3175
0
    case FreeRDP_GatewayAvdActivityhint:
3176
0
      return settings->GatewayAvdActivityhint;
3177
3178
0
    case FreeRDP_GatewayAvdArmpath:
3179
0
      return settings->GatewayAvdArmpath;
3180
3181
0
    case FreeRDP_GatewayAvdClientID:
3182
0
      return settings->GatewayAvdClientID;
3183
3184
0
    case FreeRDP_GatewayAvdDiagnosticserviceurl:
3185
0
      return settings->GatewayAvdDiagnosticserviceurl;
3186
3187
0
    case FreeRDP_GatewayAvdGeo:
3188
0
      return settings->GatewayAvdGeo;
3189
3190
0
    case FreeRDP_GatewayAvdHubdiscoverygeourl:
3191
0
      return settings->GatewayAvdHubdiscoverygeourl;
3192
3193
0
    case FreeRDP_GatewayAvdScope:
3194
0
      return settings->GatewayAvdScope;
3195
3196
0
    case FreeRDP_GatewayAvdWvdEndpointPool:
3197
0
      return settings->GatewayAvdWvdEndpointPool;
3198
3199
0
    case FreeRDP_GatewayAzureActiveDirectory:
3200
0
      return settings->GatewayAzureActiveDirectory;
3201
3202
0
    case FreeRDP_GatewayDomain:
3203
0
      return settings->GatewayDomain;
3204
3205
0
    case FreeRDP_GatewayHostname:
3206
0
      return settings->GatewayHostname;
3207
3208
0
    case FreeRDP_GatewayHttpExtAuthBearer:
3209
0
      return settings->GatewayHttpExtAuthBearer;
3210
3211
0
    case FreeRDP_GatewayHttpMsUserAgent:
3212
0
      return settings->GatewayHttpMsUserAgent;
3213
3214
0
    case FreeRDP_GatewayHttpReferer:
3215
0
      return settings->GatewayHttpReferer;
3216
3217
0
    case FreeRDP_GatewayHttpUserAgent:
3218
0
      return settings->GatewayHttpUserAgent;
3219
3220
0
    case FreeRDP_GatewayPassword:
3221
0
      return settings->GatewayPassword;
3222
3223
0
    case FreeRDP_GatewayUrl:
3224
0
      return settings->GatewayUrl;
3225
3226
0
    case FreeRDP_GatewayUsername:
3227
0
      return settings->GatewayUsername;
3228
3229
0
    case FreeRDP_HomePath:
3230
0
      return settings->HomePath;
3231
3232
0
    case FreeRDP_ImeFileName:
3233
0
      return settings->ImeFileName;
3234
3235
0
    case FreeRDP_KerberosArmor:
3236
0
      return settings->KerberosArmor;
3237
3238
0
    case FreeRDP_KerberosCache:
3239
0
      return settings->KerberosCache;
3240
3241
0
    case FreeRDP_KerberosKdcUrl:
3242
0
      return settings->KerberosKdcUrl;
3243
3244
0
    case FreeRDP_KerberosKeytab:
3245
0
      return settings->KerberosKeytab;
3246
3247
0
    case FreeRDP_KerberosLifeTime:
3248
0
      return settings->KerberosLifeTime;
3249
3250
0
    case FreeRDP_KerberosRealm:
3251
0
      return settings->KerberosRealm;
3252
3253
0
    case FreeRDP_KerberosRenewableLifeTime:
3254
0
      return settings->KerberosRenewableLifeTime;
3255
3256
0
    case FreeRDP_KerberosStartTime:
3257
0
      return settings->KerberosStartTime;
3258
3259
0
    case FreeRDP_KeyboardPipeName:
3260
0
      return settings->KeyboardPipeName;
3261
3262
0
    case FreeRDP_KeyboardRemappingList:
3263
0
      return settings->KeyboardRemappingList;
3264
3265
0
    case FreeRDP_NtlmSamFile:
3266
0
      return settings->NtlmSamFile;
3267
3268
0
    case FreeRDP_Password:
3269
0
      return settings->Password;
3270
3271
0
    case FreeRDP_PasswordHash:
3272
0
      return settings->PasswordHash;
3273
3274
0
    case FreeRDP_Pkcs11Module:
3275
0
      return settings->Pkcs11Module;
3276
3277
0
    case FreeRDP_PkinitAnchors:
3278
0
      return settings->PkinitAnchors;
3279
3280
0
    case FreeRDP_PlayRemoteFxFile:
3281
0
      return settings->PlayRemoteFxFile;
3282
3283
0
    case FreeRDP_PreconnectionBlob:
3284
0
      return settings->PreconnectionBlob;
3285
3286
0
    case FreeRDP_ProxyHostname:
3287
0
      return settings->ProxyHostname;
3288
3289
0
    case FreeRDP_ProxyPassword:
3290
0
      return settings->ProxyPassword;
3291
3292
0
    case FreeRDP_ProxyUsername:
3293
0
      return settings->ProxyUsername;
3294
3295
0
    case FreeRDP_RDP2TCPArgs:
3296
0
      return settings->RDP2TCPArgs;
3297
3298
0
    case FreeRDP_ReaderName:
3299
0
      return settings->ReaderName;
3300
3301
0
    case FreeRDP_RedirectionAcceptedCert:
3302
0
      return settings->RedirectionAcceptedCert;
3303
3304
0
    case FreeRDP_RedirectionDomain:
3305
0
      return settings->RedirectionDomain;
3306
3307
0
    case FreeRDP_RedirectionTargetFQDN:
3308
0
      return settings->RedirectionTargetFQDN;
3309
3310
0
    case FreeRDP_RedirectionTargetNetBiosName:
3311
0
      return settings->RedirectionTargetNetBiosName;
3312
3313
0
    case FreeRDP_RedirectionUsername:
3314
0
      return settings->RedirectionUsername;
3315
3316
0
    case FreeRDP_RemoteApplicationCmdLine:
3317
0
      return settings->RemoteApplicationCmdLine;
3318
3319
0
    case FreeRDP_RemoteApplicationFile:
3320
0
      return settings->RemoteApplicationFile;
3321
3322
0
    case FreeRDP_RemoteApplicationGuid:
3323
0
      return settings->RemoteApplicationGuid;
3324
3325
0
    case FreeRDP_RemoteApplicationIcon:
3326
0
      return settings->RemoteApplicationIcon;
3327
3328
0
    case FreeRDP_RemoteApplicationName:
3329
0
      return settings->RemoteApplicationName;
3330
3331
0
    case FreeRDP_RemoteApplicationProgram:
3332
0
      return settings->RemoteApplicationProgram;
3333
3334
0
    case FreeRDP_RemoteApplicationWorkingDir:
3335
0
      return settings->RemoteApplicationWorkingDir;
3336
3337
0
    case FreeRDP_RemoteAssistancePassStub:
3338
0
      return settings->RemoteAssistancePassStub;
3339
3340
0
    case FreeRDP_RemoteAssistancePassword:
3341
0
      return settings->RemoteAssistancePassword;
3342
3343
0
    case FreeRDP_RemoteAssistanceRCTicket:
3344
0
      return settings->RemoteAssistanceRCTicket;
3345
3346
0
    case FreeRDP_RemoteAssistanceSessionId:
3347
0
      return settings->RemoteAssistanceSessionId;
3348
3349
0
    case FreeRDP_ServerHostname:
3350
0
      return settings->ServerHostname;
3351
3352
0
    case FreeRDP_ServerLicenseCompanyName:
3353
0
      return settings->ServerLicenseCompanyName;
3354
3355
0
    case FreeRDP_ServerLicenseProductName:
3356
0
      return settings->ServerLicenseProductName;
3357
3358
0
    case FreeRDP_ShellWorkingDirectory:
3359
0
      return settings->ShellWorkingDirectory;
3360
3361
0
    case FreeRDP_SmartcardCertificate:
3362
0
      return settings->SmartcardCertificate;
3363
3364
0
    case FreeRDP_SmartcardPrivateKey:
3365
0
      return settings->SmartcardPrivateKey;
3366
3367
0
    case FreeRDP_SspiModule:
3368
0
      return settings->SspiModule;
3369
3370
0
    case FreeRDP_TargetNetAddress:
3371
0
      return settings->TargetNetAddress;
3372
3373
0
    case FreeRDP_TerminalDescriptor:
3374
0
      return settings->TerminalDescriptor;
3375
3376
0
    case FreeRDP_TlsSecretsFile:
3377
0
      return settings->TlsSecretsFile;
3378
3379
0
    case FreeRDP_TransportDumpFile:
3380
0
      return settings->TransportDumpFile;
3381
3382
0
    case FreeRDP_UserSpecifiedServerName:
3383
0
      return settings->UserSpecifiedServerName;
3384
3385
0
    case FreeRDP_Username:
3386
0
      return settings->Username;
3387
3388
0
    case FreeRDP_WinSCardModule:
3389
0
      return settings->WinSCardModule;
3390
3391
0
    case FreeRDP_WindowTitle:
3392
0
      return settings->WindowTitle;
3393
3394
0
    case FreeRDP_WmClass:
3395
0
      return settings->WmClass;
3396
3397
0
    default:
3398
0
      WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
3399
0
               freerdp_settings_get_type_name_for_key(id));
3400
0
      WINPR_ASSERT(FALSE);
3401
0
      return nullptr;
3402
0
  }
3403
0
}
3404
3405
BOOL freerdp_settings_set_string_(WINPR_ATTR_UNUSED rdpSettings* settings,
3406
                                  WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_String id,
3407
                                  const char* val, size_t len)
3408
52.5k
{
3409
52.5k
  union
3410
52.5k
  {
3411
52.5k
    void* v;
3412
52.5k
    const void* cv;
3413
52.5k
    char* c;
3414
52.5k
    const char* cc;
3415
52.5k
  } cnv;
3416
52.5k
  WINPR_ASSERT(settings);
3417
3418
52.5k
  cnv.cc = val;
3419
3420
52.5k
  switch (id)
3421
52.5k
  {
3422
0
    case FreeRDP_AadServerHostname:
3423
0
      return update_string_(&settings->AadServerHostname, cnv.c, len);
3424
3425
0
    case FreeRDP_AcceptedCert:
3426
0
      return update_string_(&settings->AcceptedCert, cnv.c, len);
3427
3428
0
    case FreeRDP_ActionScript:
3429
0
      return update_string_(&settings->ActionScript, cnv.c, len);
3430
3431
0
    case FreeRDP_AllowedTlsCiphers:
3432
0
      return update_string_(&settings->AllowedTlsCiphers, cnv.c, len);
3433
3434
8
    case FreeRDP_AlternateShell:
3435
8
      return update_string_(&settings->AlternateShell, cnv.c, len);
3436
3437
0
    case FreeRDP_AssistanceFile:
3438
0
      return update_string_(&settings->AssistanceFile, cnv.c, len);
3439
3440
0
    case FreeRDP_AuthenticationPackageList:
3441
0
      return update_string_(&settings->AuthenticationPackageList, cnv.c, len);
3442
3443
0
    case FreeRDP_AuthenticationServiceClass:
3444
0
      return update_string_(&settings->AuthenticationServiceClass, cnv.c, len);
3445
3446
0
    case FreeRDP_BitmapCachePersistFile:
3447
0
      return update_string_(&settings->BitmapCachePersistFile, cnv.c, len);
3448
3449
0
    case FreeRDP_CardName:
3450
0
      return update_string_(&settings->CardName, cnv.c, len);
3451
3452
0
    case FreeRDP_CertificateAcceptedFingerprints:
3453
0
      return update_string_(&settings->CertificateAcceptedFingerprints, cnv.c, len);
3454
3455
0
    case FreeRDP_CertificateName:
3456
0
      return update_string_(&settings->CertificateName, cnv.c, len);
3457
3458
23
    case FreeRDP_ClientAddress:
3459
23
      return update_string_(&settings->ClientAddress, cnv.c, len);
3460
3461
14
    case FreeRDP_ClientDir:
3462
14
      return update_string_(&settings->ClientDir, cnv.c, len);
3463
3464
0
    case FreeRDP_ClientHostname:
3465
0
      return update_string_(&settings->ClientHostname, cnv.c, len);
3466
3467
0
    case FreeRDP_ClientProductId:
3468
0
      return update_string_(&settings->ClientProductId, cnv.c, len);
3469
3470
0
    case FreeRDP_ClipboardUseSelection:
3471
0
      return update_string_(&settings->ClipboardUseSelection, cnv.c, len);
3472
3473
0
    case FreeRDP_ComputerName:
3474
0
      return update_string_(&settings->ComputerName, cnv.c, len);
3475
3476
0
    case FreeRDP_ConfigPath:
3477
0
      return update_string_(&settings->ConfigPath, cnv.c, len);
3478
3479
0
    case FreeRDP_ConnectionFile:
3480
0
      return update_string_(&settings->ConnectionFile, cnv.c, len);
3481
3482
0
    case FreeRDP_ContainerName:
3483
0
      return update_string_(&settings->ContainerName, cnv.c, len);
3484
3485
0
    case FreeRDP_CspName:
3486
0
      return update_string_(&settings->CspName, cnv.c, len);
3487
3488
0
    case FreeRDP_CurrentPath:
3489
0
      return update_string_(&settings->CurrentPath, cnv.c, len);
3490
3491
101
    case FreeRDP_Domain:
3492
101
      return update_string_(&settings->Domain, cnv.c, len);
3493
3494
0
    case FreeRDP_DrivesToRedirect:
3495
0
      return update_string_(&settings->DrivesToRedirect, cnv.c, len);
3496
3497
0
    case FreeRDP_DumpRemoteFxFile:
3498
0
      return update_string_(&settings->DumpRemoteFxFile, cnv.c, len);
3499
3500
52.4k
    case FreeRDP_DynamicDSTTimeZoneKeyName:
3501
52.4k
      return update_string_(&settings->DynamicDSTTimeZoneKeyName, cnv.c, len);
3502
3503
0
    case FreeRDP_GatewayAcceptedCert:
3504
0
      return update_string_(&settings->GatewayAcceptedCert, cnv.c, len);
3505
3506
0
    case FreeRDP_GatewayAccessToken:
3507
0
      return update_string_(&settings->GatewayAccessToken, cnv.c, len);
3508
3509
0
    case FreeRDP_GatewayAvdAadtenantid:
3510
0
      return update_string_(&settings->GatewayAvdAadtenantid, cnv.c, len);
3511
3512
0
    case FreeRDP_GatewayAvdAccessAadFormat:
3513
0
      return update_string_(&settings->GatewayAvdAccessAadFormat, cnv.c, len);
3514
3515
0
    case FreeRDP_GatewayAvdAccessTokenFormat:
3516
0
      return update_string_(&settings->GatewayAvdAccessTokenFormat, cnv.c, len);
3517
3518
0
    case FreeRDP_GatewayAvdActivityhint:
3519
0
      return update_string_(&settings->GatewayAvdActivityhint, cnv.c, len);
3520
3521
0
    case FreeRDP_GatewayAvdArmpath:
3522
0
      return update_string_(&settings->GatewayAvdArmpath, cnv.c, len);
3523
3524
0
    case FreeRDP_GatewayAvdClientID:
3525
0
      return update_string_(&settings->GatewayAvdClientID, cnv.c, len);
3526
3527
0
    case FreeRDP_GatewayAvdDiagnosticserviceurl:
3528
0
      return update_string_(&settings->GatewayAvdDiagnosticserviceurl, cnv.c, len);
3529
3530
0
    case FreeRDP_GatewayAvdGeo:
3531
0
      return update_string_(&settings->GatewayAvdGeo, cnv.c, len);
3532
3533
0
    case FreeRDP_GatewayAvdHubdiscoverygeourl:
3534
0
      return update_string_(&settings->GatewayAvdHubdiscoverygeourl, cnv.c, len);
3535
3536
0
    case FreeRDP_GatewayAvdScope:
3537
0
      return update_string_(&settings->GatewayAvdScope, cnv.c, len);
3538
3539
0
    case FreeRDP_GatewayAvdWvdEndpointPool:
3540
0
      return update_string_(&settings->GatewayAvdWvdEndpointPool, cnv.c, len);
3541
3542
0
    case FreeRDP_GatewayAzureActiveDirectory:
3543
0
      return update_string_(&settings->GatewayAzureActiveDirectory, cnv.c, len);
3544
3545
0
    case FreeRDP_GatewayDomain:
3546
0
      return update_string_(&settings->GatewayDomain, cnv.c, len);
3547
3548
0
    case FreeRDP_GatewayHostname:
3549
0
      return update_string_(&settings->GatewayHostname, cnv.c, len);
3550
3551
0
    case FreeRDP_GatewayHttpExtAuthBearer:
3552
0
      return update_string_(&settings->GatewayHttpExtAuthBearer, cnv.c, len);
3553
3554
0
    case FreeRDP_GatewayHttpMsUserAgent:
3555
0
      return update_string_(&settings->GatewayHttpMsUserAgent, cnv.c, len);
3556
3557
0
    case FreeRDP_GatewayHttpReferer:
3558
0
      return update_string_(&settings->GatewayHttpReferer, cnv.c, len);
3559
3560
0
    case FreeRDP_GatewayHttpUserAgent:
3561
0
      return update_string_(&settings->GatewayHttpUserAgent, cnv.c, len);
3562
3563
0
    case FreeRDP_GatewayPassword:
3564
0
      return update_string_(&settings->GatewayPassword, cnv.c, len);
3565
3566
0
    case FreeRDP_GatewayUrl:
3567
0
      return update_string_(&settings->GatewayUrl, cnv.c, len);
3568
3569
0
    case FreeRDP_GatewayUsername:
3570
0
      return update_string_(&settings->GatewayUsername, cnv.c, len);
3571
3572
0
    case FreeRDP_HomePath:
3573
0
      return update_string_(&settings->HomePath, cnv.c, len);
3574
3575
0
    case FreeRDP_ImeFileName:
3576
0
      return update_string_(&settings->ImeFileName, cnv.c, len);
3577
3578
0
    case FreeRDP_KerberosArmor:
3579
0
      return update_string_(&settings->KerberosArmor, cnv.c, len);
3580
3581
0
    case FreeRDP_KerberosCache:
3582
0
      return update_string_(&settings->KerberosCache, cnv.c, len);
3583
3584
0
    case FreeRDP_KerberosKdcUrl:
3585
0
      return update_string_(&settings->KerberosKdcUrl, cnv.c, len);
3586
3587
0
    case FreeRDP_KerberosKeytab:
3588
0
      return update_string_(&settings->KerberosKeytab, cnv.c, len);
3589
3590
0
    case FreeRDP_KerberosLifeTime:
3591
0
      return update_string_(&settings->KerberosLifeTime, cnv.c, len);
3592
3593
0
    case FreeRDP_KerberosRealm:
3594
0
      return update_string_(&settings->KerberosRealm, cnv.c, len);
3595
3596
0
    case FreeRDP_KerberosRenewableLifeTime:
3597
0
      return update_string_(&settings->KerberosRenewableLifeTime, cnv.c, len);
3598
3599
0
    case FreeRDP_KerberosStartTime:
3600
0
      return update_string_(&settings->KerberosStartTime, cnv.c, len);
3601
3602
0
    case FreeRDP_KeyboardPipeName:
3603
0
      return update_string_(&settings->KeyboardPipeName, cnv.c, len);
3604
3605
0
    case FreeRDP_KeyboardRemappingList:
3606
0
      return update_string_(&settings->KeyboardRemappingList, cnv.c, len);
3607
3608
0
    case FreeRDP_NtlmSamFile:
3609
0
      return update_string_(&settings->NtlmSamFile, cnv.c, len);
3610
3611
12
    case FreeRDP_Password:
3612
12
      return update_string_(&settings->Password, cnv.c, len);
3613
3614
0
    case FreeRDP_PasswordHash:
3615
0
      return update_string_(&settings->PasswordHash, cnv.c, len);
3616
3617
0
    case FreeRDP_Pkcs11Module:
3618
0
      return update_string_(&settings->Pkcs11Module, cnv.c, len);
3619
3620
0
    case FreeRDP_PkinitAnchors:
3621
0
      return update_string_(&settings->PkinitAnchors, cnv.c, len);
3622
3623
0
    case FreeRDP_PlayRemoteFxFile:
3624
0
      return update_string_(&settings->PlayRemoteFxFile, cnv.c, len);
3625
3626
0
    case FreeRDP_PreconnectionBlob:
3627
0
      return update_string_(&settings->PreconnectionBlob, cnv.c, len);
3628
3629
0
    case FreeRDP_ProxyHostname:
3630
0
      return update_string_(&settings->ProxyHostname, cnv.c, len);
3631
3632
0
    case FreeRDP_ProxyPassword:
3633
0
      return update_string_(&settings->ProxyPassword, cnv.c, len);
3634
3635
0
    case FreeRDP_ProxyUsername:
3636
0
      return update_string_(&settings->ProxyUsername, cnv.c, len);
3637
3638
0
    case FreeRDP_RDP2TCPArgs:
3639
0
      return update_string_(&settings->RDP2TCPArgs, cnv.c, len);
3640
3641
0
    case FreeRDP_ReaderName:
3642
0
      return update_string_(&settings->ReaderName, cnv.c, len);
3643
3644
0
    case FreeRDP_RedirectionAcceptedCert:
3645
0
      return update_string_(&settings->RedirectionAcceptedCert, cnv.c, len);
3646
3647
0
    case FreeRDP_RedirectionDomain:
3648
0
      return update_string_(&settings->RedirectionDomain, cnv.c, len);
3649
3650
0
    case FreeRDP_RedirectionTargetFQDN:
3651
0
      return update_string_(&settings->RedirectionTargetFQDN, cnv.c, len);
3652
3653
0
    case FreeRDP_RedirectionTargetNetBiosName:
3654
0
      return update_string_(&settings->RedirectionTargetNetBiosName, cnv.c, len);
3655
3656
0
    case FreeRDP_RedirectionUsername:
3657
0
      return update_string_(&settings->RedirectionUsername, cnv.c, len);
3658
3659
0
    case FreeRDP_RemoteApplicationCmdLine:
3660
0
      return update_string_(&settings->RemoteApplicationCmdLine, cnv.c, len);
3661
3662
0
    case FreeRDP_RemoteApplicationFile:
3663
0
      return update_string_(&settings->RemoteApplicationFile, cnv.c, len);
3664
3665
0
    case FreeRDP_RemoteApplicationGuid:
3666
0
      return update_string_(&settings->RemoteApplicationGuid, cnv.c, len);
3667
3668
0
    case FreeRDP_RemoteApplicationIcon:
3669
0
      return update_string_(&settings->RemoteApplicationIcon, cnv.c, len);
3670
3671
0
    case FreeRDP_RemoteApplicationName:
3672
0
      return update_string_(&settings->RemoteApplicationName, cnv.c, len);
3673
3674
0
    case FreeRDP_RemoteApplicationProgram:
3675
0
      return update_string_(&settings->RemoteApplicationProgram, cnv.c, len);
3676
3677
0
    case FreeRDP_RemoteApplicationWorkingDir:
3678
0
      return update_string_(&settings->RemoteApplicationWorkingDir, cnv.c, len);
3679
3680
0
    case FreeRDP_RemoteAssistancePassStub:
3681
0
      return update_string_(&settings->RemoteAssistancePassStub, cnv.c, len);
3682
3683
0
    case FreeRDP_RemoteAssistancePassword:
3684
0
      return update_string_(&settings->RemoteAssistancePassword, cnv.c, len);
3685
3686
0
    case FreeRDP_RemoteAssistanceRCTicket:
3687
0
      return update_string_(&settings->RemoteAssistanceRCTicket, cnv.c, len);
3688
3689
0
    case FreeRDP_RemoteAssistanceSessionId:
3690
0
      return update_string_(&settings->RemoteAssistanceSessionId, cnv.c, len);
3691
3692
0
    case FreeRDP_ServerHostname:
3693
0
      return update_string_(&settings->ServerHostname, cnv.c, len);
3694
3695
0
    case FreeRDP_ServerLicenseCompanyName:
3696
0
      return update_string_(&settings->ServerLicenseCompanyName, cnv.c, len);
3697
3698
0
    case FreeRDP_ServerLicenseProductName:
3699
0
      return update_string_(&settings->ServerLicenseProductName, cnv.c, len);
3700
3701
5
    case FreeRDP_ShellWorkingDirectory:
3702
5
      return update_string_(&settings->ShellWorkingDirectory, cnv.c, len);
3703
3704
0
    case FreeRDP_SmartcardCertificate:
3705
0
      return update_string_(&settings->SmartcardCertificate, cnv.c, len);
3706
3707
0
    case FreeRDP_SmartcardPrivateKey:
3708
0
      return update_string_(&settings->SmartcardPrivateKey, cnv.c, len);
3709
3710
0
    case FreeRDP_SspiModule:
3711
0
      return update_string_(&settings->SspiModule, cnv.c, len);
3712
3713
0
    case FreeRDP_TargetNetAddress:
3714
0
      return update_string_(&settings->TargetNetAddress, cnv.c, len);
3715
3716
0
    case FreeRDP_TerminalDescriptor:
3717
0
      return update_string_(&settings->TerminalDescriptor, cnv.c, len);
3718
3719
0
    case FreeRDP_TlsSecretsFile:
3720
0
      return update_string_(&settings->TlsSecretsFile, cnv.c, len);
3721
3722
0
    case FreeRDP_TransportDumpFile:
3723
0
      return update_string_(&settings->TransportDumpFile, cnv.c, len);
3724
3725
0
    case FreeRDP_UserSpecifiedServerName:
3726
0
      return update_string_(&settings->UserSpecifiedServerName, cnv.c, len);
3727
3728
12
    case FreeRDP_Username:
3729
12
      return update_string_(&settings->Username, cnv.c, len);
3730
3731
0
    case FreeRDP_WinSCardModule:
3732
0
      return update_string_(&settings->WinSCardModule, cnv.c, len);
3733
3734
0
    case FreeRDP_WindowTitle:
3735
0
      return update_string_(&settings->WindowTitle, cnv.c, len);
3736
3737
0
    case FreeRDP_WmClass:
3738
0
      return update_string_(&settings->WmClass, cnv.c, len);
3739
3740
0
    default:
3741
0
      WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
3742
0
               freerdp_settings_get_type_name_for_key(id));
3743
0
      return FALSE;
3744
52.5k
  }
3745
0
  return TRUE;
3746
52.5k
}
3747
3748
BOOL freerdp_settings_set_string_len(rdpSettings* settings, FreeRDP_Settings_Keys_String id,
3749
                                     const char* val, size_t len)
3750
96.3k
{
3751
96.3k
  return freerdp_settings_set_string_copy_(settings, id, val, len, TRUE);
3752
96.3k
}
3753
3754
BOOL freerdp_settings_set_string(rdpSettings* settings, FreeRDP_Settings_Keys_String id,
3755
                                 const char* val)
3756
958k
{
3757
958k
  size_t len = 0;
3758
958k
  if (val)
3759
943k
    len = strlen(val);
3760
958k
  return freerdp_settings_set_string_copy_(settings, id, val, len, TRUE);
3761
958k
}
3762
3763
BOOL freerdp_settings_set_string_copy_(WINPR_ATTR_UNUSED rdpSettings* settings,
3764
                                       WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_String id,
3765
                                       const char* val, size_t len, BOOL cleanup)
3766
14.0M
{
3767
14.0M
  union
3768
14.0M
  {
3769
14.0M
    void* v;
3770
14.0M
    const void* cv;
3771
14.0M
    char* c;
3772
14.0M
    const char* cc;
3773
14.0M
  } cnv;
3774
14.0M
  WINPR_ASSERT(settings);
3775
3776
14.0M
  cnv.cc = val;
3777
3778
14.0M
  switch (id)
3779
14.0M
  {
3780
122k
    case FreeRDP_AadServerHostname:
3781
122k
      return update_string_copy_(&settings->AadServerHostname, cnv.cc, len, cleanup);
3782
3783
122k
    case FreeRDP_AcceptedCert:
3784
122k
      return update_string_copy_(&settings->AcceptedCert, cnv.cc, len, cleanup);
3785
3786
191k
    case FreeRDP_ActionScript:
3787
191k
      return update_string_copy_(&settings->ActionScript, cnv.cc, len, cleanup);
3788
3789
122k
    case FreeRDP_AllowedTlsCiphers:
3790
122k
      return update_string_copy_(&settings->AllowedTlsCiphers, cnv.cc, len, cleanup);
3791
3792
122k
    case FreeRDP_AlternateShell:
3793
122k
      return update_string_copy_(&settings->AlternateShell, cnv.cc, len, cleanup);
3794
3795
122k
    case FreeRDP_AssistanceFile:
3796
122k
      return update_string_copy_(&settings->AssistanceFile, cnv.cc, len, cleanup);
3797
3798
122k
    case FreeRDP_AuthenticationPackageList:
3799
122k
      return update_string_copy_(&settings->AuthenticationPackageList, cnv.cc, len, cleanup);
3800
3801
122k
    case FreeRDP_AuthenticationServiceClass:
3802
122k
      return update_string_copy_(&settings->AuthenticationServiceClass, cnv.cc, len, cleanup);
3803
3804
122k
    case FreeRDP_BitmapCachePersistFile:
3805
122k
      return update_string_copy_(&settings->BitmapCachePersistFile, cnv.cc, len, cleanup);
3806
3807
122k
    case FreeRDP_CardName:
3808
122k
      return update_string_copy_(&settings->CardName, cnv.cc, len, cleanup);
3809
3810
122k
    case FreeRDP_CertificateAcceptedFingerprints:
3811
122k
      return update_string_copy_(&settings->CertificateAcceptedFingerprints, cnv.cc, len,
3812
122k
                                 cleanup);
3813
3814
122k
    case FreeRDP_CertificateName:
3815
122k
      return update_string_copy_(&settings->CertificateName, cnv.cc, len, cleanup);
3816
3817
122k
    case FreeRDP_ClientAddress:
3818
122k
      return update_string_copy_(&settings->ClientAddress, cnv.cc, len, cleanup);
3819
3820
192k
    case FreeRDP_ClientDir:
3821
192k
      return update_string_copy_(&settings->ClientDir, cnv.cc, len, cleanup);
3822
3823
192k
    case FreeRDP_ClientHostname:
3824
192k
      return update_string_copy_(&settings->ClientHostname, cnv.cc, len, cleanup);
3825
3826
192k
    case FreeRDP_ClientProductId:
3827
192k
      return update_string_copy_(&settings->ClientProductId, cnv.cc, len, cleanup);
3828
3829
122k
    case FreeRDP_ClipboardUseSelection:
3830
122k
      return update_string_copy_(&settings->ClipboardUseSelection, cnv.cc, len, cleanup);
3831
3832
191k
    case FreeRDP_ComputerName:
3833
191k
      return update_string_copy_(&settings->ComputerName, cnv.cc, len, cleanup);
3834
3835
174k
    case FreeRDP_ConfigPath:
3836
174k
      return update_string_copy_(&settings->ConfigPath, cnv.cc, len, cleanup);
3837
3838
122k
    case FreeRDP_ConnectionFile:
3839
122k
      return update_string_copy_(&settings->ConnectionFile, cnv.cc, len, cleanup);
3840
3841
122k
    case FreeRDP_ContainerName:
3842
122k
      return update_string_copy_(&settings->ContainerName, cnv.cc, len, cleanup);
3843
3844
122k
    case FreeRDP_CspName:
3845
122k
      return update_string_copy_(&settings->CspName, cnv.cc, len, cleanup);
3846
3847
122k
    case FreeRDP_CurrentPath:
3848
122k
      return update_string_copy_(&settings->CurrentPath, cnv.cc, len, cleanup);
3849
3850
123k
    case FreeRDP_Domain:
3851
123k
      return update_string_copy_(&settings->Domain, cnv.cc, len, cleanup);
3852
3853
122k
    case FreeRDP_DrivesToRedirect:
3854
122k
      return update_string_copy_(&settings->DrivesToRedirect, cnv.cc, len, cleanup);
3855
3856
122k
    case FreeRDP_DumpRemoteFxFile:
3857
122k
      return update_string_copy_(&settings->DumpRemoteFxFile, cnv.cc, len, cleanup);
3858
3859
122k
    case FreeRDP_DynamicDSTTimeZoneKeyName:
3860
122k
      return update_string_copy_(&settings->DynamicDSTTimeZoneKeyName, cnv.cc, len, cleanup);
3861
3862
122k
    case FreeRDP_GatewayAcceptedCert:
3863
122k
      return update_string_copy_(&settings->GatewayAcceptedCert, cnv.cc, len, cleanup);
3864
3865
122k
    case FreeRDP_GatewayAccessToken:
3866
122k
      return update_string_copy_(&settings->GatewayAccessToken, cnv.cc, len, cleanup);
3867
3868
166k
    case FreeRDP_GatewayAvdAadtenantid:
3869
166k
      return update_string_copy_(&settings->GatewayAvdAadtenantid, cnv.cc, len, cleanup);
3870
3871
166k
    case FreeRDP_GatewayAvdAccessAadFormat:
3872
166k
      return update_string_copy_(&settings->GatewayAvdAccessAadFormat, cnv.cc, len, cleanup);
3873
3874
166k
    case FreeRDP_GatewayAvdAccessTokenFormat:
3875
166k
      return update_string_copy_(&settings->GatewayAvdAccessTokenFormat, cnv.cc, len,
3876
166k
                                 cleanup);
3877
3878
122k
    case FreeRDP_GatewayAvdActivityhint:
3879
122k
      return update_string_copy_(&settings->GatewayAvdActivityhint, cnv.cc, len, cleanup);
3880
3881
122k
    case FreeRDP_GatewayAvdArmpath:
3882
122k
      return update_string_copy_(&settings->GatewayAvdArmpath, cnv.cc, len, cleanup);
3883
3884
166k
    case FreeRDP_GatewayAvdClientID:
3885
166k
      return update_string_copy_(&settings->GatewayAvdClientID, cnv.cc, len, cleanup);
3886
3887
122k
    case FreeRDP_GatewayAvdDiagnosticserviceurl:
3888
122k
      return update_string_copy_(&settings->GatewayAvdDiagnosticserviceurl, cnv.cc, len,
3889
122k
                                 cleanup);
3890
3891
122k
    case FreeRDP_GatewayAvdGeo:
3892
122k
      return update_string_copy_(&settings->GatewayAvdGeo, cnv.cc, len, cleanup);
3893
3894
122k
    case FreeRDP_GatewayAvdHubdiscoverygeourl:
3895
122k
      return update_string_copy_(&settings->GatewayAvdHubdiscoverygeourl, cnv.cc, len,
3896
122k
                                 cleanup);
3897
3898
166k
    case FreeRDP_GatewayAvdScope:
3899
166k
      return update_string_copy_(&settings->GatewayAvdScope, cnv.cc, len, cleanup);
3900
3901
122k
    case FreeRDP_GatewayAvdWvdEndpointPool:
3902
122k
      return update_string_copy_(&settings->GatewayAvdWvdEndpointPool, cnv.cc, len, cleanup);
3903
3904
166k
    case FreeRDP_GatewayAzureActiveDirectory:
3905
166k
      return update_string_copy_(&settings->GatewayAzureActiveDirectory, cnv.cc, len,
3906
166k
                                 cleanup);
3907
3908
122k
    case FreeRDP_GatewayDomain:
3909
122k
      return update_string_copy_(&settings->GatewayDomain, cnv.cc, len, cleanup);
3910
3911
122k
    case FreeRDP_GatewayHostname:
3912
122k
      return update_string_copy_(&settings->GatewayHostname, cnv.cc, len, cleanup);
3913
3914
122k
    case FreeRDP_GatewayHttpExtAuthBearer:
3915
122k
      return update_string_copy_(&settings->GatewayHttpExtAuthBearer, cnv.cc, len, cleanup);
3916
3917
166k
    case FreeRDP_GatewayHttpMsUserAgent:
3918
166k
      return update_string_copy_(&settings->GatewayHttpMsUserAgent, cnv.cc, len, cleanup);
3919
3920
166k
    case FreeRDP_GatewayHttpReferer:
3921
166k
      return update_string_copy_(&settings->GatewayHttpReferer, cnv.cc, len, cleanup);
3922
3923
166k
    case FreeRDP_GatewayHttpUserAgent:
3924
166k
      return update_string_copy_(&settings->GatewayHttpUserAgent, cnv.cc, len, cleanup);
3925
3926
122k
    case FreeRDP_GatewayPassword:
3927
122k
      return update_string_copy_(&settings->GatewayPassword, cnv.cc, len, cleanup);
3928
3929
122k
    case FreeRDP_GatewayUrl:
3930
122k
      return update_string_copy_(&settings->GatewayUrl, cnv.cc, len, cleanup);
3931
3932
122k
    case FreeRDP_GatewayUsername:
3933
122k
      return update_string_copy_(&settings->GatewayUsername, cnv.cc, len, cleanup);
3934
3935
174k
    case FreeRDP_HomePath:
3936
174k
      return update_string_copy_(&settings->HomePath, cnv.cc, len, cleanup);
3937
3938
175k
    case FreeRDP_ImeFileName:
3939
175k
      return update_string_copy_(&settings->ImeFileName, cnv.cc, len, cleanup);
3940
3941
122k
    case FreeRDP_KerberosArmor:
3942
122k
      return update_string_copy_(&settings->KerberosArmor, cnv.cc, len, cleanup);
3943
3944
122k
    case FreeRDP_KerberosCache:
3945
122k
      return update_string_copy_(&settings->KerberosCache, cnv.cc, len, cleanup);
3946
3947
122k
    case FreeRDP_KerberosKdcUrl:
3948
122k
      return update_string_copy_(&settings->KerberosKdcUrl, cnv.cc, len, cleanup);
3949
3950
122k
    case FreeRDP_KerberosKeytab:
3951
122k
      return update_string_copy_(&settings->KerberosKeytab, cnv.cc, len, cleanup);
3952
3953
122k
    case FreeRDP_KerberosLifeTime:
3954
122k
      return update_string_copy_(&settings->KerberosLifeTime, cnv.cc, len, cleanup);
3955
3956
122k
    case FreeRDP_KerberosRealm:
3957
122k
      return update_string_copy_(&settings->KerberosRealm, cnv.cc, len, cleanup);
3958
3959
122k
    case FreeRDP_KerberosRenewableLifeTime:
3960
122k
      return update_string_copy_(&settings->KerberosRenewableLifeTime, cnv.cc, len, cleanup);
3961
3962
122k
    case FreeRDP_KerberosStartTime:
3963
122k
      return update_string_copy_(&settings->KerberosStartTime, cnv.cc, len, cleanup);
3964
3965
122k
    case FreeRDP_KeyboardPipeName:
3966
122k
      return update_string_copy_(&settings->KeyboardPipeName, cnv.cc, len, cleanup);
3967
3968
122k
    case FreeRDP_KeyboardRemappingList:
3969
122k
      return update_string_copy_(&settings->KeyboardRemappingList, cnv.cc, len, cleanup);
3970
3971
122k
    case FreeRDP_NtlmSamFile:
3972
122k
      return update_string_copy_(&settings->NtlmSamFile, cnv.cc, len, cleanup);
3973
3974
122k
    case FreeRDP_Password:
3975
122k
      return update_string_copy_(&settings->Password, cnv.cc, len, cleanup);
3976
3977
122k
    case FreeRDP_PasswordHash:
3978
122k
      return update_string_copy_(&settings->PasswordHash, cnv.cc, len, cleanup);
3979
3980
122k
    case FreeRDP_Pkcs11Module:
3981
122k
      return update_string_copy_(&settings->Pkcs11Module, cnv.cc, len, cleanup);
3982
3983
122k
    case FreeRDP_PkinitAnchors:
3984
122k
      return update_string_copy_(&settings->PkinitAnchors, cnv.cc, len, cleanup);
3985
3986
122k
    case FreeRDP_PlayRemoteFxFile:
3987
122k
      return update_string_copy_(&settings->PlayRemoteFxFile, cnv.cc, len, cleanup);
3988
3989
122k
    case FreeRDP_PreconnectionBlob:
3990
122k
      return update_string_copy_(&settings->PreconnectionBlob, cnv.cc, len, cleanup);
3991
3992
122k
    case FreeRDP_ProxyHostname:
3993
122k
      return update_string_copy_(&settings->ProxyHostname, cnv.cc, len, cleanup);
3994
3995
122k
    case FreeRDP_ProxyPassword:
3996
122k
      return update_string_copy_(&settings->ProxyPassword, cnv.cc, len, cleanup);
3997
3998
122k
    case FreeRDP_ProxyUsername:
3999
122k
      return update_string_copy_(&settings->ProxyUsername, cnv.cc, len, cleanup);
4000
4001
122k
    case FreeRDP_RDP2TCPArgs:
4002
122k
      return update_string_copy_(&settings->RDP2TCPArgs, cnv.cc, len, cleanup);
4003
4004
122k
    case FreeRDP_ReaderName:
4005
122k
      return update_string_copy_(&settings->ReaderName, cnv.cc, len, cleanup);
4006
4007
122k
    case FreeRDP_RedirectionAcceptedCert:
4008
122k
      return update_string_copy_(&settings->RedirectionAcceptedCert, cnv.cc, len, cleanup);
4009
4010
122k
    case FreeRDP_RedirectionDomain:
4011
122k
      return update_string_copy_(&settings->RedirectionDomain, cnv.cc, len, cleanup);
4012
4013
122k
    case FreeRDP_RedirectionTargetFQDN:
4014
122k
      return update_string_copy_(&settings->RedirectionTargetFQDN, cnv.cc, len, cleanup);
4015
4016
122k
    case FreeRDP_RedirectionTargetNetBiosName:
4017
122k
      return update_string_copy_(&settings->RedirectionTargetNetBiosName, cnv.cc, len,
4018
122k
                                 cleanup);
4019
4020
122k
    case FreeRDP_RedirectionUsername:
4021
122k
      return update_string_copy_(&settings->RedirectionUsername, cnv.cc, len, cleanup);
4022
4023
122k
    case FreeRDP_RemoteApplicationCmdLine:
4024
122k
      return update_string_copy_(&settings->RemoteApplicationCmdLine, cnv.cc, len, cleanup);
4025
4026
122k
    case FreeRDP_RemoteApplicationFile:
4027
122k
      return update_string_copy_(&settings->RemoteApplicationFile, cnv.cc, len, cleanup);
4028
4029
122k
    case FreeRDP_RemoteApplicationGuid:
4030
122k
      return update_string_copy_(&settings->RemoteApplicationGuid, cnv.cc, len, cleanup);
4031
4032
122k
    case FreeRDP_RemoteApplicationIcon:
4033
122k
      return update_string_copy_(&settings->RemoteApplicationIcon, cnv.cc, len, cleanup);
4034
4035
122k
    case FreeRDP_RemoteApplicationName:
4036
122k
      return update_string_copy_(&settings->RemoteApplicationName, cnv.cc, len, cleanup);
4037
4038
122k
    case FreeRDP_RemoteApplicationProgram:
4039
122k
      return update_string_copy_(&settings->RemoteApplicationProgram, cnv.cc, len, cleanup);
4040
4041
122k
    case FreeRDP_RemoteApplicationWorkingDir:
4042
122k
      return update_string_copy_(&settings->RemoteApplicationWorkingDir, cnv.cc, len,
4043
122k
                                 cleanup);
4044
4045
122k
    case FreeRDP_RemoteAssistancePassStub:
4046
122k
      return update_string_copy_(&settings->RemoteAssistancePassStub, cnv.cc, len, cleanup);
4047
4048
122k
    case FreeRDP_RemoteAssistancePassword:
4049
122k
      return update_string_copy_(&settings->RemoteAssistancePassword, cnv.cc, len, cleanup);
4050
4051
122k
    case FreeRDP_RemoteAssistanceRCTicket:
4052
122k
      return update_string_copy_(&settings->RemoteAssistanceRCTicket, cnv.cc, len, cleanup);
4053
4054
122k
    case FreeRDP_RemoteAssistanceSessionId:
4055
122k
      return update_string_copy_(&settings->RemoteAssistanceSessionId, cnv.cc, len, cleanup);
4056
4057
122k
    case FreeRDP_ServerHostname:
4058
122k
      return update_string_copy_(&settings->ServerHostname, cnv.cc, len, cleanup);
4059
4060
191k
    case FreeRDP_ServerLicenseCompanyName:
4061
191k
      return update_string_copy_(&settings->ServerLicenseCompanyName, cnv.cc, len, cleanup);
4062
4063
191k
    case FreeRDP_ServerLicenseProductName:
4064
191k
      return update_string_copy_(&settings->ServerLicenseProductName, cnv.cc, len, cleanup);
4065
4066
122k
    case FreeRDP_ShellWorkingDirectory:
4067
122k
      return update_string_copy_(&settings->ShellWorkingDirectory, cnv.cc, len, cleanup);
4068
4069
122k
    case FreeRDP_SmartcardCertificate:
4070
122k
      return update_string_copy_(&settings->SmartcardCertificate, cnv.cc, len, cleanup);
4071
4072
122k
    case FreeRDP_SmartcardPrivateKey:
4073
122k
      return update_string_copy_(&settings->SmartcardPrivateKey, cnv.cc, len, cleanup);
4074
4075
122k
    case FreeRDP_SspiModule:
4076
122k
      return update_string_copy_(&settings->SspiModule, cnv.cc, len, cleanup);
4077
4078
122k
    case FreeRDP_TargetNetAddress:
4079
122k
      return update_string_copy_(&settings->TargetNetAddress, cnv.cc, len, cleanup);
4080
4081
124k
    case FreeRDP_TerminalDescriptor:
4082
124k
      return update_string_copy_(&settings->TerminalDescriptor, cnv.cc, len, cleanup);
4083
4084
122k
    case FreeRDP_TlsSecretsFile:
4085
122k
      return update_string_copy_(&settings->TlsSecretsFile, cnv.cc, len, cleanup);
4086
4087
122k
    case FreeRDP_TransportDumpFile:
4088
122k
      return update_string_copy_(&settings->TransportDumpFile, cnv.cc, len, cleanup);
4089
4090
122k
    case FreeRDP_UserSpecifiedServerName:
4091
122k
      return update_string_copy_(&settings->UserSpecifiedServerName, cnv.cc, len, cleanup);
4092
4093
122k
    case FreeRDP_Username:
4094
122k
      return update_string_copy_(&settings->Username, cnv.cc, len, cleanup);
4095
4096
122k
    case FreeRDP_WinSCardModule:
4097
122k
      return update_string_copy_(&settings->WinSCardModule, cnv.cc, len, cleanup);
4098
4099
122k
    case FreeRDP_WindowTitle:
4100
122k
      return update_string_copy_(&settings->WindowTitle, cnv.cc, len, cleanup);
4101
4102
122k
    case FreeRDP_WmClass:
4103
122k
      return update_string_copy_(&settings->WmClass, cnv.cc, len, cleanup);
4104
4105
0
    default:
4106
0
      WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
4107
0
               freerdp_settings_get_type_name_for_key(id));
4108
0
      return FALSE;
4109
14.0M
  }
4110
0
  return TRUE;
4111
14.0M
}
4112
4113
void* freerdp_settings_get_pointer_writable(rdpSettings* settings, FreeRDP_Settings_Keys_Pointer id)
4114
3.77M
{
4115
3.77M
  WINPR_ASSERT(settings);
4116
4117
3.77M
  switch (id)
4118
3.77M
  {
4119
148k
    case FreeRDP_BitmapCacheV2CellInfo:
4120
148k
      return (void*)settings->BitmapCacheV2CellInfo;
4121
4122
209k
    case FreeRDP_ChannelDefArray:
4123
209k
      return (void*)settings->ChannelDefArray;
4124
4125
209k
    case FreeRDP_ClientAutoReconnectCookie:
4126
209k
      return (void*)settings->ClientAutoReconnectCookie;
4127
4128
139k
    case FreeRDP_ClientRandom:
4129
139k
      return (void*)settings->ClientRandom;
4130
4131
191k
    case FreeRDP_ClientTimeZone:
4132
191k
      return (void*)settings->ClientTimeZone;
4133
4134
122k
    case FreeRDP_DeviceArray:
4135
122k
      return (void*)settings->DeviceArray;
4136
4137
122k
    case FreeRDP_DynamicChannelArray:
4138
122k
      return (void*)settings->DynamicChannelArray;
4139
4140
139k
    case FreeRDP_FragCache:
4141
139k
      return (void*)settings->FragCache;
4142
4143
139k
    case FreeRDP_GlyphCache:
4144
139k
      return (void*)settings->GlyphCache;
4145
4146
139k
    case FreeRDP_LoadBalanceInfo:
4147
139k
      return (void*)settings->LoadBalanceInfo;
4148
4149
209k
    case FreeRDP_MonitorDefArray:
4150
209k
      return (void*)settings->MonitorDefArray;
4151
4152
209k
    case FreeRDP_MonitorIds:
4153
209k
      return (void*)settings->MonitorIds;
4154
4155
174k
    case FreeRDP_OrderSupport:
4156
174k
      return (void*)settings->OrderSupport;
4157
4158
104k
    case FreeRDP_Password51:
4159
104k
      return (void*)settings->Password51;
4160
4161
0
    case FreeRDP_RdpServerCertificate:
4162
0
      return (void*)settings->RdpServerCertificate;
4163
4164
0
    case FreeRDP_RdpServerRsaKey:
4165
0
      return (void*)settings->RdpServerRsaKey;
4166
4167
90.2k
    case FreeRDP_ReceivedCapabilities:
4168
90.2k
      return (void*)settings->ReceivedCapabilities;
4169
4170
90.2k
    case FreeRDP_ReceivedCapabilityData:
4171
90.2k
      return (void*)settings->ReceivedCapabilityData;
4172
4173
90.2k
    case FreeRDP_ReceivedCapabilityDataSizes:
4174
90.2k
      return (void*)settings->ReceivedCapabilityDataSizes;
4175
4176
139k
    case FreeRDP_RedirectionGuid:
4177
139k
      return (void*)settings->RedirectionGuid;
4178
4179
139k
    case FreeRDP_RedirectionPassword:
4180
139k
      return (void*)settings->RedirectionPassword;
4181
4182
0
    case FreeRDP_RedirectionTargetCertificate:
4183
0
      return (void*)settings->RedirectionTargetCertificate;
4184
4185
139k
    case FreeRDP_RedirectionTsvUrl:
4186
139k
      return (void*)settings->RedirectionTsvUrl;
4187
4188
209k
    case FreeRDP_ServerAutoReconnectCookie:
4189
209k
      return (void*)settings->ServerAutoReconnectCookie;
4190
4191
140k
    case FreeRDP_ServerCertificate:
4192
140k
      return (void*)settings->ServerCertificate;
4193
4194
191k
    case FreeRDP_ServerLicenseProductIssuers:
4195
191k
      return (void*)settings->ServerLicenseProductIssuers;
4196
4197
140k
    case FreeRDP_ServerRandom:
4198
140k
      return (void*)settings->ServerRandom;
4199
4200
122k
    case FreeRDP_StaticChannelArray:
4201
122k
      return (void*)settings->StaticChannelArray;
4202
4203
0
    case FreeRDP_TargetNetAddresses:
4204
0
      return (void*)settings->TargetNetAddresses;
4205
4206
0
    case FreeRDP_TargetNetPorts:
4207
0
      return (void*)settings->TargetNetPorts;
4208
4209
17.4k
    case FreeRDP_instance:
4210
17.4k
      return settings->instance;
4211
4212
0
    default:
4213
0
      WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
4214
0
               freerdp_settings_get_type_name_for_key(id));
4215
0
      WINPR_ASSERT(FALSE);
4216
0
      return nullptr;
4217
3.77M
  }
4218
3.77M
}
4219
4220
BOOL freerdp_settings_set_pointer(WINPR_ATTR_UNUSED rdpSettings* settings,
4221
                                  WINPR_ATTR_UNUSED FreeRDP_Settings_Keys_Pointer id,
4222
                                  const void* val)
4223
4.10M
{
4224
4.10M
  union
4225
4.10M
  {
4226
4.10M
    void* v;
4227
4.10M
    const void* cv;
4228
4.10M
  } cnv;
4229
4.10M
  WINPR_ASSERT(settings);
4230
4231
4.10M
  cnv.cv = val;
4232
4233
4.10M
  switch (id)
4234
4.10M
  {
4235
154k
    case FreeRDP_BitmapCacheV2CellInfo:
4236
154k
      settings->BitmapCacheV2CellInfo = (BITMAP_CACHE_V2_CELL_INFO*)cnv.v;
4237
154k
      break;
4238
4239
279k
    case FreeRDP_ChannelDefArray:
4240
279k
      settings->ChannelDefArray = (CHANNEL_DEF*)cnv.v;
4241
279k
      break;
4242
4243
279k
    case FreeRDP_ClientAutoReconnectCookie:
4244
279k
      settings->ClientAutoReconnectCookie = (ARC_CS_PRIVATE_PACKET*)cnv.v;
4245
279k
      break;
4246
4247
122k
    case FreeRDP_ClientRandom:
4248
122k
      settings->ClientRandom = (BYTE*)cnv.v;
4249
122k
      break;
4250
4251
139k
    case FreeRDP_ClientTimeZone:
4252
139k
      settings->ClientTimeZone = (TIME_ZONE_INFORMATION*)cnv.v;
4253
139k
      break;
4254
4255
348k
    case FreeRDP_DeviceArray:
4256
348k
      settings->DeviceArray = (RDPDR_DEVICE**)cnv.v;
4257
348k
      break;
4258
4259
122k
    case FreeRDP_DynamicChannelArray:
4260
122k
      settings->DynamicChannelArray = (ADDIN_ARGV**)cnv.v;
4261
122k
      break;
4262
4263
139k
    case FreeRDP_FragCache:
4264
139k
      settings->FragCache = (GLYPH_CACHE_DEFINITION*)cnv.v;
4265
139k
      break;
4266
4267
139k
    case FreeRDP_GlyphCache:
4268
139k
      settings->GlyphCache = (GLYPH_CACHE_DEFINITION*)cnv.v;
4269
139k
      break;
4270
4271
122k
    case FreeRDP_LoadBalanceInfo:
4272
122k
      settings->LoadBalanceInfo = (BYTE*)cnv.v;
4273
122k
      break;
4274
4275
279k
    case FreeRDP_MonitorDefArray:
4276
279k
      settings->MonitorDefArray = (rdpMonitor*)cnv.v;
4277
279k
      break;
4278
4279
191k
    case FreeRDP_MonitorIds:
4280
191k
      settings->MonitorIds = (UINT32*)cnv.v;
4281
191k
      break;
4282
4283
104k
    case FreeRDP_OrderSupport:
4284
104k
      settings->OrderSupport = (BYTE*)cnv.v;
4285
104k
      break;
4286
4287
104k
    case FreeRDP_Password51:
4288
104k
      settings->Password51 = (BYTE*)cnv.v;
4289
104k
      break;
4290
4291
0
    case FreeRDP_RdpServerCertificate:
4292
0
      settings->RdpServerCertificate = (rdpCertificate*)cnv.v;
4293
0
      break;
4294
4295
0
    case FreeRDP_RdpServerRsaKey:
4296
0
      settings->RdpServerRsaKey = (rdpPrivateKey*)cnv.v;
4297
0
      break;
4298
4299
90.2k
    case FreeRDP_ReceivedCapabilities:
4300
90.2k
      settings->ReceivedCapabilities = (BYTE*)cnv.v;
4301
90.2k
      break;
4302
4303
90.2k
    case FreeRDP_ReceivedCapabilityData:
4304
90.2k
      settings->ReceivedCapabilityData = (BYTE**)cnv.v;
4305
90.2k
      break;
4306
4307
90.2k
    case FreeRDP_ReceivedCapabilityDataSizes:
4308
90.2k
      settings->ReceivedCapabilityDataSizes = (UINT32*)cnv.v;
4309
90.2k
      break;
4310
4311
122k
    case FreeRDP_RedirectionGuid:
4312
122k
      settings->RedirectionGuid = (BYTE*)cnv.v;
4313
122k
      break;
4314
4315
122k
    case FreeRDP_RedirectionPassword:
4316
122k
      settings->RedirectionPassword = (BYTE*)cnv.v;
4317
122k
      break;
4318
4319
0
    case FreeRDP_RedirectionTargetCertificate:
4320
0
      settings->RedirectionTargetCertificate = (rdpCertificate*)cnv.v;
4321
0
      break;
4322
4323
122k
    case FreeRDP_RedirectionTsvUrl:
4324
122k
      settings->RedirectionTsvUrl = (BYTE*)cnv.v;
4325
122k
      break;
4326
4327
279k
    case FreeRDP_ServerAutoReconnectCookie:
4328
279k
      settings->ServerAutoReconnectCookie = (ARC_SC_PRIVATE_PACKET*)cnv.v;
4329
279k
      break;
4330
4331
122k
    case FreeRDP_ServerCertificate:
4332
122k
      settings->ServerCertificate = (BYTE*)cnv.v;
4333
122k
      break;
4334
4335
279k
    case FreeRDP_ServerLicenseProductIssuers:
4336
279k
      settings->ServerLicenseProductIssuers = (char**)cnv.v;
4337
279k
      break;
4338
4339
122k
    case FreeRDP_ServerRandom:
4340
122k
      settings->ServerRandom = (BYTE*)cnv.v;
4341
122k
      break;
4342
4343
122k
    case FreeRDP_StaticChannelArray:
4344
122k
      settings->StaticChannelArray = (ADDIN_ARGV**)cnv.v;
4345
122k
      break;
4346
4347
0
    case FreeRDP_TargetNetAddresses:
4348
0
      settings->TargetNetAddresses = (char**)cnv.v;
4349
0
      break;
4350
4351
0
    case FreeRDP_TargetNetPorts:
4352
0
      settings->TargetNetPorts = (UINT32*)cnv.v;
4353
0
      break;
4354
4355
17.4k
    case FreeRDP_instance:
4356
17.4k
      settings->instance = cnv.v;
4357
17.4k
      break;
4358
4359
0
    default:
4360
0
      WLog_ERR(TAG, "Invalid key index %d [%s|%s]", id, freerdp_settings_get_name_for_key(id),
4361
0
               freerdp_settings_get_type_name_for_key(id));
4362
0
      return FALSE;
4363
4.10M
  }
4364
4.10M
  return TRUE;
4365
4.10M
}