Coverage Report

Created: 2026-04-12 07:03

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