| ... | @@ -244,10 +244,16 @@ pub fn parseCert(cb: *Bundle, gpa: Allocator, decoded_start: u32, now_sec: i64) | ... | @@ -244,10 +244,16 @@ pub fn parseCert(cb: *Bundle, gpa: Allocator, decoded_start: u32, now_sec: i64) |
| 244 | // the subject name, we pre-parse all of them to make sure and only | 244 | // the subject name, we pre-parse all of them to make sure and only |
| 245 | // include in the bundle ones that we know will parse. This way we can | 245 | // include in the bundle ones that we know will parse. This way we can |
| 246 | // use `catch unreachable` later. | 246 | // use `catch unreachable` later. |
| 247 | const parsed_cert = try Certificate.parse(.{ | 247 | const parsed_cert = Certificate.parse(.{ |
| 248 | .buffer = cb.bytes.items, | 248 | .buffer = cb.bytes.items, |
| 249 | .index = decoded_start, | 249 | .index = decoded_start, |
| 250 | }); | 250 | }) catch |err| switch (err) { |
| | 251 | error.CertificateHasUnrecognizedObjectId => { |
| | 252 | cb.bytes.items.len = decoded_start; |
| | 253 | return; |
| | 254 | }, |
| | 255 | else => |e| return e, |
| | 256 | }; |
| 251 | if (now_sec > parsed_cert.validity.not_after) { | 257 | if (now_sec > parsed_cert.validity.not_after) { |
| 252 | // Ignore expired cert. | 258 | // Ignore expired cert. |
| 253 | cb.bytes.items.len = decoded_start; | 259 | cb.bytes.items.len = decoded_start; |