Commit f64e15d75bdbeb3b4e307ea825788a2a4bc5d683
1 parent
0f27a609
Exists in
master
and in
3 other branches
Changing CRL buffer to dynamic on windows version.
Showing
1 changed file
with
20 additions
and
9 deletions
Show diff stats
src/lib3270/ssl/windows/getcrl.c
... | ... | @@ -82,14 +82,25 @@ typedef struct _curldata |
82 | 82 | H3270 * hSession; |
83 | 83 | SSL_ERROR_MESSAGE * message; |
84 | 84 | char errbuf[CURL_ERROR_SIZE]; |
85 | - unsigned char contents[CRL_DATA_LENGTH]; | |
85 | + struct { | |
86 | + size_t length; | |
87 | + unsigned char * contents; | |
88 | + } data; | |
86 | 89 | } CURLDATA; |
87 | 90 | |
88 | 91 | static inline void lib3270_autoptr_cleanup_CURLDATA(CURLDATA **ptr) |
89 | 92 | { |
90 | 93 | debug("%s(%p)",__FUNCTION__,*ptr); |
91 | 94 | if(*ptr) |
92 | - lib3270_free(*ptr); | |
95 | + { | |
96 | + CURLDATA *cdata = *ptr; | |
97 | + | |
98 | + if(cdata->data.contents) { | |
99 | + lib3270_free(cdata->data.contents); | |
100 | + cdata->data.contents = NULL; | |
101 | + } | |
102 | + lib3270_free(cdata); | |
103 | + } | |
93 | 104 | *ptr = NULL; |
94 | 105 | } |
95 | 106 | |
... | ... | @@ -117,17 +128,15 @@ static size_t internal_curl_write_callback(void *contents, size_t size, size_t n |
117 | 128 | |
118 | 129 | for(ix = 0; ix < realsize; ix++) |
119 | 130 | { |
120 | - if(data->length >= CRL_DATA_LENGTH) | |
131 | + if(data->length >= data->data.length) | |
121 | 132 | { |
122 | - lib3270_write_log(NULL,"ssl","CRL Data block is bigger than allocated block (%u)", (unsigned int) CRL_DATA_LENGTH); | |
123 | - return 0; | |
133 | + data->data.length += (CRL_DATA_LENGTH + realsize); | |
134 | + data->data.contents = lib3270_realloc(data->data.contents,data->data.length); | |
124 | 135 | } |
125 | 136 | |
126 | - data->contents[data->length++] = *(ptr++); | |
137 | + data->data.contents[data->length++] = *(ptr++); | |
127 | 138 | } |
128 | 139 | |
129 | -// debug("\n%s\n-------------------------------------------", data->contents); | |
130 | - | |
131 | 140 | return realsize; |
132 | 141 | } |
133 | 142 | |
... | ... | @@ -297,9 +306,11 @@ int lib3270_get_X509_CRL(H3270 *hSession, SSL_ERROR_MESSAGE * message) |
297 | 306 | return -1; |
298 | 307 | } |
299 | 308 | |
309 | + trace_ssl(hSession,"CRL Data has %u bytes",(unsigned int) crl_data->length); | |
310 | + | |
300 | 311 | if(ct) |
301 | 312 | { |
302 | - const unsigned char * data = crl_data->contents; | |
313 | + const unsigned char * data = crl_data->data.contents; | |
303 | 314 | |
304 | 315 | trace_ssl(crl_data->hSession, "Content-type: %s", ct); |
305 | 316 | ... | ... |