diff options
Diffstat (limited to 'src/core/service.c')
-rw-r--r-- | src/core/service.c | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/src/core/service.c b/src/core/service.c index 7f9a53af46..5742968d91 100644 --- a/src/core/service.c +++ b/src/core/service.c @@ -1801,7 +1801,8 @@ static int service_spawn( goto fail; } - if (!(our_env = new0(char*, 4))) { + our_env = new0(char*, 5); + if (!our_env) { r = -ENOMEM; goto fail; } @@ -1824,10 +1825,14 @@ static int service_spawn( goto fail; } - if (!(final_env = strv_env_merge(2, - UNIT(s)->manager->environment, - our_env, - NULL))) { + if (s->meta.manager->running_as != SYSTEMD_SYSTEM) + if (asprintf(our_env + n_env++, "MANAGERPID=%lu", (unsigned long) getpid()) < 0) { + r = -ENOMEM; + goto fail; + } + + final_env = strv_env_merge(2, UNIT(s)->manager->environment, our_env, NULL); + if (!final_env) { r = -ENOMEM; goto fail; } |