Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 11467189 authored by Hong-Mei Li's avatar Hong-Mei Li
Browse files

init: Fix potential null pointer issue



With the old strdup() mechanism, it may return NULL if insufficient memory was
available. So we check the return value or do not use strdup to avoid null
pointer issue.

Change-Id: Id684948d6cb6c2f06327f29a2ba692f9542fce80
Signed-off-by: default avatarHong-Mei Li <a21834@motorola.com>
parent f5562cb6
Loading
Loading
Loading
Loading
+9 −9
Original line number Diff line number Diff line
@@ -90,7 +90,7 @@ void notify_service_state(const char *name, const char *state)
}

static int have_console;
static char *console_name = "/dev/console";
static char console_name[PROP_VALUE_MAX] = "/dev/console";
static time_t process_needs_restart;

static const char *ENV[32];
@@ -430,7 +430,7 @@ static void restart_processes()

static void msg_start(const char *name)
{
    struct service *svc;
    struct service *svc = NULL;
    char *tmp = NULL;
    char *args = NULL;

@@ -438,12 +438,14 @@ static void msg_start(const char *name)
        svc = service_find_by_name(name);
    else {
        tmp = strdup(name);
        if (tmp) {
            args = strchr(tmp, ':');
            *args = '\0';
            args++;

            svc = service_find_by_name(tmp);
        }
    }

    if (svc) {
        service_start(svc, args);
@@ -547,11 +549,9 @@ static int keychord_init_action(int nargs, char **args)
static int console_init_action(int nargs, char **args)
{
    int fd;
    char tmp[PROP_VALUE_MAX];

    if (console[0]) {
        snprintf(tmp, sizeof(tmp), "/dev/%s", console);
        console_name = strdup(tmp);
        snprintf(console_name, sizeof(console_name), "/dev/%s", console);
    }

    fd = open(console_name, O_RDWR);