From d2da949a6e9d25dac43e9973ec4b915cd8113eb2 Mon Sep 17 00:00:00 2001 From: liuhaotian Date: Mon, 4 Sep 2023 16:40:17 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9AJsonValue2Stat?= =?UTF-8?q?=E5=87=BD=E6=95=B0=E8=BF=9B=E8=A1=8Cjson=E8=A7=A3=E6=9E=90?= =?UTF-8?q?=E6=97=B6=E4=B8=BA=E6=A0=A1=E9=AA=8C=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: liuhaotian --- utils/src/b_json/b_json_entity_ext_manage.cpp | 22 ++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/utils/src/b_json/b_json_entity_ext_manage.cpp b/utils/src/b_json/b_json_entity_ext_manage.cpp index 758d2721e..4a90af9be 100644 --- a/utils/src/b_json/b_json_entity_ext_manage.cpp +++ b/utils/src/b_json/b_json_entity_ext_manage.cpp @@ -43,15 +43,27 @@ Json::Value Stat2JsonValue(struct stat sta) struct stat JsonValue2Stat(const Json::Value &value) { struct stat sta = {}; + + if (!value.isObject()) { + return sta; + } - sta.st_size = value.isMember("st_size") ? value["st_size"].asInt64() : 0; + sta.st_size = value.isMember("st_size") && value["st_size"].isInt64() ? value["st_size"].asInt64() : 0; if (value.isMember("st_atim")) { - sta.st_atim.tv_sec = value["st_atim"].isMember("tv_sec") ? value["st_atim"]["tv_sec"].asInt64() : 0; - sta.st_atim.tv_nsec = value["st_atim"].isMember("tv_nsec") ? value["st_atim"]["tv_nsec"].asInt64() : 0; + sta.st_atim.tv_sec = value["st_atim"].isMember("tv_sec") && value["st_atim"]["tv_sec"].isInt64() + ? value["st_atim"]["tv_sec"].asInt64() + : 0; + sta.st_atim.tv_nsec = value["st_atim"].isMember("tv_nsec") && value["st_atim"]["tv_nsec"].isInt64() + ? value["st_atim"]["tv_nsec"].asInt64() + : 0; } if (value.isMember("st_mtim")) { - sta.st_mtim.tv_sec = value["st_mtim"].isMember("tv_sec") ? value["st_mtim"]["tv_sec"].asInt64() : 0; - sta.st_mtim.tv_nsec = value["st_mtim"].isMember("tv_nsec") ? value["st_mtim"]["tv_nsec"].asInt64() : 0; + sta.st_mtim.tv_sec = value["st_mtim"].isMember("tv_sec") && value["st_mtim"]["tv_sec"].isInt64() + ? value["st_mtim"]["tv_sec"].asInt64() + : 0; + sta.st_mtim.tv_nsec = value["st_mtim"].isMember("tv_nsec") && value["st_mtim"]["tv_nsec"].isInt64() + ? value["st_mtim"]["tv_nsec"].asInt64() + : 0; } return sta; -- Gitee From 364210702491fa6b5bbdfaa8c32a54adc7055ed6 Mon Sep 17 00:00:00 2001 From: liuhaotian Date: Tue, 5 Sep 2023 10:28:11 +0800 Subject: [PATCH 2/3] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9AJsonValue2Stat?= =?UTF-8?q?=E7=AD=89=E5=87=BD=E6=95=B0=E8=BF=9B=E8=A1=8Cjson=E8=A7=A3?= =?UTF-8?q?=E6=9E=90=E6=97=B6=E6=9C=AA=E6=A0=A1=E9=AA=8C=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: liuhaotian --- utils/src/b_json/b_json_entity_ext_manage.cpp | 28 +++++++++++++------ 1 file changed, 19 insertions(+), 9 deletions(-) diff --git a/utils/src/b_json/b_json_entity_ext_manage.cpp b/utils/src/b_json/b_json_entity_ext_manage.cpp index 4a90af9be..27a0c7446 100644 --- a/utils/src/b_json/b_json_entity_ext_manage.cpp +++ b/utils/src/b_json/b_json_entity_ext_manage.cpp @@ -43,7 +43,7 @@ Json::Value Stat2JsonValue(struct stat sta) struct stat JsonValue2Stat(const Json::Value &value) { struct stat sta = {}; - + if (!value.isObject()) { return sta; } @@ -132,7 +132,9 @@ set BJsonEntityExtManage::GetExtManage() const set info; for (Json::Value &item : obj_) { - string fileName = item.isMember("fileName") ? item["fileName"].asString() : ""; + string fileName = item.isObject() && item.isMember("fileName") && item["fileName"].isString() + ? item["fileName"].asString() + : ""; info.emplace(fileName); } return info; @@ -151,21 +153,22 @@ map> BJsonEntityExtManage::GetExtManageInfo() map> info; for (const Json::Value &item : obj_) { - string fileName = item.isMember("fileName") ? item["fileName"].asString() : ""; - if (!item.isMember("information")) { + if (!(item.isObject() && item.isMember("information"))) { continue; } struct stat sta = {}; - string path = item["information"].isMember("path") ? item["information"]["path"].asString() : ""; + string path = item["information"].isMember("path") && item["information"]["path"].isString() + ? item["information"]["path"].asString() + : ""; if (path == BConstants::RESTORE_INSTALL_PATH) { throw BError(BError::Codes::UTILS_INVAL_JSON_ENTITY, "Failed to get ext manage info, invalid path"); } if (item["information"].isMember("stat")) { sta = JsonValue2Stat(item["information"]["stat"]); } - + string fileName = item.isMember("fileName") && item["fileName"].isString() ? item["fileName"].asString() : ""; if (!fileName.empty() && !path.empty()) { info.emplace(fileName, make_pair(path, sta)); } @@ -190,7 +193,9 @@ bool BJsonEntityExtManage::SetHardLinkInfo(const string origin, const set BJsonEntityExtManage::GetHardLinkInfo(const string origin) set hardlinks; for (const Json::Value &item : obj_) { - string fileName = item.isMember("fileName") ? item["fileName"].asString() : ""; + if (!item.isObject()) { + continue; + } + string fileName = item.isMember("fileName") && item["fileName"].isString() ? item["fileName"].asString() : ""; if (origin == fileName) { if (!(item.isMember("hardlinks") && item["hardlinks"].isArray())) { break; } for (const auto &lk : item["hardlinks"]) { - hardlinks.emplace(lk.asString()); + if (lk.isString()) { + hardlinks.emplace(lk.asString()); + } } } } -- Gitee From 99191ce1d440d145de79c721fa8262895bd30b26 Mon Sep 17 00:00:00 2001 From: liuhaotian Date: Wed, 6 Sep 2023 10:50:14 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=EF=BC=9AJsonValue2Stat?= =?UTF-8?q?=E7=AD=89=E5=87=BD=E6=95=B0=E8=BF=9B=E8=A1=8Cjson=E8=A7=A3?= =?UTF-8?q?=E6=9E=90=E6=97=B6=E6=9C=AA=E6=A0=A1=E9=AA=8C=E7=B1=BB=E5=9E=8B?= =?UTF-8?q?=EF=BC=88=E4=BF=AE=E6=94=B9=E4=BB=A3=E7=A0=81=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: liuhaotian --- utils/src/b_json/b_json_entity_ext_manage.cpp | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/utils/src/b_json/b_json_entity_ext_manage.cpp b/utils/src/b_json/b_json_entity_ext_manage.cpp index 27a0c7446..d367ff3ff 100644 --- a/utils/src/b_json/b_json_entity_ext_manage.cpp +++ b/utils/src/b_json/b_json_entity_ext_manage.cpp @@ -153,7 +153,6 @@ map> BJsonEntityExtManage::GetExtManageInfo() map> info; for (const Json::Value &item : obj_) { - if (!(item.isObject() && item.isMember("information"))) { continue; } @@ -228,14 +227,15 @@ const set BJsonEntityExtManage::GetHardLinkInfo(const string origin) continue; } string fileName = item.isMember("fileName") && item["fileName"].isString() ? item["fileName"].asString() : ""; - if (origin == fileName) { - if (!(item.isMember("hardlinks") && item["hardlinks"].isArray())) { - break; - } - for (const auto &lk : item["hardlinks"]) { - if (lk.isString()) { - hardlinks.emplace(lk.asString()); - } + if (origin != fileName) { + continue; + } + if (!(item.isMember("hardlinks") && item["hardlinks"].isArray())) { + break; + } + for (const auto &lk : item["hardlinks"]) { + if (lk.isString()) { + hardlinks.emplace(lk.asString()); } } } -- Gitee