Commit f64e15d75bdbeb3b4e307ea825788a2a4bc5d683

Authored by Perry Werneck
1 parent 0f27a609

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,14 +82,25 @@ typedef struct _curldata
82 H3270 * hSession; 82 H3270 * hSession;
83 SSL_ERROR_MESSAGE * message; 83 SSL_ERROR_MESSAGE * message;
84 char errbuf[CURL_ERROR_SIZE]; 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 } CURLDATA; 89 } CURLDATA;
87 90
88 static inline void lib3270_autoptr_cleanup_CURLDATA(CURLDATA **ptr) 91 static inline void lib3270_autoptr_cleanup_CURLDATA(CURLDATA **ptr)
89 { 92 {
90 debug("%s(%p)",__FUNCTION__,*ptr); 93 debug("%s(%p)",__FUNCTION__,*ptr);
91 if(*ptr) 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 *ptr = NULL; 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,17 +128,15 @@ static size_t internal_curl_write_callback(void *contents, size_t size, size_t n
117 128
118 for(ix = 0; ix < realsize; ix++) 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 return realsize; 140 return realsize;
132 } 141 }
133 142
@@ -297,9 +306,11 @@ int lib3270_get_X509_CRL(H3270 *hSession, SSL_ERROR_MESSAGE * message) @@ -297,9 +306,11 @@ int lib3270_get_X509_CRL(H3270 *hSession, SSL_ERROR_MESSAGE * message)
297 return -1; 306 return -1;
298 } 307 }
299 308
  309 + trace_ssl(hSession,"CRL Data has %u bytes",(unsigned int) crl_data->length);
  310 +
300 if(ct) 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 trace_ssl(crl_data->hSession, "Content-type: %s", ct); 315 trace_ssl(crl_data->hSession, "Content-type: %s", ct);
305 316