summaryrefslogtreecommitdiff
path: root/src/lib/libcrypto/x509/x509_cmp.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/libcrypto/x509/x509_cmp.c')
-rw-r--r--src/lib/libcrypto/x509/x509_cmp.c18
1 files changed, 6 insertions, 12 deletions
diff --git a/src/lib/libcrypto/x509/x509_cmp.c b/src/lib/libcrypto/x509/x509_cmp.c
index b147d573d2..3f9f9b3d47 100644
--- a/src/lib/libcrypto/x509/x509_cmp.c
+++ b/src/lib/libcrypto/x509/x509_cmp.c
@@ -199,19 +199,13 @@ unsigned long X509_NAME_hash(X509_NAME *x)
199 { 199 {
200 unsigned long ret=0; 200 unsigned long ret=0;
201 unsigned char md[16]; 201 unsigned char md[16];
202 unsigned char str[256],*p,*pp;
203 int i;
204
205 i=i2d_X509_NAME(x,NULL);
206 if (i > sizeof(str))
207 p=OPENSSL_malloc(i);
208 else
209 p=str;
210 202
211 pp=p; 203 /* Ensure cached version is up to date */
212 i2d_X509_NAME(x,&pp); 204 i2d_X509_NAME(x,NULL);
213 MD5((unsigned char *)p,i,&(md[0])); 205 /* Use cached encoding directly rather than copying: this should
214 if (p != str) OPENSSL_free(p); 206 * keep libsafe happy.
207 */
208 MD5((unsigned char *)x->bytes->data,x->bytes->length,&(md[0]));
215 209
216 ret=( ((unsigned long)md[0] )|((unsigned long)md[1]<<8L)| 210 ret=( ((unsigned long)md[0] )|((unsigned long)md[1]<<8L)|
217 ((unsigned long)md[2]<<16L)|((unsigned long)md[3]<<24L) 211 ((unsigned long)md[2]<<16L)|((unsigned long)md[3]<<24L)