init: allow '.' and '@' in service names
Services implementing HIDL HALs must be named the same as the HIDL
package, e.g. android.hardware.nfc@1.0. Allow init to accept names
containing '.' and '@'.
Also combined logic for legal property names and legal service names.
Bug: 31458381
Bug: 32109611
Test: Tested creating service nfc@1.0-service which creates property
'init.svc.nfc@1.0-service' with and without this change. This service
successfully started only with this change.
Change-Id: Ie7a4310742bc03498d774d37b3b5fafa7c6068cc
Signed-off-by: Iliyan Malchev <malchev@google.com>
diff --git a/init/service.cpp b/init/service.cpp
index 685befd..6460e71 100644
--- a/init/service.cpp
+++ b/init/service.cpp
@@ -996,13 +996,5 @@
}
bool ServiceParser::IsValidName(const std::string& name) const {
- if (name.size() > PROP_NAME_MAX - sizeof("init.svc.")) {
- return false;
- }
- for (const auto& c : name) {
- if (!isalnum(c) && (c != '_') && (c != '-')) {
- return false;
- }
- }
- return true;
+ return is_legal_property_name("init.svc." + name);
}