diff --git a/services/init/standard/init_reboot.c b/services/init/standard/init_reboot.c index ff3a43d3f0bb9aca2fa2cd490652dd37e261e482..1394a6f0e6b2a4791fdfc1008c6f69982085e7e9 100644 --- a/services/init/standard/init_reboot.c +++ b/services/init/standard/init_reboot.c @@ -121,14 +121,16 @@ static int CheckAndRebootToUpdater(const char *valueData, const char *cmd, INIT_ERROR_CHECK(ret == 0, return -1, "Failed to format cmd for %s.", cmd); } - if ((cmdExt != NULL) && (valueData != NULL) && (strncmp(valueData, cmdExt, strlen(cmdExt)) == 0)) { - const char *p = valueData + strlen(cmdExt); - ret = snprintf_s(msg.update, MAX_UPDATE_SIZE, MAX_UPDATE_SIZE - 1, "%s", p); - INIT_ERROR_CHECK(ret > 0, return -1, "Failed to format param for %s.", cmd); - msg.update[MAX_UPDATE_SIZE - 1] = 0; - } else { - ret = memset_s(msg.update, MAX_UPDATE_SIZE, 0, MAX_UPDATE_SIZE); - INIT_ERROR_CHECK(ret == 0, return -1, "Failed to format update for %s.", cmd); + if (strncmp(cmd, "updater", strlen("updater")) != 0) { + if ((cmdExt != NULL) && (valueData != NULL) && (strncmp(valueData, cmdExt, strlen(cmdExt)) == 0)) { + const char *p = valueData + strlen(cmdExt); + ret = snprintf_s(msg.update, MAX_UPDATE_SIZE, MAX_UPDATE_SIZE - 1, "%s", p); + INIT_ERROR_CHECK(ret > 0, return -1, "Failed to format param for %s.", cmd); + msg.update[MAX_UPDATE_SIZE - 1] = 0; + } else { + ret = memset_s(msg.update, MAX_UPDATE_SIZE, 0, MAX_UPDATE_SIZE); + INIT_ERROR_CHECK(ret == 0, return -1, "Failed to format update for %s.", cmd); + } } if (RBMiscWriteUpdaterMessage(miscFile, &msg) == 0) { diff --git a/ueventd/etc/ueventd.config b/ueventd/etc/ueventd.config index d0b73785658b67a9a001691fae0972d53f27564b..4c7ff4ef88e3c51e5d645677e7587bc0741329c4 100755 --- a/ueventd/etc/ueventd.config +++ b/ueventd/etc/ueventd.config @@ -70,3 +70,4 @@ /dev/tty0 0660 0 1000 /dev/uinput 0660 3011 3011 /dev/access_token_id 0666 3020 3020 +/dev/block/by-name/misc 0660 6666 6666