I am getting a core dump from d2i in the following code. The offending line is:
*val = meth->i2v( meth, meth->d2i( NULL, &data, ext->value->length ), NULL );* I am running the 0.9.8k version of openssl compiled for shared objects, 32bit. Can anyone spot what I am doing wrong? Has anyone else run across this problem? Ron ----------------------------------------------------------------------------------------------------------------------------------- int ssl_get_csp_name(SSL *ssl, char *csp_name, int csp_name_len) { X509 *cert; X509_NAME *subj; int extcount; int seen_dns = 0; int i; csp_name[0] = '\0'; if( !(cert = SSL_get_peer_certificate(ssl)) ) { LOGMSG( LOG_CRIT, "Failure getting client certificate"); return -1; } extcount = X509_get_ext_count(cert); if( extcount <= 0 ) { X509_free( cert ); LOGMSG( LOG_CRIT, "Client certificate has no extensions"); return -1; } for(i = 0; i < extcount; i++) { const char *extstr; char *td = NULL; X509_EXTENSION *ext; ext = X509_get_ext(cert, i); extstr = OBJ_nid2sn( OBJ_obj2nid( X509_EXTENSION_get_object(ext) ) ); if( strcmp(extstr, "subjectAltName") == 0 ) { int j; const unsigned char *data; STACK_OF(CONF_VALUE) *val; CONF_VALUE *nval; X509V3_EXT_METHOD *meth; if(!(meth = X509V3_EXT_get(ext))) break; data = ext->value->data; *val = meth->i2v( meth, meth->d2i( NULL, &data, ext->value->length ), NULL );* for( j = 0; j < sk_CONF_VALUE_num(val); j++) { nval = sk_CONF_VALUE_value(val,j); if( strcmp(nval->name, "DNS") == 0 ) { if( strlen(nval->value) <= csp_name_len ) { strcpy( csp_name, nval->value); } else { snprintf( msg, sizeof(msg), "Short name [%s] too long", nval->value); LOGMSG( LOG_ERR, msg); } break; } } break; } } X509_free( cert ); if( strlen(csp_name) == 0 ) { return -1; } return (int)SSL_get_verify_result(ssl); } Here is the certificate Certificate: Data: Version: 3 (0x2) Serial Number: 1 (0x1) Signature Algorithm: sha1WithRSAEncryption Issuer: CN=IFCET, ST=Oklahoma, C=US/emailAddress= amc-atow-tdls-supp...@faa.gov, O=AJW-178 Validity Not Before: Jun 5 14:52:09 2009 GMT Not After : Jun 3 14:52:09 2019 GMT Subject: CN=IFCET, ST=OK, C=US/emailaddress=ron.ctr.brasw...@faa.gov, O=TEST CSP, OU=confidence testing Subject Public Key Info: Public Key Algorithm: rsaEncryption RSA Public Key: (2048 bit) Modulus (2048 bit): 00:d0:52:0e:70:9a:5d:20:c7:77:c3:03:6b:2f:02: c9:d6:eb:96:d0:df:ba:99:83:f8:30:c8:63:b4:68: a5:e0:25:b4:fb:99:97:00:11:e2:ad:f3:41:50:55: de:01:ac:94:41:9f:b0:18:18:8a:b4:9d:9a:1a:7b: 40:3d:f1:65:e0:c8:a3:a4:ad:38:ad:8c:4f:45:81: 35:fb:eb:d3:f7:6a:83:ab:0b:d7:b2:08:62:e1:fb: eb:c9:6f:82:e6:d6:70:12:9b:2d:3b:e0:8a:db:e5: 5a:2a:e3:2c:f8:91:f8:84:f0:c0:da:d8:9e:7b:bd: 1c:22:aa:24:73:b7:b1:73:7f:22:33:60:7f:26:48: 34:a4:94:49:85:12:77:34:80:40:a1:44:a1:7d:6e: b8:e9:26:55:ac:31:67:89:c7:8e:1a:f8:a0:be:57: d4:d3:52:ff:49:6f:0d:31:f5:62:7e:3c:bf:10:39: 46:f8:4f:8a:6c:d0:4a:cb:3a:86:b2:09:b1:7a:a4: c1:25:5f:f2:86:03:0a:66:9e:e2:78:ca:ea:e8:47: cf:d5:02:96:6b:ff:53:ad:09:74:3d:ce:f7:e6:db: 74:96:53:cb:c8:c2:c7:47:e2:25:28:cf:12:7e:68: 17:63:c2:60:59:36:9c:a4:65:67:f0:0f:cc:7c:b3: 26:c7 Exponent: 65537 (0x10001) X509v3 extensions: X509v3 Basic Constraints: CA:FALSE X509v3 Subject Alternative Name: DNS:testcsp Signature Algorithm: sha1WithRSAEncryption 14:58:9b:ff:0e:2c:a0:63:08:e7:30:3e:19:a2:7a:ec:87:90: 0c:cb:38:7f:1e:6c:b7:83:88:33:e4:d4:7a:98:e3:cd:36:fe: 85:09:fa:02:13:67:64:7e:d1:d4:6d:bc:d7:71:52:a3:e0:d1: 15:fa:71:e5:8c:ae:9b:b7:5a:94:f9:bf:11:a8:ea:0a:f3:66: c7:02:af:d4:30:40:bf:ca:62:2a:8f:7e:d2:28:92:2b:bc:b0: cb:b3:5e:5c:16:6a:99:32:e5:99:29:9b:ff:4c:24:f8:8a:d5: c7:b4:0c:60:c9:39:f8:54:d0:ab:fa:4b:fd:9d:b9:aa:46:b8: 93:48:4a:20:59:32:85:fe:c5:39:87:1c:88:48:3f:7c:42:75: ba:1d:7e:a1:57:7a:8f:9f:ab:52:85:6b:a8:3c:ee:fe:4d:f4: 44:95:a3:4d:d6:90:ae:44:14:e7:0e:f4:28:84:7d:1c:42:a5: b3:fd:16:de:f2:4f:ed:6c:a2:19:f5:15:73:a5:ea:ae:dd:44: c0:27:77:4c:9b:d7:d2:45:db:a3:4a:83:31:ad:29:f9:0c:05: 60:3e:bf:1d:30:d4:da:de:37:a2:66:56:16:9e:2b:4c:ee:a8: ce:e6:2f:a4:18:9a:57:87:3d:f7:ef:55:60:a8:31:25:f3:41: d7:09:a3:30