]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
job: truncate unit description
authorIago López Galeiras <iago@kinvolk.io>
Fri, 16 Feb 2018 13:32:44 +0000 (14:32 +0100)
committerLennart Poettering <lennart@poettering.net>
Mon, 19 Feb 2018 11:37:30 +0000 (12:37 +0100)
The comment above says we're truncating the string but that's not true,
an assert will fail in xsprintf if the description is longer than
LINE_MAX.

Let's use snprintf instead of xsprintf to make sure it's truncated.
We'll cast its result to void to tell static checkers we're fine with
truncation.

src/core/job.c

index a653694d32399151210566d7945edcab570870b0..249016f8b82df80f471dfc853af2f00216210b59 100644 (file)
@@ -776,9 +776,12 @@ static void job_log_status_message(Unit *u, JobType t, JobResult result) {
         if (!format)
                 return;
 
-        /* The description might be longer than the buffer, but that's OK, we'll just truncate it here */
+        /* The description might be longer than the buffer, but that's OK,
+         * we'll just truncate it here. Note that we use snprintf() rather than
+         * xsprintf() on purpose here: we are fine with truncation and don't
+         * consider that an error. */
         DISABLE_WARNING_FORMAT_NONLITERAL;
-        xsprintf(buf, format, unit_description(u));
+        (void) snprintf(buf, sizeof(buf), format, unit_description(u));
         REENABLE_WARNING;
 
         switch (t) {