diff options
Diffstat (limited to 'src/lib/libcrypto/x509v3/v3_utl.c')
| -rw-r--r-- | src/lib/libcrypto/x509v3/v3_utl.c | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/src/lib/libcrypto/x509v3/v3_utl.c b/src/lib/libcrypto/x509v3/v3_utl.c index 57be441399..2cb53008e3 100644 --- a/src/lib/libcrypto/x509v3/v3_utl.c +++ b/src/lib/libcrypto/x509v3/v3_utl.c | |||
| @@ -1,5 +1,5 @@ | |||
| 1 | /* v3_utl.c */ | 1 | /* v3_utl.c */ |
| 2 | /* Written by Dr Stephen N Henson (shenson@bigfoot.com) for the OpenSSL | 2 | /* Written by Dr Stephen N Henson (steve@openssl.org) for the OpenSSL |
| 3 | * project. | 3 | * project. |
| 4 | */ | 4 | */ |
| 5 | /* ==================================================================== | 5 | /* ==================================================================== |
| @@ -736,17 +736,20 @@ static int ipv6_from_asc(unsigned char *v6, const char *in) | |||
| 736 | 736 | ||
| 737 | /* Format result */ | 737 | /* Format result */ |
| 738 | 738 | ||
| 739 | /* Copy initial part */ | 739 | if (v6stat.zero_pos >= 0) |
| 740 | if (v6stat.zero_pos > 0) | 740 | { |
| 741 | /* Copy initial part */ | ||
| 741 | memcpy(v6, v6stat.tmp, v6stat.zero_pos); | 742 | memcpy(v6, v6stat.tmp, v6stat.zero_pos); |
| 742 | /* Zero middle */ | 743 | /* Zero middle */ |
| 743 | if (v6stat.total != 16) | ||
| 744 | memset(v6 + v6stat.zero_pos, 0, 16 - v6stat.total); | 744 | memset(v6 + v6stat.zero_pos, 0, 16 - v6stat.total); |
| 745 | /* Copy final part */ | 745 | /* Copy final part */ |
| 746 | if (v6stat.total != v6stat.zero_pos) | 746 | if (v6stat.total != v6stat.zero_pos) |
| 747 | memcpy(v6 + v6stat.zero_pos + 16 - v6stat.total, | 747 | memcpy(v6 + v6stat.zero_pos + 16 - v6stat.total, |
| 748 | v6stat.tmp + v6stat.zero_pos, | 748 | v6stat.tmp + v6stat.zero_pos, |
| 749 | v6stat.total - v6stat.zero_pos); | 749 | v6stat.total - v6stat.zero_pos); |
| 750 | } | ||
| 751 | else | ||
| 752 | memcpy(v6, v6stat.tmp, 16); | ||
| 750 | 753 | ||
| 751 | return 1; | 754 | return 1; |
| 752 | } | 755 | } |
