bmc: require blob ids to start with /flash/
Signed-off-by: Patrick Venture <venture@google.com>
Change-Id: Ib6a0db91d4e2ecd7e7cc3c51ddc1953d9fd8da3c
diff --git a/bmc/buildjson.cpp b/bmc/buildjson.cpp
index 6f9c319..19a08a1 100644
--- a/bmc/buildjson.cpp
+++ b/bmc/buildjson.cpp
@@ -27,6 +27,7 @@
#include <fstream>
#include <nlohmann/json.hpp>
#include <phosphor-logging/log.hpp>
+#include <regex>
#include <sdbusplus/bus.hpp>
#include <string>
#include <vector>
@@ -66,6 +67,14 @@
/* at() throws an exception when the key is not present. */
item.at("blob").get_to(output.blobId);
+ /* name must be: /flash/... */
+ if (!std::regex_match(output.blobId, std::regex("^\\/flash\\/.+")))
+ {
+ throw std::runtime_error("Invalid blob name: '" +
+ output.blobId +
+ "' must start with /flash/");
+ }
+
/* handler is required. */
const auto& h = item.at("handler");
const std::string handlerType = h.at("type");