diff options
author | markus <> | 2003-11-11 21:21:30 +0000 |
---|---|---|
committer | markus <> | 2003-11-11 21:21:30 +0000 |
commit | 9c1aa44a1eacea897c0432e796b205b8484ff4d2 (patch) | |
tree | 5dcca7a2baa0fb63d6886729918ea26b68578561 /src/lib/libcrypto/asn1 | |
parent | 1c98a87f0daac81245653c227eb2f2508a22a965 (diff) | |
download | openbsd-9c1aa44a1eacea897c0432e796b205b8484ff4d2.tar.gz openbsd-9c1aa44a1eacea897c0432e796b205b8484ff4d2.tar.bz2 openbsd-9c1aa44a1eacea897c0432e796b205b8484ff4d2.zip |
import 0.9.7c
Diffstat (limited to 'src/lib/libcrypto/asn1')
-rw-r--r-- | src/lib/libcrypto/asn1/a_mbstr.c | 2 | ||||
-rw-r--r-- | src/lib/libcrypto/asn1/a_strex.c | 2 | ||||
-rw-r--r-- | src/lib/libcrypto/asn1/a_strnid.c | 5 | ||||
-rw-r--r-- | src/lib/libcrypto/asn1/asn1_lib.c | 2 | ||||
-rw-r--r-- | src/lib/libcrypto/asn1/tasn_dec.c | 9 |
5 files changed, 16 insertions, 4 deletions
diff --git a/src/lib/libcrypto/asn1/a_mbstr.c b/src/lib/libcrypto/asn1/a_mbstr.c index 5d981c6553..e8a26af521 100644 --- a/src/lib/libcrypto/asn1/a_mbstr.c +++ b/src/lib/libcrypto/asn1/a_mbstr.c | |||
@@ -296,7 +296,7 @@ static int in_utf8(unsigned long value, void *arg) | |||
296 | 296 | ||
297 | static int out_utf8(unsigned long value, void *arg) | 297 | static int out_utf8(unsigned long value, void *arg) |
298 | { | 298 | { |
299 | long *outlen; | 299 | int *outlen; |
300 | outlen = arg; | 300 | outlen = arg; |
301 | *outlen += UTF8_putc(NULL, -1, value); | 301 | *outlen += UTF8_putc(NULL, -1, value); |
302 | return 1; | 302 | return 1; |
diff --git a/src/lib/libcrypto/asn1/a_strex.c b/src/lib/libcrypto/asn1/a_strex.c index 1def6c6549..8abfdfe598 100644 --- a/src/lib/libcrypto/asn1/a_strex.c +++ b/src/lib/libcrypto/asn1/a_strex.c | |||
@@ -279,7 +279,7 @@ static int do_dump(unsigned long lflags, char_io *io_ch, void *arg, ASN1_STRING | |||
279 | * otherwise it is the number of bytes per character | 279 | * otherwise it is the number of bytes per character |
280 | */ | 280 | */ |
281 | 281 | ||
282 | const static char tag2nbyte[] = { | 282 | const static signed char tag2nbyte[] = { |
283 | -1, -1, -1, -1, -1, /* 0-4 */ | 283 | -1, -1, -1, -1, -1, /* 0-4 */ |
284 | -1, -1, -1, -1, -1, /* 5-9 */ | 284 | -1, -1, -1, -1, -1, /* 5-9 */ |
285 | -1, -1, 0, -1, /* 10-13 */ | 285 | -1, -1, 0, -1, /* 10-13 */ |
diff --git a/src/lib/libcrypto/asn1/a_strnid.c b/src/lib/libcrypto/asn1/a_strnid.c index aa49e9d7d0..613bbc4a7d 100644 --- a/src/lib/libcrypto/asn1/a_strnid.c +++ b/src/lib/libcrypto/asn1/a_strnid.c | |||
@@ -143,7 +143,7 @@ ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out, const unsigned char *in, | |||
143 | /* Now the tables and helper functions for the string table: | 143 | /* Now the tables and helper functions for the string table: |
144 | */ | 144 | */ |
145 | 145 | ||
146 | /* size limits: this stuff is taken straight from RFC2459 */ | 146 | /* size limits: this stuff is taken straight from RFC3280 */ |
147 | 147 | ||
148 | #define ub_name 32768 | 148 | #define ub_name 32768 |
149 | #define ub_common_name 64 | 149 | #define ub_common_name 64 |
@@ -153,6 +153,8 @@ ASN1_STRING *ASN1_STRING_set_by_NID(ASN1_STRING **out, const unsigned char *in, | |||
153 | #define ub_organization_unit_name 64 | 153 | #define ub_organization_unit_name 64 |
154 | #define ub_title 64 | 154 | #define ub_title 64 |
155 | #define ub_email_address 128 | 155 | #define ub_email_address 128 |
156 | #define ub_serial_number 64 | ||
157 | |||
156 | 158 | ||
157 | /* This table must be kept in NID order */ | 159 | /* This table must be kept in NID order */ |
158 | 160 | ||
@@ -170,6 +172,7 @@ static ASN1_STRING_TABLE tbl_standard[] = { | |||
170 | {NID_givenName, 1, ub_name, DIRSTRING_TYPE, 0}, | 172 | {NID_givenName, 1, ub_name, DIRSTRING_TYPE, 0}, |
171 | {NID_surname, 1, ub_name, DIRSTRING_TYPE, 0}, | 173 | {NID_surname, 1, ub_name, DIRSTRING_TYPE, 0}, |
172 | {NID_initials, 1, ub_name, DIRSTRING_TYPE, 0}, | 174 | {NID_initials, 1, ub_name, DIRSTRING_TYPE, 0}, |
175 | {NID_serialNumber, 1, ub_serial_number, B_ASN1_PRINTABLESTRING, STABLE_NO_MASK}, | ||
173 | {NID_friendlyName, -1, -1, B_ASN1_BMPSTRING, STABLE_NO_MASK}, | 176 | {NID_friendlyName, -1, -1, B_ASN1_BMPSTRING, STABLE_NO_MASK}, |
174 | {NID_name, 1, ub_name, DIRSTRING_TYPE, 0}, | 177 | {NID_name, 1, ub_name, DIRSTRING_TYPE, 0}, |
175 | {NID_dnQualifier, -1, -1, B_ASN1_PRINTABLESTRING, STABLE_NO_MASK}, | 178 | {NID_dnQualifier, -1, -1, B_ASN1_PRINTABLESTRING, STABLE_NO_MASK}, |
diff --git a/src/lib/libcrypto/asn1/asn1_lib.c b/src/lib/libcrypto/asn1/asn1_lib.c index 0638870ab7..e30d5dd303 100644 --- a/src/lib/libcrypto/asn1/asn1_lib.c +++ b/src/lib/libcrypto/asn1/asn1_lib.c | |||
@@ -104,10 +104,12 @@ int ASN1_get_object(unsigned char **pp, long *plength, int *ptag, int *pclass, | |||
104 | l<<=7L; | 104 | l<<=7L; |
105 | l|= *(p++)&0x7f; | 105 | l|= *(p++)&0x7f; |
106 | if (--max == 0) goto err; | 106 | if (--max == 0) goto err; |
107 | if (l > (INT_MAX >> 7L)) goto err; | ||
107 | } | 108 | } |
108 | l<<=7L; | 109 | l<<=7L; |
109 | l|= *(p++)&0x7f; | 110 | l|= *(p++)&0x7f; |
110 | tag=(int)l; | 111 | tag=(int)l; |
112 | if (--max == 0) goto err; | ||
111 | } | 113 | } |
112 | else | 114 | else |
113 | { | 115 | { |
diff --git a/src/lib/libcrypto/asn1/tasn_dec.c b/src/lib/libcrypto/asn1/tasn_dec.c index 76fc023230..2426cb6253 100644 --- a/src/lib/libcrypto/asn1/tasn_dec.c +++ b/src/lib/libcrypto/asn1/tasn_dec.c | |||
@@ -691,6 +691,7 @@ static int asn1_d2i_ex_primitive(ASN1_VALUE **pval, unsigned char **in, long inl | |||
691 | 691 | ||
692 | int asn1_ex_c2i(ASN1_VALUE **pval, unsigned char *cont, int len, int utype, char *free_cont, const ASN1_ITEM *it) | 692 | int asn1_ex_c2i(ASN1_VALUE **pval, unsigned char *cont, int len, int utype, char *free_cont, const ASN1_ITEM *it) |
693 | { | 693 | { |
694 | ASN1_VALUE **opval = NULL; | ||
694 | ASN1_STRING *stmp; | 695 | ASN1_STRING *stmp; |
695 | ASN1_TYPE *typ = NULL; | 696 | ASN1_TYPE *typ = NULL; |
696 | int ret = 0; | 697 | int ret = 0; |
@@ -705,6 +706,7 @@ int asn1_ex_c2i(ASN1_VALUE **pval, unsigned char *cont, int len, int utype, char | |||
705 | *pval = (ASN1_VALUE *)typ; | 706 | *pval = (ASN1_VALUE *)typ; |
706 | } else typ = (ASN1_TYPE *)*pval; | 707 | } else typ = (ASN1_TYPE *)*pval; |
707 | if(utype != typ->type) ASN1_TYPE_set(typ, utype, NULL); | 708 | if(utype != typ->type) ASN1_TYPE_set(typ, utype, NULL); |
709 | opval = pval; | ||
708 | pval = (ASN1_VALUE **)&typ->value.ptr; | 710 | pval = (ASN1_VALUE **)&typ->value.ptr; |
709 | } | 711 | } |
710 | switch(utype) { | 712 | switch(utype) { |
@@ -796,7 +798,12 @@ int asn1_ex_c2i(ASN1_VALUE **pval, unsigned char *cont, int len, int utype, char | |||
796 | 798 | ||
797 | ret = 1; | 799 | ret = 1; |
798 | err: | 800 | err: |
799 | if(!ret) ASN1_TYPE_free(typ); | 801 | if(!ret) |
802 | { | ||
803 | ASN1_TYPE_free(typ); | ||
804 | if (opval) | ||
805 | *opval = NULL; | ||
806 | } | ||
800 | return ret; | 807 | return ret; |
801 | } | 808 | } |
802 | 809 | ||