Seeing the "bugs" directory in the openssl tarball, I thought you might be interested to know that gcc-3.0 contains a bug that is triggered in the PEM_get_EVP_CIPHER_INFO() function...
Here is the problem: $ ssh-keygen -t rsa -N abcde then $ ssh-keygen -t rsa -P abcde -p should works, but it didn't on my system (gcc-3.0, OpenSSH_3.4p1, OpenSSL 0x00907004). I have traced down the problem to PEM_get_EVP_CIPHER_INFO(): gcc-3.0 generates invalid assembler for this function. Just look at the machine code that corresponds to this C code: header+=11; if (*header != '4') return(0); header++; if (*header != ',') return(0); header++; And you will notice that %eax (that represents "header") is incremented too many times... A more insightful demonstration of this bug is also available in the `gcc-3.0-bug-demo.c' file. ---------------------------------------------------------------------- /* ** Gcc-3.0 bug -- noticed by Marc Bevand <bevand_m (at) epita.fr> ** on Tue Dec 3 14:06:02 CET 2002 ** ** All is right with "-fPIC -O1", the bug only occurs with "-fPIC ** -O[23]": ** ** $ gcc -fPIC -O1 gcc-3.0-bug-demo.c ** $ ./a.out ** all is right ** $ gcc -fPIC -O2 gcc-3.0-bug-demo.c ** $ ./a.out ** there is a *bug* ** ** Look at the assembler generated for the 2 lines marked with XXX in ** foobar(): ** ** 80484e3: 8b 45 08 mov 0x8(%ebp),%eax ** 80484e6: 83 c0 02 add $0x2,%eax ** 80484e9: 89 45 08 mov %eax,0x8(%ebp) ** 80484ec: 80 78 02 63 cmpb $0x63,0x2(%eax) ** ** The value of "header", contained in 0x8(%ebp), should be incremented ** only 1 time, but actually it is incremented 2 times (in add and ** cmpb). */ int hello(char **notused) { return 0; } int foobar(char *header) { if (strncmp(header, "ab", 2)) return 0; header += 2; /* XXX */ if (*header != 'c') /* XXX */ return 0; if (hello(&header)) return 0; return 1; } int main(void) { if (foobar("abc__")) puts("all is right"); else puts("there is a *bug*"); return 0; } ---------------------------------------------------------------------- -- Marc Bevand http://www.epita.fr/~bevand_m Computer Science School EPITA - System, Network and Security Dept. ______________________________________________________________________ OpenSSL Project http://www.openssl.org Development Mailing List [EMAIL PROTECTED] Automated List Manager [EMAIL PROTECTED]