summaryrefslogtreecommitdiff
path: root/src/shared/pager.c
diff options
context:
space:
mode:
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2017-02-19 13:52:18 -0500
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>2017-02-20 16:02:18 -0500
commit0357fa0dcea7e6bd599fbd5b6aac6df9b6961c8e (patch)
tree46439c015c7f06b19894592da4b8e51d1f65d3c8 /src/shared/pager.c
parent643f4706b0f4712f4bce2884d1c0e94e1eb63d9e (diff)
downloadsystemd-0357fa0dcea7e6bd599fbd5b6aac6df9b6961c8e.tar.gz
shared/pager: abort if we cannot set environment variables
This most likely means oom, it's better to exit than to run less with incomplete settings. CID #714383.
Diffstat (limited to 'src/shared/pager.c')
-rw-r--r--src/shared/pager.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/src/shared/pager.c b/src/shared/pager.c
index af667a83f4..f00ba9e1e7 100644
--- a/src/shared/pager.c
+++ b/src/shared/pager.c
@@ -104,7 +104,8 @@ int pager_open(bool no_pager, bool jump_to_end) {
less_opts = "FRSXMK";
if (jump_to_end)
less_opts = strjoina(less_opts, " +G");
- setenv("LESS", less_opts, 1);
+ if (setenv("LESS", less_opts, 1) < 0)
+ _exit(EXIT_FAILURE);
/* Initialize a good charset for less. This is
* particularly important if we output UTF-8
@@ -112,8 +113,9 @@ int pager_open(bool no_pager, bool jump_to_end) {
less_charset = getenv("SYSTEMD_LESSCHARSET");
if (!less_charset && is_locale_utf8())
less_charset = "utf-8";
- if (less_charset)
- setenv("LESSCHARSET", less_charset, 1);
+ if (less_charset &&
+ setenv("LESSCHARSET", less_charset, 1) < 0)
+ _exit(EXIT_FAILURE);
/* Make sure the pager goes away when the parent dies */
if (prctl(PR_SET_PDEATHSIG, SIGTERM) < 0)