From: pcarana Date: Wed, 18 Dec 2019 19:47:50 +0000 (-0600) Subject: Merge from master (v1.1.3) X-Git-Tag: v1.2.0~31 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=bfd0e6acd6b6995cd0af303646e4f1c4a8efb23c;p=thirdparty%2FFORT-validator.git Merge from master (v1.1.3) --- bfd0e6acd6b6995cd0af303646e4f1c4a8efb23c diff --cc docs/index.md index 9a26c088,a0f4beb6..2d791b71 --- a/docs/index.md +++ b/docs/index.md @@@ -10,9 -10,5 +10,9 @@@ FORT validator is an MIT-licensed RPKI ## Status -Version [{{ site.fort-latest-version }}](https://github.com/NICMx/FORT-validator/releases/tag/v{{ site.fort-latest-version }}){:target="_blank"} is the latest official release, includes a bug fix: -- Whenever multiple TAL's are being validated, if an error occurs while fetching the root certificate from one of them, discard the validation results from the rest of the TALs. This will avoid to send a considerable amount of withdrawal PDUs to the router(s) due to an error that isn't proper of the RPKI validation. +Version [{{ site.fort-latest-version }}](https://github.com/NICMx/FORT-validator/releases/tag/v{{ site.fort-latest-version }}){:target="_blank"} is the latest official release, includes several updates, including: +- RRDP support (see [RFC 8182](https://tools.ietf.org/html/rfc8182)). +- Support HTTPS URIs at TALs (see [RFC 8630](https://tools.ietf.org/html/rfc8630)). +- Remember last valid SLURM in case of syntax error with a newer version. +- Setup script to fetch ARINs TAL. - - Add incidence to validate signed objects DER encoding. ++- Add incidence to validate signed objects DER encoding. diff --cc src/object/tal.c index 7a56a834,48edaf99..187f154a --- a/src/object/tal.c +++ b/src/object/tal.c @@@ -611,12 -566,13 +616,19 @@@ __do_file_validation(char const *tal_fi struct thread *thread; struct fv_param *param; static pthread_t pid; + int *exit_status; int error; + error = db_rrdp_add_tal(tal_file); + if (error) + return error; + + exit_status = malloc(sizeof(int)); - if (exit_status == NULL) - return pr_enomem(); ++ if (exit_status == NULL) { ++ error = pr_enomem(); ++ goto free_db_rrdp; ++ } + param = malloc(sizeof(struct fv_param)); if (param == NULL) { error = pr_enomem(); @@@ -645,11 -603,10 +659,13 @@@ SLIST_INSERT_HEAD(&threads, thread, next); return 0; -free_status: - free(exit_status); +free_param: free(param->tal_file); free(param); ++free_status: ++ free(exit_status); +free_db_rrdp: + db_rrdp_rem_tal(tal_file); return error; } @@@ -657,11 -614,8 +673,11 @@@ in perform_standalone_validation(struct db_table *table) { struct thread *thread; - int error; + int error, t_error; + /* Set existent tal RRDP info to non visited */ + db_rrdp_reset_visited_tals(); + SLIST_INIT(&threads); error = process_file_or_dir(config_get_tal(), TAL_FILE_EXTENSION, __do_file_validation, table); @@@ -679,9 -639,10 +701,13 @@@ thread_destroy(thread); } + /* One thread has errors, validation can't keep the resulting table */ + if (t_error) + return t_error; + + /* Remove non-visited rrdps URIS by tal */ + db_rrdp_rem_nonvisited_tals(); + return error; }