diff --git a/services/src/init_reboot.c b/services/src/init_reboot.c index e1b285c75754afa94029fb2db15dcb04bbc223b3..39f8d0d5e423db9779570c47aa0f0561293188be 100644 --- a/services/src/init_reboot.c +++ b/services/src/init_reboot.c @@ -166,21 +166,20 @@ static int UpdateUpdaterStatus(const char *valueData) static int DoRebootCore(const char *valueData) { - if (valueData == NULL) { - reboot(RB_AUTOBOOT); - return 0; - } else if (strncmp(valueData, "shutdown", strlen("shutdown")) == 0) { - reboot(RB_POWER_OFF); - return 0; - } else if (strncmp(valueData, "updater", strlen("updater")) == 0) { - int ret = UpdateUpdaterStatus(valueData); - if (ret == 0) { - reboot(RB_AUTOBOOT); - return 0; + int arg = RB_AUTOBOOT; + if (valueData) { + if (strcmp(valueData, "shutdown") == 0) { + arg = RB_POWER_OFF; + } else if (strcmp(valueData, "updater") == 0) { + if (UpdateUpdaterStatus(valueData) != 0) { + return -1; + } + } else { + return -1; } - } else { - return -1; } + sync(); + reboot(arg); return 0; }