diff options
Diffstat (limited to 'src/lib/libcrypto/ocsp/ocsp_ht.c')
-rw-r--r-- | src/lib/libcrypto/ocsp/ocsp_ht.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/src/lib/libcrypto/ocsp/ocsp_ht.c b/src/lib/libcrypto/ocsp/ocsp_ht.c index b78cd37092..9213e58ae4 100644 --- a/src/lib/libcrypto/ocsp/ocsp_ht.c +++ b/src/lib/libcrypto/ocsp/ocsp_ht.c | |||
@@ -64,6 +64,9 @@ | |||
64 | #include <openssl/ocsp.h> | 64 | #include <openssl/ocsp.h> |
65 | #include <openssl/err.h> | 65 | #include <openssl/err.h> |
66 | #include <openssl/buffer.h> | 66 | #include <openssl/buffer.h> |
67 | #ifdef OPENSSL_SYS_SUNOS | ||
68 | #define strtoul (unsigned long)strtol | ||
69 | #endif /* OPENSSL_SYS_SUNOS */ | ||
67 | 70 | ||
68 | /* Quick and dirty HTTP OCSP request handler. | 71 | /* Quick and dirty HTTP OCSP request handler. |
69 | * Could make this a bit cleverer by adding | 72 | * Could make this a bit cleverer by adding |
@@ -94,7 +97,7 @@ Content-Length: %d\r\n\r\n"; | |||
94 | } | 97 | } |
95 | if(!(mem = BIO_new(BIO_s_mem()))) goto err; | 98 | if(!(mem = BIO_new(BIO_s_mem()))) goto err; |
96 | /* Copy response to a memory BIO: socket bios can't do gets! */ | 99 | /* Copy response to a memory BIO: socket bios can't do gets! */ |
97 | while ((len = BIO_read(b, tmpbuf, 1024))) { | 100 | while ((len = BIO_read(b, tmpbuf, sizeof tmpbuf))) { |
98 | if(len < 0) { | 101 | if(len < 0) { |
99 | OCSPerr(OCSP_F_OCSP_SENDREQ_BIO,OCSP_R_SERVER_READ_ERROR); | 102 | OCSPerr(OCSP_F_OCSP_SENDREQ_BIO,OCSP_R_SERVER_READ_ERROR); |
100 | goto err; | 103 | goto err; |
@@ -107,7 +110,7 @@ Content-Length: %d\r\n\r\n"; | |||
107 | } | 110 | } |
108 | /* Parse the HTTP response. This will look like this: | 111 | /* Parse the HTTP response. This will look like this: |
109 | * "HTTP/1.0 200 OK". We need to obtain the numeric code and | 112 | * "HTTP/1.0 200 OK". We need to obtain the numeric code and |
110 | * informational message. | 113 | * (optional) informational message. |
111 | */ | 114 | */ |
112 | 115 | ||
113 | /* Skip to first white space (passed protocol info) */ | 116 | /* Skip to first white space (passed protocol info) */ |
@@ -135,13 +138,19 @@ Content-Length: %d\r\n\r\n"; | |||
135 | if(*r) goto err; | 138 | if(*r) goto err; |
136 | /* Skip over any leading white space in message */ | 139 | /* Skip over any leading white space in message */ |
137 | while(*q && isspace((unsigned char)*q)) q++; | 140 | while(*q && isspace((unsigned char)*q)) q++; |
138 | if(!*q) goto err; | 141 | if(*q) { |
139 | /* Finally zap any trailing white space in message (include CRLF) */ | 142 | /* Finally zap any trailing white space in message (include CRLF) */ |
140 | /* We know q has a non white space character so this is OK */ | 143 | /* We know q has a non white space character so this is OK */ |
141 | for(r = q + strlen(q) - 1; isspace((unsigned char)*r); r--) *r = 0; | 144 | for(r = q + strlen(q) - 1; isspace((unsigned char)*r); r--) *r = 0; |
145 | } | ||
142 | if(retcode != 200) { | 146 | if(retcode != 200) { |
143 | OCSPerr(OCSP_F_OCSP_SENDREQ_BIO,OCSP_R_SERVER_RESPONSE_ERROR); | 147 | OCSPerr(OCSP_F_OCSP_SENDREQ_BIO,OCSP_R_SERVER_RESPONSE_ERROR); |
144 | ERR_add_error_data(4, "Code=", p, ",Reason=", q); | 148 | if(!*q) { |
149 | ERR_add_error_data(2, "Code=", p); | ||
150 | } | ||
151 | else { | ||
152 | ERR_add_error_data(4, "Code=", p, ",Reason=", q); | ||
153 | } | ||
145 | goto err; | 154 | goto err; |
146 | } | 155 | } |
147 | /* Find blank line marking beginning of content */ | 156 | /* Find blank line marking beginning of content */ |