diff options
Diffstat (limited to 'src/lib/libcrypto/asn1/a_enum.c')
| -rw-r--r-- | src/lib/libcrypto/asn1/a_enum.c | 24 |
1 files changed, 8 insertions, 16 deletions
diff --git a/src/lib/libcrypto/asn1/a_enum.c b/src/lib/libcrypto/asn1/a_enum.c index 77c7c2cd88..70cea0aad2 100644 --- a/src/lib/libcrypto/asn1/a_enum.c +++ b/src/lib/libcrypto/asn1/a_enum.c | |||
| @@ -74,27 +74,23 @@ int ASN1_ENUMERATED_set(ASN1_ENUMERATED *a, long v) | |||
| 74 | long d; | 74 | long d; |
| 75 | 75 | ||
| 76 | a->type=V_ASN1_ENUMERATED; | 76 | a->type=V_ASN1_ENUMERATED; |
| 77 | if (a->length < (int)(sizeof(long)+1)) | 77 | if (a->length < (int)(sizeof(long)+1)) { |
| 78 | { | ||
| 79 | if (a->data != NULL) | 78 | if (a->data != NULL) |
| 80 | free(a->data); | 79 | free(a->data); |
| 81 | if ((a->data=(unsigned char *)malloc(sizeof(long)+1)) != NULL) | 80 | if ((a->data=(unsigned char *)malloc(sizeof(long)+1)) != NULL) |
| 82 | memset((char *)a->data,0,sizeof(long)+1); | 81 | memset((char *)a->data,0,sizeof(long)+1); |
| 83 | } | 82 | } |
| 84 | if (a->data == NULL) | 83 | if (a->data == NULL) { |
| 85 | { | ||
| 86 | ASN1err(ASN1_F_ASN1_ENUMERATED_SET,ERR_R_MALLOC_FAILURE); | 84 | ASN1err(ASN1_F_ASN1_ENUMERATED_SET,ERR_R_MALLOC_FAILURE); |
| 87 | return(0); | 85 | return(0); |
| 88 | } | 86 | } |
| 89 | d=v; | 87 | d=v; |
| 90 | if (d < 0) | 88 | if (d < 0) { |
| 91 | { | ||
| 92 | d= -d; | 89 | d= -d; |
| 93 | a->type=V_ASN1_NEG_ENUMERATED; | 90 | a->type=V_ASN1_NEG_ENUMERATED; |
| 94 | } | 91 | } |
| 95 | 92 | ||
| 96 | for (i=0; i<sizeof(long); i++) | 93 | for (i=0; i<sizeof(long); i++) { |
| 97 | { | ||
| 98 | if (d == 0) break; | 94 | if (d == 0) break; |
| 99 | buf[i]=(int)d&0xff; | 95 | buf[i]=(int)d&0xff; |
| 100 | d>>=8; | 96 | d>>=8; |
| @@ -118,16 +114,14 @@ long ASN1_ENUMERATED_get(ASN1_ENUMERATED *a) | |||
| 118 | else if (i != V_ASN1_ENUMERATED) | 114 | else if (i != V_ASN1_ENUMERATED) |
| 119 | return -1; | 115 | return -1; |
| 120 | 116 | ||
| 121 | if (a->length > (int)sizeof(long)) | 117 | if (a->length > (int)sizeof(long)) { |
| 122 | { | ||
| 123 | /* hmm... a bit ugly */ | 118 | /* hmm... a bit ugly */ |
| 124 | return(0xffffffffL); | 119 | return(0xffffffffL); |
| 125 | } | 120 | } |
| 126 | if (a->data == NULL) | 121 | if (a->data == NULL) |
| 127 | return 0; | 122 | return 0; |
| 128 | 123 | ||
| 129 | for (i=0; i<a->length; i++) | 124 | for (i=0; i<a->length; i++) { |
| 130 | { | ||
| 131 | r<<=8; | 125 | r<<=8; |
| 132 | r|=(unsigned char)a->data[i]; | 126 | r|=(unsigned char)a->data[i]; |
| 133 | } | 127 | } |
| @@ -144,8 +138,7 @@ ASN1_ENUMERATED *BN_to_ASN1_ENUMERATED(BIGNUM *bn, ASN1_ENUMERATED *ai) | |||
| 144 | ret=M_ASN1_ENUMERATED_new(); | 138 | ret=M_ASN1_ENUMERATED_new(); |
| 145 | else | 139 | else |
| 146 | ret=ai; | 140 | ret=ai; |
| 147 | if (ret == NULL) | 141 | if (ret == NULL) { |
| 148 | { | ||
| 149 | ASN1err(ASN1_F_BN_TO_ASN1_ENUMERATED,ERR_R_NESTED_ASN1_ERROR); | 142 | ASN1err(ASN1_F_BN_TO_ASN1_ENUMERATED,ERR_R_NESTED_ASN1_ERROR); |
| 150 | goto err; | 143 | goto err; |
| 151 | } | 144 | } |
| @@ -153,8 +146,7 @@ ASN1_ENUMERATED *BN_to_ASN1_ENUMERATED(BIGNUM *bn, ASN1_ENUMERATED *ai) | |||
| 153 | else ret->type=V_ASN1_ENUMERATED; | 146 | else ret->type=V_ASN1_ENUMERATED; |
| 154 | j=BN_num_bits(bn); | 147 | j=BN_num_bits(bn); |
| 155 | len=((j == 0)?0:((j/8)+1)); | 148 | len=((j == 0)?0:((j/8)+1)); |
| 156 | if (ret->length < len+4) | 149 | if (ret->length < len+4) { |
| 157 | { | ||
| 158 | unsigned char *new_data=realloc(ret->data, len+4); | 150 | unsigned char *new_data=realloc(ret->data, len+4); |
| 159 | if (!new_data) | 151 | if (!new_data) |
| 160 | { | 152 | { |
