Hello.

It appears that in v1.0 something relating to OPENSSL_cleanse has changed. Most 
notably it crashes whenever len is zero. This was not the case with 0.9.8.

Here is a small test program:

#include <openssl/crypto.h>
int main()
{
 char *foo = malloc(1);
 if (!foo) {
  printf("malloc()");
  exit(1);
 }
 OPENSSL_cleanse(foo, 1);
 printf("cleaned one byte\n");
 OPENSSL_cleanse(foo, 0);
 printf("cleaned zero bytes\n");
}


With 0.9.8l it produces the expected two lines:
cleaned one byte
cleaned zero bytes

With 1.0.0-beta4 (under gdb):
cleaned one byte

Program received signal SIGSEGV, Segmentation fault.
0x0014bd6f in OPENSSL_cleanse () from /usr/lib/libcrypto.so.10

The interesting thing here is that the implementation of mem_clr.c has not 
changed between 0.9.8(k) and 1.0.0-beta5.

Is OPENSSL_cleanse supposed to be callable with zero length?

Tried it on Ubuntu 9.10 with 0.9.8g and 1.0.0-beta4, OSX with 0.9.8l and Fedora 
12 with 1.0.0-beta4.

Any hints?

-- 
Martin Paljak
http://martin.paljak.pri.ee
+3725156495

______________________________________________________________________
OpenSSL Project                                 http://www.openssl.org
Development Mailing List                       openssl-dev@openssl.org
Automated List Manager                           majord...@openssl.org

Reply via email to