Allow setting read-only properties with value length > 92 characters
Bug: 23102347 Bug: 34954705 Test: read and write properties with value length > 92 characters Change-Id: Ie196c1fdacc0489508c633e98fe9f4ad7a27dc6e
This commit is contained in:
parent
63a0008df7
commit
1cf8d699a4
1 changed files with 5 additions and 4 deletions
|
@ -57,6 +57,7 @@
|
|||
#include "persistent_properties.h"
|
||||
#include "util.h"
|
||||
|
||||
using android::base::StartsWith;
|
||||
using android::base::StringPrintf;
|
||||
using android::base::Timer;
|
||||
|
||||
|
@ -153,7 +154,7 @@ static uint32_t PropertySetImpl(const std::string& name, const std::string& valu
|
|||
return PROP_ERROR_INVALID_NAME;
|
||||
}
|
||||
|
||||
if (valuelen >= PROP_VALUE_MAX) {
|
||||
if (valuelen >= PROP_VALUE_MAX && !StartsWith(name, "ro.")) {
|
||||
LOG(ERROR) << "property_set(\"" << name << "\", \"" << value << "\") failed: "
|
||||
<< "value too long";
|
||||
return PROP_ERROR_INVALID_VALUE;
|
||||
|
@ -162,7 +163,7 @@ static uint32_t PropertySetImpl(const std::string& name, const std::string& valu
|
|||
prop_info* pi = (prop_info*) __system_property_find(name.c_str());
|
||||
if (pi != nullptr) {
|
||||
// ro.* properties are actually "write-once".
|
||||
if (android::base::StartsWith(name, "ro.")) {
|
||||
if (StartsWith(name, "ro.")) {
|
||||
LOG(ERROR) << "property_set(\"" << name << "\", \"" << value << "\") failed: "
|
||||
<< "property already set";
|
||||
return PROP_ERROR_READ_ONLY_PROPERTY;
|
||||
|
@ -180,7 +181,7 @@ static uint32_t PropertySetImpl(const std::string& name, const std::string& valu
|
|||
|
||||
// Don't write properties to disk until after we have read all default
|
||||
// properties to prevent them from being overwritten by default values.
|
||||
if (persistent_properties_loaded && android::base::StartsWith(name, "persist.")) {
|
||||
if (persistent_properties_loaded && StartsWith(name, "persist.")) {
|
||||
WritePersistentProperty(name, value);
|
||||
}
|
||||
property_changed(name, value);
|
||||
|
@ -401,7 +402,7 @@ static void handle_property_set(SocketConnection& socket,
|
|||
char* source_ctx = nullptr;
|
||||
getpeercon(socket.socket(), &source_ctx);
|
||||
|
||||
if (android::base::StartsWith(name, "ctl.")) {
|
||||
if (StartsWith(name, "ctl.")) {
|
||||
if (check_control_mac_perms(value.c_str(), source_ctx, &cr)) {
|
||||
handle_control_message(name.c_str() + 4, value.c_str());
|
||||
if (!legacy_protocol) {
|
||||
|
|
Loading…
Reference in a new issue