diff options
author | beck <> | 2000-03-19 11:13:58 +0000 |
---|---|---|
committer | beck <> | 2000-03-19 11:13:58 +0000 |
commit | 796d609550df3a33fc11468741c5d2f6d3df4c11 (patch) | |
tree | 6c6d539061caa20372dad0ac4ddb1dfae2fbe7fe /src/lib/libcrypto/asn1/a_enum.c | |
parent | 5be3114c1fd7e0dfea1e38d3abb4cbba75244419 (diff) | |
download | openbsd-796d609550df3a33fc11468741c5d2f6d3df4c11.tar.gz openbsd-796d609550df3a33fc11468741c5d2f6d3df4c11.tar.bz2 openbsd-796d609550df3a33fc11468741c5d2f6d3df4c11.zip |
OpenSSL 0.9.5 merge
*warning* this bumps shared lib minors for libssl and libcrypto from 2.1 to 2.2
if you are using the ssl26 packages for ssh and other things to work you will
need to get new ones (see ~beck/libsslsnap/<arch>) on cvs or ~beck/src-patent.tar.gz on cvs
Diffstat (limited to 'src/lib/libcrypto/asn1/a_enum.c')
-rw-r--r-- | src/lib/libcrypto/asn1/a_enum.c | 25 |
1 files changed, 18 insertions, 7 deletions
diff --git a/src/lib/libcrypto/asn1/a_enum.c b/src/lib/libcrypto/asn1/a_enum.c index 9239ecc439..ccf62e5a04 100644 --- a/src/lib/libcrypto/asn1/a_enum.c +++ b/src/lib/libcrypto/asn1/a_enum.c | |||
@@ -65,6 +65,12 @@ | |||
65 | * for comments on encoding see a_int.c | 65 | * for comments on encoding see a_int.c |
66 | */ | 66 | */ |
67 | 67 | ||
68 | ASN1_ENUMERATED *ASN1_ENUMERATED_new(void) | ||
69 | { return M_ASN1_ENUMERATED_new(); } | ||
70 | |||
71 | void ASN1_ENUMERATED_free(ASN1_ENUMERATED *x) | ||
72 | { M_ASN1_ENUMERATED_free(x); } | ||
73 | |||
68 | int i2d_ASN1_ENUMERATED(ASN1_ENUMERATED *a, unsigned char **pp) | 74 | int i2d_ASN1_ENUMERATED(ASN1_ENUMERATED *a, unsigned char **pp) |
69 | { | 75 | { |
70 | int pad=0,ret,r,i,t; | 76 | int pad=0,ret,r,i,t; |
@@ -142,7 +148,7 @@ ASN1_ENUMERATED *d2i_ASN1_ENUMERATED(ASN1_ENUMERATED **a, unsigned char **pp, | |||
142 | 148 | ||
143 | if ((a == NULL) || ((*a) == NULL)) | 149 | if ((a == NULL) || ((*a) == NULL)) |
144 | { | 150 | { |
145 | if ((ret=ASN1_ENUMERATED_new()) == NULL) return(NULL); | 151 | if ((ret=M_ASN1_ENUMERATED_new()) == NULL) return(NULL); |
146 | ret->type=V_ASN1_ENUMERATED; | 152 | ret->type=V_ASN1_ENUMERATED; |
147 | } | 153 | } |
148 | else | 154 | else |
@@ -171,7 +177,12 @@ ASN1_ENUMERATED *d2i_ASN1_ENUMERATED(ASN1_ENUMERATED **a, unsigned char **pp, | |||
171 | goto err; | 177 | goto err; |
172 | } | 178 | } |
173 | to=s; | 179 | to=s; |
174 | if (*p & 0x80) /* a negative number */ | 180 | if(!len) { |
181 | /* Strictly speaking this is an illegal ENUMERATED but we | ||
182 | * tolerate it. | ||
183 | */ | ||
184 | ret->type=V_ASN1_ENUMERATED; | ||
185 | } else if (*p & 0x80) /* a negative number */ | ||
175 | { | 186 | { |
176 | ret->type=V_ASN1_NEG_ENUMERATED; | 187 | ret->type=V_ASN1_NEG_ENUMERATED; |
177 | if ((*p == 0xff) && (len != 1)) { | 188 | if ((*p == 0xff) && (len != 1)) { |
@@ -208,7 +219,7 @@ ASN1_ENUMERATED *d2i_ASN1_ENUMERATED(ASN1_ENUMERATED **a, unsigned char **pp, | |||
208 | p+=len; | 219 | p+=len; |
209 | } | 220 | } |
210 | 221 | ||
211 | if (ret->data != NULL) Free((char *)ret->data); | 222 | if (ret->data != NULL) Free(ret->data); |
212 | ret->data=s; | 223 | ret->data=s; |
213 | ret->length=(int)len; | 224 | ret->length=(int)len; |
214 | if (a != NULL) (*a)=ret; | 225 | if (a != NULL) (*a)=ret; |
@@ -217,7 +228,7 @@ ASN1_ENUMERATED *d2i_ASN1_ENUMERATED(ASN1_ENUMERATED **a, unsigned char **pp, | |||
217 | err: | 228 | err: |
218 | ASN1err(ASN1_F_D2I_ASN1_ENUMERATED,i); | 229 | ASN1err(ASN1_F_D2I_ASN1_ENUMERATED,i); |
219 | if ((ret != NULL) && ((a == NULL) || (*a != ret))) | 230 | if ((ret != NULL) && ((a == NULL) || (*a != ret))) |
220 | ASN1_ENUMERATED_free(ret); | 231 | M_ASN1_ENUMERATED_free(ret); |
221 | return(NULL); | 232 | return(NULL); |
222 | } | 233 | } |
223 | 234 | ||
@@ -231,7 +242,7 @@ int ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v) | |||
231 | if (a->length < (sizeof(long)+1)) | 242 | if (a->length < (sizeof(long)+1)) |
232 | { | 243 | { |
233 | if (a->data != NULL) | 244 | if (a->data != NULL) |
234 | Free((char *)a->data); | 245 | Free(a->data); |
235 | if ((a->data=(unsigned char *)Malloc(sizeof(long)+1)) != NULL) | 246 | if ((a->data=(unsigned char *)Malloc(sizeof(long)+1)) != NULL) |
236 | memset((char *)a->data,0,sizeof(long)+1); | 247 | memset((char *)a->data,0,sizeof(long)+1); |
237 | } | 248 | } |
@@ -295,7 +306,7 @@ ASN1_ENUMERATED *BN_to_ASN1_ENUMERATED(BIGNUM *bn, ASN1_ENUMERATED *ai) | |||
295 | int len,j; | 306 | int len,j; |
296 | 307 | ||
297 | if (ai == NULL) | 308 | if (ai == NULL) |
298 | ret=ASN1_ENUMERATED_new(); | 309 | ret=M_ASN1_ENUMERATED_new(); |
299 | else | 310 | else |
300 | ret=ai; | 311 | ret=ai; |
301 | if (ret == NULL) | 312 | if (ret == NULL) |
@@ -311,7 +322,7 @@ ASN1_ENUMERATED *BN_to_ASN1_ENUMERATED(BIGNUM *bn, ASN1_ENUMERATED *ai) | |||
311 | ret->length=BN_bn2bin(bn,ret->data); | 322 | ret->length=BN_bn2bin(bn,ret->data); |
312 | return(ret); | 323 | return(ret); |
313 | err: | 324 | err: |
314 | if (ret != ai) ASN1_ENUMERATED_free(ret); | 325 | if (ret != ai) M_ASN1_ENUMERATED_free(ret); |
315 | return(NULL); | 326 | return(NULL); |
316 | } | 327 | } |
317 | 328 | ||