From b1135f7e81ddb1889399800037891cf0df58f443 Mon Sep 17 00:00:00 2001 From: Bin Hu Date: Sat, 26 Mar 2022 14:38:52 +0800 Subject: [PATCH 6/6] return error code when metalink file misses required file attributes Signed-off-by: Bin Hu --- lib/metalink_pstate.c | 2 +- lib/metalink_pstate_v3.c | 4 ++++ lib/metalink_pstate_v4.c | 4 ++++ 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/lib/metalink_pstate.c b/lib/metalink_pstate.c index 3078338..49f48ba 100644 --- a/lib/metalink_pstate.c +++ b/lib/metalink_pstate.c @@ -121,7 +121,7 @@ void initial_state_start_fun(metalink_pstm_t* stm, metalink_pstm_enter_metalink_state_v4(stm); } else { metalink_pctrl_set_version(stm->ctrl, METALINK_VERSION_UNKNOWN); - metalink_pstm_enter_skip_state(stm); + error_handler(stm, METALINK_ERR_NAMESPACE_ERROR); } } else { metalink_pstm_enter_skip_state(stm); diff --git a/lib/metalink_pstate_v3.c b/lib/metalink_pstate_v3.c index 7a3c25a..129a54d 100644 --- a/lib/metalink_pstate_v3.c +++ b/lib/metalink_pstate_v3.c @@ -53,6 +53,10 @@ void metalink_state_end_fun_v3(metalink_pstm_t* stm, const char* name, const char* ns_uri, const char* characters) { + if(!stm->ctrl->metalink->files || !(*stm->ctrl->metalink->files)) { + error_handler(stm, METALINK_ERR_MISSING_REQUIRED_ATTR); + return; + } metalink_pstm_enter_fin_state(stm); } diff --git a/lib/metalink_pstate_v4.c b/lib/metalink_pstate_v4.c index f096d97..36d8a09 100644 --- a/lib/metalink_pstate_v4.c +++ b/lib/metalink_pstate_v4.c @@ -163,6 +163,10 @@ void metalink_state_end_fun_v4(metalink_pstm_t* stm, error_handler(stm, r); return; } + if(!stm->ctrl->metalink->files || !(*stm->ctrl->metalink->files)) { + error_handler(stm, METALINK_ERR_MISSING_REQUIRED_ATTR); + return; + } metalink_pstm_enter_fin_state(stm); } -- 2.28.0.windows.1