diff options
author | djm <> | 2010-10-01 22:54:21 +0000 |
---|---|---|
committer | djm <> | 2010-10-01 22:54:21 +0000 |
commit | 829fd51d4f8dde4a7f3bf54754f3c1d1a502f5e2 (patch) | |
tree | e03b9f1bd051e844b971936729e9df549a209130 /src/lib/libcrypto/x509v3/v3_pci.c | |
parent | e6b755d2a53d3cac7a344dfdd6bf7c951cac754c (diff) | |
download | openbsd-829fd51d4f8dde4a7f3bf54754f3c1d1a502f5e2.tar.gz openbsd-829fd51d4f8dde4a7f3bf54754f3c1d1a502f5e2.tar.bz2 openbsd-829fd51d4f8dde4a7f3bf54754f3c1d1a502f5e2.zip |
import OpenSSL-1.0.0a
Diffstat (limited to 'src/lib/libcrypto/x509v3/v3_pci.c')
-rw-r--r-- | src/lib/libcrypto/x509v3/v3_pci.c | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/src/lib/libcrypto/x509v3/v3_pci.c b/src/lib/libcrypto/x509v3/v3_pci.c index 601211f416..0dcfa004fe 100644 --- a/src/lib/libcrypto/x509v3/v3_pci.c +++ b/src/lib/libcrypto/x509v3/v3_pci.c | |||
@@ -82,7 +82,7 @@ static int process_pci_value(CONF_VALUE *val, | |||
82 | { | 82 | { |
83 | if (*language) | 83 | if (*language) |
84 | { | 84 | { |
85 | X509V3err(X509V3_F_PROCESS_PCI_VALUE,X509V3_R_POLICY_LANGUAGE_ALREADTY_DEFINED); | 85 | X509V3err(X509V3_F_PROCESS_PCI_VALUE,X509V3_R_POLICY_LANGUAGE_ALREADY_DEFINED); |
86 | X509V3_conf_err(val); | 86 | X509V3_conf_err(val); |
87 | return 0; | 87 | return 0; |
88 | } | 88 | } |
@@ -97,7 +97,7 @@ static int process_pci_value(CONF_VALUE *val, | |||
97 | { | 97 | { |
98 | if (*pathlen) | 98 | if (*pathlen) |
99 | { | 99 | { |
100 | X509V3err(X509V3_F_PROCESS_PCI_VALUE,X509V3_R_POLICY_PATH_LENGTH_ALREADTY_DEFINED); | 100 | X509V3err(X509V3_F_PROCESS_PCI_VALUE,X509V3_R_POLICY_PATH_LENGTH_ALREADY_DEFINED); |
101 | X509V3_conf_err(val); | 101 | X509V3_conf_err(val); |
102 | return 0; | 102 | return 0; |
103 | } | 103 | } |
@@ -128,7 +128,12 @@ static int process_pci_value(CONF_VALUE *val, | |||
128 | unsigned char *tmp_data2 = | 128 | unsigned char *tmp_data2 = |
129 | string_to_hex(val->value + 4, &val_len); | 129 | string_to_hex(val->value + 4, &val_len); |
130 | 130 | ||
131 | if (!tmp_data2) goto err; | 131 | if (!tmp_data2) |
132 | { | ||
133 | X509V3err(X509V3_F_PROCESS_PCI_VALUE,X509V3_R_ILLEGAL_HEX_DIGIT); | ||
134 | X509V3_conf_err(val); | ||
135 | goto err; | ||
136 | } | ||
132 | 137 | ||
133 | tmp_data = OPENSSL_realloc((*policy)->data, | 138 | tmp_data = OPENSSL_realloc((*policy)->data, |
134 | (*policy)->length + val_len + 1); | 139 | (*policy)->length + val_len + 1); |
@@ -140,6 +145,17 @@ static int process_pci_value(CONF_VALUE *val, | |||
140 | (*policy)->length += val_len; | 145 | (*policy)->length += val_len; |
141 | (*policy)->data[(*policy)->length] = '\0'; | 146 | (*policy)->data[(*policy)->length] = '\0'; |
142 | } | 147 | } |
148 | else | ||
149 | { | ||
150 | OPENSSL_free(tmp_data2); | ||
151 | /* realloc failure implies the original data space is b0rked too! */ | ||
152 | (*policy)->data = NULL; | ||
153 | (*policy)->length = 0; | ||
154 | X509V3err(X509V3_F_PROCESS_PCI_VALUE,ERR_R_MALLOC_FAILURE); | ||
155 | X509V3_conf_err(val); | ||
156 | goto err; | ||
157 | } | ||
158 | OPENSSL_free(tmp_data2); | ||
143 | } | 159 | } |
144 | else if (strncmp(val->value, "file:", 5) == 0) | 160 | else if (strncmp(val->value, "file:", 5) == 0) |
145 | { | 161 | { |
@@ -169,6 +185,7 @@ static int process_pci_value(CONF_VALUE *val, | |||
169 | (*policy)->length += n; | 185 | (*policy)->length += n; |
170 | (*policy)->data[(*policy)->length] = '\0'; | 186 | (*policy)->data[(*policy)->length] = '\0'; |
171 | } | 187 | } |
188 | BIO_free_all(b); | ||
172 | 189 | ||
173 | if (n < 0) | 190 | if (n < 0) |
174 | { | 191 | { |
@@ -190,6 +207,15 @@ static int process_pci_value(CONF_VALUE *val, | |||
190 | (*policy)->length += val_len; | 207 | (*policy)->length += val_len; |
191 | (*policy)->data[(*policy)->length] = '\0'; | 208 | (*policy)->data[(*policy)->length] = '\0'; |
192 | } | 209 | } |
210 | else | ||
211 | { | ||
212 | /* realloc failure implies the original data space is b0rked too! */ | ||
213 | (*policy)->data = NULL; | ||
214 | (*policy)->length = 0; | ||
215 | X509V3err(X509V3_F_PROCESS_PCI_VALUE,ERR_R_MALLOC_FAILURE); | ||
216 | X509V3_conf_err(val); | ||
217 | goto err; | ||
218 | } | ||
193 | } | 219 | } |
194 | else | 220 | else |
195 | { | 221 | { |