Filter meaningless characters for reading NVMe model name
Limit to only accept digits/letters/punctuation characters
for NVMe model name to avoid reading garbage data from VPD
possibly (it may cause set model name D-bus property failed)
Signed-off-by: George Hung <george.hung@quantatw.com>
Change-Id: Ib109fa48e64fc0bc015d4ae5f56246c78c4b8fee
diff --git a/nvme_manager.cpp b/nvme_manager.cpp
index e782864..95fb985 100644
--- a/nvme_manager.cpp
+++ b/nvme_manager.cpp
@@ -300,7 +300,9 @@
for (int offset = SERIALNUMBER_START_INDEX; offset < SERIALNUMBER_END_INDEX;
offset++)
{
- if (rsp_data_command_8[offset] != ' ')
+ // Only accept digits/letters/punctuation characters.
+ if (rsp_data_command_8[offset] >= '!' &&
+ rsp_data_command_8[offset] <= '~')
nvmeData.serialNumber +=
static_cast<char>(rsp_data_command_8[offset]);
}
@@ -330,7 +332,8 @@
for (int i = 0; i < rx_len; i++)
{
- if (rsp_data_vpd[i] != ' ')
+ // Only accept digits/letters/punctuation characters.
+ if ((rsp_data_vpd[i] >= '!' && rsp_data_vpd[i] <= '~'))
nvmeData.modelNumber += static_cast<char>(rsp_data_vpd[i]);
}