The commit
  From: "Dr. Stephen Henson" <st...@openssl.org>
  Date: Fri, 1 Apr 2011 15:46:03 +0000
  Subject: [PATCH] Add additional OPENSSL_init() handling add dummy call to
  (hopefully) ensure OPENSSL_init() is always linked into an application.
  
https://github.com/openssl/openssl/commit/c4acfb1fd049f52fb074b103be01cab5cf5c04f8

seems to have broken CRYPTO_set_mem_functions.  After this commit,
CRYPTO_set_mem_functions() calls OPENSSL_init(), which calls
CRYPTO_malloc(), which sets `allow_customize` to 0, which is then
checked by CRYPTO_set_mem_functions(), which then returns without
doing anything.

See also earlier reports
  
http://openssl.6102.n7.nabble.com/CRYPTO-set-mem-functions-Doesn-t-Work-in-Version-1-0-1b-td46745.html
  http://bugs.python.org/msg191610

The death test program

#include <stdio.h>
#include <stdlib.h>
#include <openssl/ssl.h>
void * my_alloc(size_t n) { abort(); }
void my_free(void *p) { abort(); }
void * my_realloc(void *p, size_t n) { abort(); }
int main(int argc, const char **argv)
{
  const SSL_METHOD *method;
  SSL_CTX *ctx;
  CRYPTO_set_mem_functions(my_alloc, my_realloc, my_free);
  SSL_library_init();
  method = SSLv23_client_method();
  ctx = SSL_CTX_new(method);
  printf("Got ctx %p\n", ctx);
  return 0;
}

aborts as expected on Ubuntu 10.04 with openssl0.9.8k, but blithely
prints a ctx with openssl 1.0.*.

The bug is probably not present in openssl-1.1.0-pre5, as the
offending code was removed by
https://github.com/openssl/openssl/commit/bbd86bf5424a611cb6b77a3a17fc522931c4dcb8
but a fix for 1.0.0 and 1.0.1 would be much appreciated.


-- 
Ticket here: http://rt.openssl.org/Ticket/Display.html?id=4559
Please log in as guest with password guest if prompted

-- 
openssl-dev mailing list
To unsubscribe: https://mta.openssl.org/mailman/listinfo/openssl-dev

Reply via email to