diff options
Diffstat (limited to 'src/lib/libcrypto/asn1/a_bytes.c')
| -rw-r--r-- | src/lib/libcrypto/asn1/a_bytes.c | 19 |
1 files changed, 10 insertions, 9 deletions
diff --git a/src/lib/libcrypto/asn1/a_bytes.c b/src/lib/libcrypto/asn1/a_bytes.c index e452e03b88..8cde695804 100644 --- a/src/lib/libcrypto/asn1/a_bytes.c +++ b/src/lib/libcrypto/asn1/a_bytes.c | |||
| @@ -71,7 +71,7 @@ B_ASN1_T61STRING,B_ASN1_VIDEOTEXSTRING,B_ASN1_IA5STRING,0, | |||
| 71 | B_ASN1_UNIVERSALSTRING,B_ASN1_UNKNOWN,B_ASN1_BMPSTRING,B_ASN1_UNKNOWN, | 71 | B_ASN1_UNIVERSALSTRING,B_ASN1_UNKNOWN,B_ASN1_BMPSTRING,B_ASN1_UNKNOWN, |
| 72 | }; | 72 | }; |
| 73 | 73 | ||
| 74 | static int asn1_collate_primative(ASN1_STRING *a, ASN1_CTX *c); | 74 | static int asn1_collate_primitive(ASN1_STRING *a, ASN1_CTX *c); |
| 75 | /* type is a 'bitmap' of acceptable string types. | 75 | /* type is a 'bitmap' of acceptable string types. |
| 76 | */ | 76 | */ |
| 77 | ASN1_STRING *d2i_ASN1_type_bytes(ASN1_STRING **a, unsigned char **pp, | 77 | ASN1_STRING *d2i_ASN1_type_bytes(ASN1_STRING **a, unsigned char **pp, |
| @@ -124,7 +124,7 @@ ASN1_STRING *d2i_ASN1_type_bytes(ASN1_STRING **a, unsigned char **pp, | |||
| 124 | else | 124 | else |
| 125 | s=NULL; | 125 | s=NULL; |
| 126 | 126 | ||
| 127 | if (ret->data != NULL) Free((char *)ret->data); | 127 | if (ret->data != NULL) Free(ret->data); |
| 128 | ret->length=(int)len; | 128 | ret->length=(int)len; |
| 129 | ret->data=s; | 129 | ret->data=s; |
| 130 | ret->type=tag; | 130 | ret->type=tag; |
| @@ -205,7 +205,7 @@ ASN1_STRING *d2i_ASN1_bytes(ASN1_STRING **a, unsigned char **pp, long length, | |||
| 205 | c.tag=Ptag; | 205 | c.tag=Ptag; |
| 206 | c.xclass=Pclass; | 206 | c.xclass=Pclass; |
| 207 | c.max=(length == 0)?0:(p+length); | 207 | c.max=(length == 0)?0:(p+length); |
| 208 | if (!asn1_collate_primative(ret,&c)) | 208 | if (!asn1_collate_primitive(ret,&c)) |
| 209 | goto err; | 209 | goto err; |
| 210 | else | 210 | else |
| 211 | { | 211 | { |
| @@ -218,8 +218,8 @@ ASN1_STRING *d2i_ASN1_bytes(ASN1_STRING **a, unsigned char **pp, long length, | |||
| 218 | { | 218 | { |
| 219 | if ((ret->length < len) || (ret->data == NULL)) | 219 | if ((ret->length < len) || (ret->data == NULL)) |
| 220 | { | 220 | { |
| 221 | if (ret->data != NULL) Free((char *)ret->data); | 221 | if (ret->data != NULL) Free(ret->data); |
| 222 | s=(unsigned char *)Malloc((int)len); | 222 | s=(unsigned char *)Malloc((int)len + 1); |
| 223 | if (s == NULL) | 223 | if (s == NULL) |
| 224 | { | 224 | { |
| 225 | i=ERR_R_MALLOC_FAILURE; | 225 | i=ERR_R_MALLOC_FAILURE; |
| @@ -229,12 +229,13 @@ ASN1_STRING *d2i_ASN1_bytes(ASN1_STRING **a, unsigned char **pp, long length, | |||
| 229 | else | 229 | else |
| 230 | s=ret->data; | 230 | s=ret->data; |
| 231 | memcpy(s,p,(int)len); | 231 | memcpy(s,p,(int)len); |
| 232 | s[len] = '\0'; | ||
| 232 | p+=len; | 233 | p+=len; |
| 233 | } | 234 | } |
| 234 | else | 235 | else |
| 235 | { | 236 | { |
| 236 | s=NULL; | 237 | s=NULL; |
| 237 | if (ret->data != NULL) Free((char *)ret->data); | 238 | if (ret->data != NULL) Free(ret->data); |
| 238 | } | 239 | } |
| 239 | 240 | ||
| 240 | ret->length=(int)len; | 241 | ret->length=(int)len; |
| @@ -253,11 +254,11 @@ err: | |||
| 253 | } | 254 | } |
| 254 | 255 | ||
| 255 | 256 | ||
| 256 | /* We are about to parse 0..n d2i_ASN1_bytes objects, we are to collapes | 257 | /* We are about to parse 0..n d2i_ASN1_bytes objects, we are to collapse |
| 257 | * them into the one struture that is then returned */ | 258 | * them into the one structure that is then returned */ |
| 258 | /* There have been a few bug fixes for this function from | 259 | /* There have been a few bug fixes for this function from |
| 259 | * Paul Keogh <paul.keogh@sse.ie>, many thanks to him */ | 260 | * Paul Keogh <paul.keogh@sse.ie>, many thanks to him */ |
| 260 | static int asn1_collate_primative(ASN1_STRING *a, ASN1_CTX *c) | 261 | static int asn1_collate_primitive(ASN1_STRING *a, ASN1_CTX *c) |
| 261 | { | 262 | { |
| 262 | ASN1_STRING *os=NULL; | 263 | ASN1_STRING *os=NULL; |
| 263 | BUF_MEM b; | 264 | BUF_MEM b; |
