diff options
author | Daniel Norman <danielnorman@google.com> | 2019-07-09 11:00:53 -0700 |
---|---|---|
committer | Daniel Norman <danielnorman@google.com> | 2019-07-11 14:43:11 -0700 |
commit | 3f42a767cd478de9cac764d91a2318d86f0671c2 (patch) | |
tree | e7b14913c9fc395def6e5c0f70a3df888aae716a /init/service_parser.h | |
parent | 6da50e319c159e276c6186b319c71b80a5d6998e (diff) |
Checks the interface inheritance hierarchy in init_rc files.
Bug: 118016875
Test: Added 'interface' lines to an init_rc file and observed errors
when misspelled or missing entire inheritance hierarchy.
Change-Id: I681420f15539742d8415808b2a0dcbf0bf6faaf1
Diffstat (limited to 'init/service_parser.h')
-rw-r--r-- | init/service_parser.h | 11 |
1 files changed, 7 insertions, 4 deletions
diff --git a/init/service_parser.h b/init/service_parser.h index 5a1676803..5ad26ef6c 100644 --- a/init/service_parser.h +++ b/init/service_parser.h @@ -26,13 +26,16 @@ namespace android { namespace init { +using InterfaceInheritanceHierarchyMap = std::map<std::string, std::set<std::string>>; + class ServiceParser : public SectionParser { public: - ServiceParser(ServiceList* service_list, std::vector<Subcontext>* subcontexts, - const std::optional<std::set<std::string>>& known_interfaces) + ServiceParser( + ServiceList* service_list, std::vector<Subcontext>* subcontexts, + const std::optional<InterfaceInheritanceHierarchyMap>& interface_inheritance_hierarchy) : service_list_(service_list), subcontexts_(subcontexts), - known_interfaces_(known_interfaces), + interface_inheritance_hierarchy_(interface_inheritance_hierarchy), service_(nullptr) {} Result<void> ParseSection(std::vector<std::string>&& args, const std::string& filename, int line) override; @@ -85,7 +88,7 @@ class ServiceParser : public SectionParser { ServiceList* service_list_; std::vector<Subcontext>* subcontexts_; - std::optional<std::set<std::string>> known_interfaces_; + std::optional<InterfaceInheritanceHierarchyMap> interface_inheritance_hierarchy_; std::unique_ptr<Service> service_; std::string filename_; }; |