]>
Commit | Line | Data |
---|---|---|
3a9a1b70 JR |
1 | --- openchange-openchange-2.3-VULCAN/libmapi/IProfAdmin.c~ 2015-05-16 17:22:04.000000000 +0200 |
2 | +++ openchange-openchange-2.3-VULCAN/libmapi/IProfAdmin.c 2021-11-16 21:59:10.069774286 +0100 | |
3 | @@ -753,7 +753,7 @@ | |
4 | _PUBLIC_ enum MAPISTATUS LoadProfile(struct mapi_context *mapi_ctx, | |
5 | struct mapi_profile *profile) | |
6 | { | |
7 | - enum credentials_use_kerberos use_krb = CRED_AUTO_USE_KERBEROS; | |
8 | + enum credentials_use_kerberos use_krb = CRED_USE_KERBEROS_DESIRED; | |
9 | ||
10 | /* Sanity checks */ | |
11 | OPENCHANGE_RETVAL_IF(!mapi_ctx, MAPI_E_NOT_INITIALIZED, NULL); | |
12 | @@ -777,9 +777,9 @@ | |
13 | * another API in the profile */ | |
14 | if (profile->kerberos) { | |
15 | if (!strncmp(profile->kerberos, "yes", 3)) { | |
16 | - use_krb = CRED_MUST_USE_KERBEROS; | |
17 | + use_krb = CRED_USE_KERBEROS_REQUIRED; | |
18 | } else { | |
19 | - use_krb = CRED_DONT_USE_KERBEROS; | |
20 | + use_krb = CRED_USE_KERBEROS_DISABLED; | |
21 | } | |
22 | } | |
23 | /* additionally, don't set the username in the ccache if kerberos | |
24 | @@ -787,14 +787,14 @@ | |
25 | * credentials. cli_credentials_guess probably gets the right | |
26 | * thing anyway in the situations where kerberos is in use */ | |
27 | if (profile->username && *(profile->username) | |
28 | - && use_krb != CRED_MUST_USE_KERBEROS) { | |
29 | + && use_krb != CRED_USE_KERBEROS_REQUIRED) { | |
30 | cli_credentials_set_username(profile->credentials, profile->username, CRED_SPECIFIED); | |
31 | } | |
32 | if (profile->password && *(profile->password)) { | |
33 | cli_credentials_set_password(profile->credentials, profile->password, CRED_SPECIFIED); | |
34 | } | |
35 | - if (use_krb != CRED_AUTO_USE_KERBEROS) { | |
36 | - cli_credentials_set_kerberos_state(profile->credentials, use_krb); | |
37 | + if (use_krb != CRED_USE_KERBEROS_DESIRED) { | |
38 | + cli_credentials_set_kerberos_state(profile->credentials, use_krb, CRED_SPECIFIED); | |
39 | } | |
40 | ||
41 | return MAPI_E_SUCCESS; | |
8693ab24 JB |
42 | --- openchange-openchange-2.3-VULCAN/ndr_mapi.c.orig 2022-02-19 07:21:05.221687320 +0100 |
43 | +++ openchange-openchange-2.3-VULCAN/ndr_mapi.c 2022-02-19 07:21:12.288315703 +0100 | |
44 | @@ -1220,6 +1220,7 @@ _PUBLIC_ enum ndr_err_code ndr_pull_EcDo | |
45 | uint32_t cntr_rgwClientVersion_0; | |
46 | uint32_t cntr_rgwServerVersion_0; | |
47 | uint32_t cntr_rgwBestVersion_0; | |
48 | + uint32_t arrsize, arrlen; | |
49 | TALLOC_CTX *_mem_save_handle_0; | |
50 | TALLOC_CTX *_mem_save_pcmsPollsMax_0; | |
51 | TALLOC_CTX *_mem_save_pcRetry_0; | |
52 | @@ -1239,11 +1240,13 @@ _PUBLIC_ enum ndr_err_code ndr_pull_EcDo | |
53 | ||
54 | NDR_CHECK(ndr_pull_array_size(ndr, &r->in.szUserDN)); | |
55 | NDR_CHECK(ndr_pull_array_length(ndr, &r->in.szUserDN)); | |
56 | - if (ndr_get_array_length(ndr, &r->in.szUserDN) > ndr_get_array_size(ndr, &r->in.szUserDN)) { | |
57 | - return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->in.szUserDN), ndr_get_array_length(ndr, &r->in.szUserDN)); | |
58 | + NDR_CHECK(ndr_get_array_length(ndr, &r->in.szUserDN, &arrlen)); | |
59 | + NDR_CHECK(ndr_get_array_size(ndr, &r->in.szUserDN, &arrsize)); | |
60 | + if (arrlen > arrsize) { | |
61 | + return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", arrsize, arrlen); | |
62 | } | |
63 | - NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, &r->in.szUserDN), sizeof(uint8_t))); | |
64 | - NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.szUserDN, ndr_get_array_length(ndr, &r->in.szUserDN), sizeof(uint8_t), CH_DOS)); | |
65 | + NDR_CHECK(ndr_check_string_terminator(ndr, arrlen, sizeof(uint8_t))); | |
66 | + NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.szUserDN, arrlen, sizeof(uint8_t), CH_DOS)); | |
67 | NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.ulFlags)); | |
68 | NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.ulConMod)); | |
69 | NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.cbLimit)); | |
70 | @@ -1366,11 +1369,13 @@ _PUBLIC_ enum ndr_err_code ndr_pull_EcDo | |
71 | NDR_PULL_SET_MEM_CTX(ndr, *r->out.szDNPrefix, 0); | |
72 | NDR_CHECK(ndr_pull_array_size(ndr, r->out.szDNPrefix)); | |
73 | NDR_CHECK(ndr_pull_array_length(ndr, r->out.szDNPrefix)); | |
74 | - if (ndr_get_array_length(ndr, r->out.szDNPrefix) > ndr_get_array_size(ndr, r->out.szDNPrefix)) { | |
75 | - return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, r->out.szDNPrefix), ndr_get_array_length(ndr, r->out.szDNPrefix)); | |
76 | + NDR_CHECK(ndr_get_array_length(ndr, &r->out.szDNPrefix, &arrlen)); | |
77 | + NDR_CHECK(ndr_get_array_size(ndr, &r->out.szDNPrefix, &arrsize)); | |
78 | + if (arrlen > arrsize) { | |
79 | + return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", arrsize, arrlen); | |
80 | } | |
81 | - NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.szDNPrefix), sizeof(uint8_t))); | |
82 | - NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.szDNPrefix, ndr_get_array_length(ndr, r->out.szDNPrefix), sizeof(uint8_t), CH_DOS)); | |
83 | + NDR_CHECK(ndr_check_string_terminator(ndr, arrlen, sizeof(uint8_t))); | |
84 | + NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.szDNPrefix, arrlen, sizeof(uint8_t), CH_DOS)); | |
85 | NDR_PULL_SET_MEM_CTX(ndr, _mem_save_szDNPrefix_1, 0); | |
86 | } | |
87 | NDR_PULL_SET_MEM_CTX(ndr, _mem_save_szDNPrefix_0, LIBNDR_FLAG_REF_ALLOC); | |
88 | @@ -1391,11 +1396,13 @@ _PUBLIC_ enum ndr_err_code ndr_pull_EcDo | |
89 | NDR_PULL_SET_MEM_CTX(ndr, *r->out.szDisplayName, 0); | |
90 | NDR_CHECK(ndr_pull_array_size(ndr, r->out.szDisplayName)); | |
91 | NDR_CHECK(ndr_pull_array_length(ndr, r->out.szDisplayName)); | |
92 | - if (ndr_get_array_length(ndr, r->out.szDisplayName) > ndr_get_array_size(ndr, r->out.szDisplayName)) { | |
93 | - return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, r->out.szDisplayName), ndr_get_array_length(ndr, r->out.szDisplayName)); | |
94 | + NDR_CHECK(ndr_get_array_length(ndr, &r->out.szDisplayName, &arrlen)); | |
95 | + NDR_CHECK(ndr_get_array_size(ndr, &r->out.szDisplayName, &arrsize)); | |
96 | + if (arrlen > arrsize) { | |
97 | + return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", arrsize, arrlen); | |
98 | } | |
99 | - NDR_CHECK(ndr_check_string_terminator(ndr, ndr_get_array_length(ndr, r->out.szDisplayName), sizeof(uint8_t))); | |
100 | - NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.szDisplayName, ndr_get_array_length(ndr, r->out.szDisplayName), sizeof(uint8_t), CH_DOS)); | |
101 | + NDR_CHECK(ndr_check_string_terminator(ndr, arrlen, sizeof(uint8_t))); | |
102 | + NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, r->out.szDisplayName, arrlen, sizeof(uint8_t), CH_DOS)); | |
103 | NDR_PULL_SET_MEM_CTX(ndr, _mem_save_szDisplayName_1, 0); | |
104 | } | |
105 | NDR_PULL_SET_MEM_CTX(ndr, _mem_save_szDisplayName_0, LIBNDR_FLAG_REF_ALLOC); | |
106 | @@ -1415,14 +1422,16 @@ _PUBLIC_ enum ndr_err_code ndr_pull_EcDo | |
107 | NDR_PULL_SET_MEM_CTX(ndr, _mem_save_pulTimeStamp_0, LIBNDR_FLAG_REF_ALLOC); | |
108 | NDR_CHECK(ndr_pull_array_size(ndr, &r->out.rgbAuxOut)); | |
109 | NDR_CHECK(ndr_pull_array_length(ndr, &r->out.rgbAuxOut)); | |
110 | - if (ndr_get_array_length(ndr, &r->out.rgbAuxOut) > ndr_get_array_size(ndr, &r->out.rgbAuxOut)) { | |
111 | - return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", ndr_get_array_size(ndr, &r->out.rgbAuxOut), ndr_get_array_length(ndr, &r->out.rgbAuxOut)); | |
112 | + NDR_CHECK(ndr_get_array_length(ndr, &r->out.rgbAuxOut, &arrlen)); | |
113 | + NDR_CHECK(ndr_get_array_size(ndr, &r->out.rgbAuxOut, &arrsize)); | |
114 | + if (arrlen > arrsize) { | |
115 | + return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should exceed array length %u", arrsize, arrlen); | |
116 | } | |
117 | if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { | |
118 | - NDR_PULL_ALLOC_N(ndr, r->out.rgbAuxOut, ndr_get_array_size(ndr, &r->out.rgbAuxOut)); | |
119 | + NDR_PULL_ALLOC_N(ndr, r->out.rgbAuxOut, arrsize); | |
120 | } | |
121 | /* Only try to pull rgbAuxOut if the fake array size is > 0 */ | |
122 | - if (ndr_get_array_size(ndr, &r->out.rgbAuxOut)) { | |
123 | + if (arrsize) { | |
124 | _mem_save_rgbAuxOut_1 = NDR_PULL_GET_MEM_CTX(ndr); | |
125 | NDR_PULL_SET_MEM_CTX(ndr, r->out.rgbAuxOut, 0); | |
126 | NDR_CHECK(ndr_pull_mapi2k7_AuxInfo(ndr, NDR_SCALARS, r->out.rgbAuxOut)); |