diff options
Diffstat (limited to 'src/lib/libcrypto/x509/x509_cmp.c')
| -rw-r--r-- | src/lib/libcrypto/x509/x509_cmp.c | 18 |
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) |
