diff -Naur openca-ocspd-1.5.1.orig/src/ocspd_engine.c openca-ocspd-1.5.1.new/src/ocspd_engine.c --- openca-ocspd-1.5.1.orig/src/ocspd_engine.c 2006-10-13 21:26:35.000000000 +0200 +++ openca-ocspd-1.5.1.new/src/ocspd_engine.c 2008-06-19 18:14:58.000000000 +0200 @@ -213,7 +213,7 @@ syslog( LOG_INFO, "Added '%s' to POST COMMANDS", val->value ); } else { - syslog( LOG_INFO, "Not Reckognised '%s' option", + syslog( LOG_INFO, "Not recognised '%s' option", val->name ); } } diff -Naur openca-ocspd-1.5.1.orig/src/ocsp_response.c openca-ocspd-1.5.1.new/src/ocsp_response.c --- openca-ocspd-1.5.1.orig/src/ocsp_response.c 2006-10-13 17:05:59.000000000 +0200 +++ openca-ocspd-1.5.1.new/src/ocsp_response.c 2008-06-19 18:40:45.000000000 +0200 @@ -67,7 +67,7 @@ if ((ca = ocspd_CA_ENTRY_find( conf, cid )) == NULL) { if (conf->verbose) { syslog( LOG_INFO, - "request for non reckognized CA [serial %ld]", + "request for non recognized CA [serial %ld]", ASN1_INTEGER_get(serial) ); } OCSP_basic_add1_status(bs, cid, @@ -178,6 +178,9 @@ int ocspd_resp_send_socket(int connfd, OCSP_RESPONSE *resp) { BIO *out = NULL; + BIO *mem = NULL; + char * cp; + int len; char http_resp[] = "HTTP/1.0 200 OK\r\n" @@ -195,12 +198,24 @@ return(0); } - BIO_printf(out, http_resp, i2d_OCSP_RESPONSE(resp, NULL)); - i2d_OCSP_RESPONSE_bio(out, resp); - BIO_flush(out); + if((mem = BIO_new(BIO_s_mem())) == NULL ) { + syslog(LOG_ERR, "ERROR::memory BIO creation"); + BIO_free(out); + return(0); + } + BIO_printf(mem, http_resp, i2d_OCSP_RESPONSE(resp, NULL)); + i2d_OCSP_RESPONSE_bio(mem, resp); + len = BIO_get_mem_data(mem, &cp); + + if (len < 0) + syslog(LOG_ERR, "ERROR::response length %d <= 0", len); + else + BIO_write(out, cp, len); + + BIO_flush(out); + BIO_free(mem); BIO_free(out); return 1; } -