Restrict updating of IM keyword
This commit adds code to restrict updating of IM value from vpd-tool if
the value is not in the supported list of IM values.
Test:
```
root@p10bmc:~# vpd-tool -w -O "/system/chassis/motherboard" -R "VSBP" -K "IM" -V "0x50001003"
Given IM value [0x50001003] does not match to any valid system type.
root@p10bmc:~# vpd-tool -w -O "/system/chassis/motherboard" -R "VSBP" -K "IM" -V "5000"
Given IM value [5000] does not match to any valid system type.
root@p10bmc:~# vpd-tool -w -O "/system/chassis/motherboard" -R "VSBP" -K "IM" -V "0x50001002"
Data updated successfully
```
Change-Id: Ia14d6ffe8673a3ed94fc3a5f4fdbfe37f351b2a8
Signed-off-by: Rekha Aparna <vrekhaaparna@ibm.com>
diff --git a/vpd-tool/src/vpd_tool_main.cpp b/vpd-tool/src/vpd_tool_main.cpp
index 18d71ef..152cfca 100644
--- a/vpd-tool/src/vpd_tool_main.cpp
+++ b/vpd-tool/src/vpd_tool_main.cpp
@@ -113,6 +113,26 @@
return vpd::constants::FAILURE;
}
+ if (i_keywordName == vpd::constants::KwdIM)
+ {
+ if (!(i_keywordValue.substr(0, 2).compare("0x") ==
+ vpd::constants::STR_CMP_SUCCESS))
+ {
+ std::cerr << "Please provide IM value in hex format." << std::endl;
+ return vpd::constants::FAILURE;
+ }
+
+ if (std::find(vpd::constants::validImValues.begin(),
+ vpd::constants::validImValues.end(), i_keywordValue) ==
+ vpd::constants::validImValues.end())
+ {
+ std::cerr << "Given IM value [" << i_keywordValue
+ << "] doesn't match with any of the valid system type."
+ << std::endl;
+ return vpd::constants::FAILURE;
+ }
+ }
+
vpd::VpdTool l_vpdToolObj;
return l_vpdToolObj.writeKeyword(i_vpdPath, i_recordName, i_keywordName,
i_keywordValue, !i_hardwareFlag->empty());