Commit ad33d466992f59b7d7fda08258242c0171e145f0

Authored by Perry Werneck
1 parent 053cd3d1

Fixing memory leak when getting CRL from LDAP.

@@ -12,6 +12,8 @@ @@ -12,6 +12,8 @@
12 <Option object_output=".obj/Debug/" /> 12 <Option object_output=".obj/Debug/" />
13 <Option type="3" /> 13 <Option type="3" />
14 <Option compiler="gcc" /> 14 <Option compiler="gcc" />
  15 + <Option host_application=".bin/Debug/lib3270" />
  16 + <Option run_host_application_in_terminal="0" />
15 <Compiler> 17 <Compiler>
16 <Add option="-g" /> 18 <Add option="-g" />
17 </Compiler> 19 </Compiler>
@@ -211,7 +213,10 @@ @@ -211,7 +213,10 @@
211 <Unit filename="src/lib3270/sf.c"> 213 <Unit filename="src/lib3270/sf.c">
212 <Option compilerVar="CC" /> 214 <Option compilerVar="CC" />
213 </Unit> 215 </Unit>
214 - <Unit filename="src/lib3270/ssl/linux/ctx_init.c"> 216 + <Unit filename="src/lib3270/ssl/ctx_init.c">
  217 + <Option compilerVar="CC" />
  218 + </Unit>
  219 + <Unit filename="src/lib3270/ssl/linux/getcrl.c">
215 <Option compilerVar="CC" /> 220 <Option compilerVar="CC" />
216 </Unit> 221 </Unit>
217 <Unit filename="src/lib3270/ssl/negotiate.c"> 222 <Unit filename="src/lib3270/ssl/negotiate.c">
src/lib3270/ssl/linux/getcrl.c
@@ -267,9 +267,10 @@ X509_CRL * lib3270_get_X509_CRL(H3270 *hSession, SSL_ERROR_MESSAGE * message) @@ -267,9 +267,10 @@ X509_CRL * lib3270_get_X509_CRL(H3270 *hSession, SSL_ERROR_MESSAGE * message)
267 return NULL; 267 return NULL;
268 } 268 }
269 269
270 - debug("CRL Length=%d",(int) value[0]->bv_len); 270 + // Precisa salvar uma cópia porque d2i_X509_CRL modifica o ponteiro.
  271 + const unsigned char *crl_data = (const unsigned char *) value[0]->bv_val;
271 272
272 - if(!d2i_X509_CRL(&crl, (const unsigned char **) &value[0]->bv_val, value[0]->bv_len)) 273 + if(!d2i_X509_CRL(&crl, &crl_data, value[0]->bv_len))
273 { 274 {
274 message->error = hSession->ssl.error = ERR_get_error(); 275 message->error = hSession->ssl.error = ERR_get_error();
275 message->title = N_( "Security error" ); 276 message->title = N_( "Security error" );
@@ -277,7 +278,7 @@ X509_CRL * lib3270_get_X509_CRL(H3270 *hSession, SSL_ERROR_MESSAGE * message) @@ -277,7 +278,7 @@ X509_CRL * lib3270_get_X509_CRL(H3270 *hSession, SSL_ERROR_MESSAGE * message)
277 lib3270_write_log(hSession,"ssl","%s: %s",url, message->text); 278 lib3270_write_log(hSession,"ssl","%s: %s",url, message->text);
278 } 279 }
279 280
280 - // ldap_value_free_len(value); 281 + ldap_value_free_len(value);
281 282
282 } 283 }
283 #endif // HAVE_LDAP 284 #endif // HAVE_LDAP
src/lib3270/trace_ds.c
@@ -183,7 +183,6 @@ void trace_ssl(H3270 *session, const char *fmt, ...) @@ -183,7 +183,6 @@ void trace_ssl(H3270 *session, const char *fmt, ...)
183 { 183 {
184 va_list args; 184 va_list args;
185 185
186 - debug("******************* %d",(int) lib3270_get_toggle(session,LIB3270_TOGGLE_SSL_TRACE));  
187 if (!lib3270_get_toggle(session,LIB3270_TOGGLE_SSL_TRACE)) 186 if (!lib3270_get_toggle(session,LIB3270_TOGGLE_SSL_TRACE))
188 return; 187 return;
189 188