libmetalink/0006-return-error-code-when-metalink-file-misses-required.patch
hubin 635979e215 fix return value bug when parsing wrong formed metalink file
Signed-off-by: hubin <hubin73@huawei.com>
2022-03-28 09:30:28 +08:00

60 lines
1.9 KiB
Diff

From b1135f7e81ddb1889399800037891cf0df58f443 Mon Sep 17 00:00:00 2001
From: Bin Hu <hubin73@huawei.com>
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 <hubin73@huawei.com>
---
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