From: Zbigniew Jędrzejewski-Szmek Date: Sun, 19 Feb 2017 18:52:18 +0000 (-0500) Subject: shared/pager: abort if we cannot set environment variables X-Git-Tag: v233.3~51 X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=75f87c0c51997508efc2c5a08049aa5952b39fee;hp=f69009b9ced2d38cf8a067c23c77b7bf000afb63 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. --- diff --git a/src/shared/pager.c b/src/shared/pager.c index 82f929416..a085a57e3 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)