Commit 1f0bb6c595ef5be0c950fdf38b765e9917114ab3
1 parent
d04b76ae
Exists in
master
and in
3 other branches
Fixing segfault on CRL download.
Showing
1 changed file
with
11 additions
and
7 deletions
Show diff stats
src/ssl/crl.c
... | ... | @@ -179,7 +179,7 @@ int lib3270_crl_new_from_dist_points(H3270 *hSession, void *ssl_error, CRL_DIST_ |
179 | 179 | // https://nougat.cablelabs.com/DLNA-RUI/openssl/commit/57912ed329f870b237f2fd9f2de8dec3477d1729 |
180 | 180 | // |
181 | 181 | size_t ix; |
182 | - int i, gtype; | |
182 | + int i; | |
183 | 183 | |
184 | 184 | lib3270_autoptr(LIB3270_STRING_ARRAY) uris = lib3270_string_array_new(); |
185 | 185 | |
... | ... | @@ -194,19 +194,23 @@ int lib3270_crl_new_from_dist_points(H3270 *hSession, void *ssl_error, CRL_DIST_ |
194 | 194 | |
195 | 195 | for (i = 0; i < sk_GENERAL_NAME_num(gens); i++) |
196 | 196 | { |
197 | + int gtype; | |
197 | 198 | GENERAL_NAME *gen = sk_GENERAL_NAME_value(gens, i); |
198 | 199 | ASN1_STRING *uri = GENERAL_NAME_get0_value(gen, >ype); |
199 | - if(uri) | |
200 | + | |
201 | + if(uri && gtype == GEN_URI) | |
200 | 202 | { |
203 | + int length = ASN1_STRING_length(uri); | |
204 | + | |
201 | 205 | #if (OPENSSL_VERSION_NUMBER >= 0x10100000L) // OpenSSL 1.1.0+ |
202 | 206 | const unsigned char * data = ASN1_STRING_get0_data(uri); |
203 | 207 | #else |
204 | - const unsigned char * data = ASN1_STRING_data(uri); // ASN1_STRING_get0_data(uri); | |
208 | + const unsigned char * data = ASN1_STRING_data(uri); | |
205 | 209 | #endif // OpenSSL 1.1.0+ |
206 | - if(data) | |
207 | - { | |
208 | - lib3270_string_array_append_with_length(uris,(char *) data, (size_t) ASN1_STRING_length(uri)); | |
209 | - } | |
210 | + | |
211 | + if(data && length > 0) | |
212 | + lib3270_string_array_append_with_length(uris,(char *) data, (size_t) length); | |
213 | + | |
210 | 214 | } |
211 | 215 | |
212 | 216 | } | ... | ... |