[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH] build: temp?-disable -Wanalyzer-use-of-uninitialized-value
From: |
Jim Meyering |
Subject: |
[PATCH] build: temp?-disable -Wanalyzer-use-of-uninitialized-value |
Date: |
Fri, 30 Dec 2022 13:36:49 -0800 |
FYI, I've just pushed this:
build: temp?-disable -Wanalyzer-use-of-uninitialized-value
* src/util.c (print_message_queue): This function triggers false
positive warnings from GCC12, so add pragmas to ignore that new warning
in this one function. Required when using either of these:
- gcc version 12.2.1 20221121
- gcc version 13.0.0 20221229 (experimental)
Here's the patch:
>From eb3085a076c94cc4b48233ce8fa9de60bd734467 Mon Sep 17 00:00:00 2001
From: Jim Meyering <meyering@fb.com>
Date: Sun, 11 Dec 2022 09:28:57 -0800
Subject: [PATCH] build: temp?-disable -Wanalyzer-use-of-uninitialized-value
* src/util.c (print_message_queue): This function triggers false
positive warnings from GCC12, so add pragmas to ignore that new warning
in this one function. Required when using either of these:
- gcc version 12.2.1 20221121
- gcc version 13.0.0 20221229 (experimental)
---
src/util.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/src/util.c b/src/util.c
index bdc2bda..d2fd5ca 100644
--- a/src/util.c
+++ b/src/util.c
@@ -153,6 +153,13 @@ message (char const *format_msgid, ...)
va_end (ap);
}
+/* Suppress false positive from gcc version 13.0.0 20221208 (experimental)
(GCC)
+ */
+_Pragma ("GCC diagnostic push")
+#if 12 <= __GNUC__
+_Pragma ("GCC diagnostic ignored \"-Wanalyzer-use-of-uninitialized-value\"")
+#endif
+
/* Output all the messages that were saved up by calls to 'message'. */
void
@@ -178,7 +185,8 @@ print_message_queue (void)
m = next;
}
}
-
+_Pragma ("GCC diagnostic pop")
+
/* Signal handling, needed for restoring default colors. */
static void
--
2.39.0.132.g8a4e8f6a67
And here's the log with warnings/errors, for reference:
CC util.o
util.c: In function 'print_message_queue':
util.c:173:7: error: use of uninitialized value 'arg[1]' [CWE-457]
[-Werror=analyzer-use-of-uninitialized-value]
173 | printf (_(m->msgid), arg[0], arg[1], arg[2], arg[3]);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'output_1_line': events 1-5
|
| 1364 | output_1_line (char const *base, char const *limit, char const
*flag_format,
| | ^~~~~~~~~~~~~
| | |
| | (1) entry to 'output_1_line'
|......
| 1368 | if (!expand_tabs)
| | ~
| | |
| | (2) following 'false' branch...
| 1369 | {
| 1370 | size_t left = limit - base;
| | ~~~~~~
| | |
| | (3) ...to here
| 1371 | while (left)
| | ~~~~
| | |
| | (4) following 'true' branch (when 'left != 0')...
| 1372 | {
| 1373 | size_t to_write = MIN (left, MAX_CHUNK);
| | ~~~~~~
| | |
| | (5) ...to here
|
'output_1_line': event 6
|
|../lib/unlocked-io.h:94:27:
| 94 | # define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z)
| | ^~~~~~~~~~~~~~~
| | |
| | (6) following 'true' branch...
util.c:1374:28: note: in expansion of macro 'fwrite'
| 1374 | size_t written = fwrite (base, sizeof (char), to_write,
outfile);
| | ^~~~~~
|
'output_1_line': event 7
|
|../lib/unlocked-io.h:94:27:
| 94 | # define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z)
| | ^~~~~~~~~~~~~~~
| | |
| | (7) ...to here
util.c:1374:28: note: in expansion of macro 'fwrite'
| 1374 | size_t written = fwrite (base, sizeof (char), to_write,
outfile);
| | ^~~~~~
|
'output_1_line': event 8
|
|../lib/unlocked-io.h:94:27:
| 94 | # define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z)
| | ^~~~~~~~~~~~~~~
| | |
| | (8) following 'false' branch (when
'__cnt == 0')...
util.c:1374:28: note: in expansion of macro 'fwrite'
| 1374 | size_t written = fwrite (base, sizeof (char), to_write,
outfile);
| | ^~~~~~
|
'output_1_line': event 9
|
|../lib/unlocked-io.h:94:27:
| 94 | # define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z)
| | ^~~~~~~~~~~~~~~
| | |
| | (9) ...to here
util.c:1374:28: note: in expansion of macro 'fwrite'
| 1374 | size_t written = fwrite (base, sizeof (char), to_write,
outfile);
| | ^~~~~~
|
'output_1_line': events 10-12
|
| 1375 | if (written < to_write)
| | ^
| | |
| | (10) following 'false' branch...
| 1376 | return;
| 1377 | base += written;
| | ~~~~
| | |
| | (11) ...to here
| 1378 | left -= written;
| 1379 | process_signals ();
| | ~~~~~~~~~~~~~~~~~~
| | |
| | (12) calling 'process_signals' from 'output_1_line'
|
+--> 'process_signals': events 13-16
|
| 260 | process_signals (void)
| | ^~~~~~~~~~~~~~~
| | |
| | (13) entry to 'process_signals'
| 261 | {
| 262 | while (interrupt_signal | stop_signal_count)
| | ~~~~~~~~~~~~~~~~
| | |
| | (14) following 'true' branch...
| 263 | {
| 264 | set_color_context (RESET_CONTEXT);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (15) ...to here
| | (16) calling 'set_color_context' from
'process_signals'
|
+--> 'set_color_context': events 17-19
|
| 1449 | set_color_context (enum color_context color_context)
| | ^~~~~~~~~~~~~~~~~
| | |
| | (17) entry to 'set_color_context'
| 1450 | {
| 1451 | if (color_context != RESET_CONTEXT)
| | ~
| | |
| | (18) following 'false' branch (when
'color_context == 3')...
| 1452 | process_signals ();
| 1453 | if (colors_enabled && last_context !=
color_context)
| | ~~
| | |
| | (19) ...to here
|
<------+
|
'process_signals': events 20-21
|
| 264 | set_color_context (RESET_CONTEXT);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (20) returning to 'process_signals' from
'set_color_context'
|......
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals, &oldset);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (21) calling 'xsigprocmask' from 'process_signals'
|
+--> 'xsigprocmask': events 22-24
|
| 212 | xsigprocmask (int how, sigset_t const *restrict set,
sigset_t *restrict oset)
| | ^~~~~~~~~~~~
| | |
| | (22) entry to 'xsigprocmask'
| 213 | {
| 214 | if (sigprocmask (how, set, oset) != 0)
| | ~
| | |
| | (23) following 'false' branch...
| 215 | pfatal_with_name ("sigprocmask");
| 216 | }
| | ~
| | |
| | (24) ...to here
|
<------+
|
'process_signals': events 25-26
|
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals, &oldset);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (25) returning to 'process_signals' from
'xsigprocmask'
|......
| 290 | pfatal_with_name ("raise");
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (26) calling 'pfatal_with_name' from
'process_signals'
|
+--> 'pfatal_with_name': events 27-28
|
| 87 | pfatal_with_name (char const *name)
| | ^~~~~~~~~~~~~~~~
| | |
| | (27) entry to 'pfatal_with_name'
|......
| 90 | print_message_queue ();
| | ~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (28) calling 'print_message_queue' from
'pfatal_with_name'
|
+--> 'print_message_queue': events 29-37
|
| 159 | print_message_queue (void)
| | ^~~~~~~~~~~~~~~~~~~
| | |
| | (29) entry to 'print_message_queue'
| 160 | {
| 161 | for (struct msg *m = msg_chain; m; )
| | ~
| | |
| | (31)
following 'true' branch (when 'm' is non-NULL)...
|......
| 164 | char const *p = m->args;
| | ~~~~
| | |
| | (32) ...to here
| 165 | char const *plim = p + m->argbytes;
| 166 | char const *arg[4];
| | ~~~
| | |
| | (30) region created on
stack here
| 167 | for (int i = 0; i < 4; i++)
| | ~~~~~
| | |
| | (33) following 'true'
branch (when 'i != 4')...
| | (35) following
'false' branch (when 'i == 4')...
| 168 | {
| 169 | arg[i] = p;
| | ~~~
| | |
| | (34) ...to here
|......
| 173 | printf (_(m->msgid), arg[0], arg[1],
arg[2], arg[3]);
| |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (36) ...to here
| | (37) use of uninitialized value
'arg[1]' here
|
util.c:173:7: error: use of uninitialized value 'arg[3]' [CWE-457]
[-Werror=analyzer-use-of-uninitialized-value]
173 | printf (_(m->msgid), arg[0], arg[1], arg[2], arg[3]);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'output_1_line': events 1-5
|
| 1364 | output_1_line (char const *base, char const *limit, char const
*flag_format,
| | ^~~~~~~~~~~~~
| | |
| | (1) entry to 'output_1_line'
|......
| 1368 | if (!expand_tabs)
| | ~
| | |
| | (2) following 'false' branch...
| 1369 | {
| 1370 | size_t left = limit - base;
| | ~~~~~~
| | |
| | (3) ...to here
| 1371 | while (left)
| | ~~~~
| | |
| | (4) following 'true' branch (when 'left != 0')...
| 1372 | {
| 1373 | size_t to_write = MIN (left, MAX_CHUNK);
| | ~~~~~~
| | |
| | (5) ...to here
|
'output_1_line': event 6
|
|../lib/unlocked-io.h:94:27:
| 94 | # define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z)
| | ^~~~~~~~~~~~~~~
| | |
| | (6) following 'true' branch...
util.c:1374:28: note: in expansion of macro 'fwrite'
| 1374 | size_t written = fwrite (base, sizeof (char), to_write,
outfile);
| | ^~~~~~
|
'output_1_line': event 7
|
|../lib/unlocked-io.h:94:27:
| 94 | # define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z)
| | ^~~~~~~~~~~~~~~
| | |
| | (7) ...to here
util.c:1374:28: note: in expansion of macro 'fwrite'
| 1374 | size_t written = fwrite (base, sizeof (char), to_write,
outfile);
| | ^~~~~~
|
'output_1_line': event 8
|
|../lib/unlocked-io.h:94:27:
| 94 | # define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z)
| | ^~~~~~~~~~~~~~~
| | |
| | (8) following 'false' branch (when
'__cnt == 0')...
util.c:1374:28: note: in expansion of macro 'fwrite'
| 1374 | size_t written = fwrite (base, sizeof (char), to_write,
outfile);
| | ^~~~~~
|
'output_1_line': event 9
|
|../lib/unlocked-io.h:94:27:
| 94 | # define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z)
| | ^~~~~~~~~~~~~~~
| | |
| | (9) ...to here
util.c:1374:28: note: in expansion of macro 'fwrite'
| 1374 | size_t written = fwrite (base, sizeof (char), to_write,
outfile);
| | ^~~~~~
|
'output_1_line': events 10-12
|
| 1375 | if (written < to_write)
| | ^
| | |
| | (10) following 'false' branch...
| 1376 | return;
| 1377 | base += written;
| | ~~~~
| | |
| | (11) ...to here
| 1378 | left -= written;
| 1379 | process_signals ();
| | ~~~~~~~~~~~~~~~~~~
| | |
| | (12) calling 'process_signals' from 'output_1_line'
|
+--> 'process_signals': events 13-16
|
| 260 | process_signals (void)
| | ^~~~~~~~~~~~~~~
| | |
| | (13) entry to 'process_signals'
| 261 | {
| 262 | while (interrupt_signal | stop_signal_count)
| | ~~~~~~~~~~~~~~~~
| | |
| | (14) following 'true' branch...
| 263 | {
| 264 | set_color_context (RESET_CONTEXT);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (15) ...to here
| | (16) calling 'set_color_context' from
'process_signals'
|
+--> 'set_color_context': events 17-19
|
| 1449 | set_color_context (enum color_context color_context)
| | ^~~~~~~~~~~~~~~~~
| | |
| | (17) entry to 'set_color_context'
| 1450 | {
| 1451 | if (color_context != RESET_CONTEXT)
| | ~
| | |
| | (18) following 'false' branch (when
'color_context == 3')...
| 1452 | process_signals ();
| 1453 | if (colors_enabled && last_context !=
color_context)
| | ~~
| | |
| | (19) ...to here
|
<------+
|
'process_signals': events 20-21
|
| 264 | set_color_context (RESET_CONTEXT);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (20) returning to 'process_signals' from
'set_color_context'
|......
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals, &oldset);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (21) calling 'xsigprocmask' from 'process_signals'
|
+--> 'xsigprocmask': events 22-24
|
| 212 | xsigprocmask (int how, sigset_t const *restrict set,
sigset_t *restrict oset)
| | ^~~~~~~~~~~~
| | |
| | (22) entry to 'xsigprocmask'
| 213 | {
| 214 | if (sigprocmask (how, set, oset) != 0)
| | ~
| | |
| | (23) following 'false' branch...
| 215 | pfatal_with_name ("sigprocmask");
| 216 | }
| | ~
| | |
| | (24) ...to here
|
<------+
|
'process_signals': events 25-26
|
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals, &oldset);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (25) returning to 'process_signals' from
'xsigprocmask'
|......
| 290 | pfatal_with_name ("raise");
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (26) calling 'pfatal_with_name' from
'process_signals'
|
+--> 'pfatal_with_name': events 27-28
|
| 87 | pfatal_with_name (char const *name)
| | ^~~~~~~~~~~~~~~~
| | |
| | (27) entry to 'pfatal_with_name'
|......
| 90 | print_message_queue ();
| | ~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (28) calling 'print_message_queue' from
'pfatal_with_name'
|
+--> 'print_message_queue': events 29-37
|
| 159 | print_message_queue (void)
| | ^~~~~~~~~~~~~~~~~~~
| | |
| | (29) entry to 'print_message_queue'
| 160 | {
| 161 | for (struct msg *m = msg_chain; m; )
| | ~
| | |
| | (31)
following 'true' branch (when 'm' is non-NULL)...
|......
| 164 | char const *p = m->args;
| | ~~~~
| | |
| | (32) ...to here
| 165 | char const *plim = p + m->argbytes;
| 166 | char const *arg[4];
| | ~~~
| | |
| | (30) region created on
stack here
| 167 | for (int i = 0; i < 4; i++)
| | ~~~~~
| | |
| | (33) following 'true'
branch (when 'i != 4')...
| | (35) following
'false' branch (when 'i == 4')...
| 168 | {
| 169 | arg[i] = p;
| | ~~~
| | |
| | (34) ...to here
|......
| 173 | printf (_(m->msgid), arg[0], arg[1],
arg[2], arg[3]);
| |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (36) ...to here
| | (37) use of uninitialized value
'arg[3]' here
|
util.c:173:7: error: use of uninitialized value 'arg[2]' [CWE-457]
[-Werror=analyzer-use-of-uninitialized-value]
173 | printf (_(m->msgid), arg[0], arg[1], arg[2], arg[3]);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'output_1_line': events 1-5
|
| 1364 | output_1_line (char const *base, char const *limit, char const
*flag_format,
| | ^~~~~~~~~~~~~
| | |
| | (1) entry to 'output_1_line'
|......
| 1368 | if (!expand_tabs)
| | ~
| | |
| | (2) following 'false' branch...
| 1369 | {
| 1370 | size_t left = limit - base;
| | ~~~~~~
| | |
| | (3) ...to here
| 1371 | while (left)
| | ~~~~
| | |
| | (4) following 'true' branch (when 'left != 0')...
| 1372 | {
| 1373 | size_t to_write = MIN (left, MAX_CHUNK);
| | ~~~~~~
| | |
| | (5) ...to here
|
'output_1_line': event 6
|
|../lib/unlocked-io.h:94:27:
| 94 | # define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z)
| | ^~~~~~~~~~~~~~~
| | |
| | (6) following 'true' branch...
util.c:1374:28: note: in expansion of macro 'fwrite'
| 1374 | size_t written = fwrite (base, sizeof (char), to_write,
outfile);
| | ^~~~~~
|
'output_1_line': event 7
|
|../lib/unlocked-io.h:94:27:
| 94 | # define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z)
| | ^~~~~~~~~~~~~~~
| | |
| | (7) ...to here
util.c:1374:28: note: in expansion of macro 'fwrite'
| 1374 | size_t written = fwrite (base, sizeof (char), to_write,
outfile);
| | ^~~~~~
|
'output_1_line': event 8
|
|../lib/unlocked-io.h:94:27:
| 94 | # define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z)
| | ^~~~~~~~~~~~~~~
| | |
| | (8) following 'false' branch (when
'__cnt == 0')...
util.c:1374:28: note: in expansion of macro 'fwrite'
| 1374 | size_t written = fwrite (base, sizeof (char), to_write,
outfile);
| | ^~~~~~
|
'output_1_line': event 9
|
|../lib/unlocked-io.h:94:27:
| 94 | # define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z)
| | ^~~~~~~~~~~~~~~
| | |
| | (9) ...to here
util.c:1374:28: note: in expansion of macro 'fwrite'
| 1374 | size_t written = fwrite (base, sizeof (char), to_write,
outfile);
| | ^~~~~~
|
'output_1_line': events 10-12
|
| 1375 | if (written < to_write)
| | ^
| | |
| | (10) following 'false' branch...
| 1376 | return;
| 1377 | base += written;
| | ~~~~
| | |
| | (11) ...to here
| 1378 | left -= written;
| 1379 | process_signals ();
| | ~~~~~~~~~~~~~~~~~~
| | |
| | (12) calling 'process_signals' from 'output_1_line'
|
+--> 'process_signals': events 13-16
|
| 260 | process_signals (void)
| | ^~~~~~~~~~~~~~~
| | |
| | (13) entry to 'process_signals'
| 261 | {
| 262 | while (interrupt_signal | stop_signal_count)
| | ~~~~~~~~~~~~~~~~
| | |
| | (14) following 'true' branch...
| 263 | {
| 264 | set_color_context (RESET_CONTEXT);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (15) ...to here
| | (16) calling 'set_color_context' from
'process_signals'
|
+--> 'set_color_context': events 17-19
|
| 1449 | set_color_context (enum color_context color_context)
| | ^~~~~~~~~~~~~~~~~
| | |
| | (17) entry to 'set_color_context'
| 1450 | {
| 1451 | if (color_context != RESET_CONTEXT)
| | ~
| | |
| | (18) following 'false' branch (when
'color_context == 3')...
| 1452 | process_signals ();
| 1453 | if (colors_enabled && last_context !=
color_context)
| | ~~
| | |
| | (19) ...to here
|
<------+
|
'process_signals': events 20-21
|
| 264 | set_color_context (RESET_CONTEXT);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (20) returning to 'process_signals' from
'set_color_context'
|......
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals, &oldset);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (21) calling 'xsigprocmask' from 'process_signals'
|
+--> 'xsigprocmask': events 22-24
|
| 212 | xsigprocmask (int how, sigset_t const *restrict set,
sigset_t *restrict oset)
| | ^~~~~~~~~~~~
| | |
| | (22) entry to 'xsigprocmask'
| 213 | {
| 214 | if (sigprocmask (how, set, oset) != 0)
| | ~
| | |
| | (23) following 'false' branch...
| 215 | pfatal_with_name ("sigprocmask");
| 216 | }
| | ~
| | |
| | (24) ...to here
|
<------+
|
'process_signals': events 25-26
|
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals, &oldset);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (25) returning to 'process_signals' from
'xsigprocmask'
|......
| 290 | pfatal_with_name ("raise");
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (26) calling 'pfatal_with_name' from
'process_signals'
|
+--> 'pfatal_with_name': events 27-28
|
| 87 | pfatal_with_name (char const *name)
| | ^~~~~~~~~~~~~~~~
| | |
| | (27) entry to 'pfatal_with_name'
|......
| 90 | print_message_queue ();
| | ~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (28) calling 'print_message_queue' from
'pfatal_with_name'
|
+--> 'print_message_queue': events 29-37
|
| 159 | print_message_queue (void)
| | ^~~~~~~~~~~~~~~~~~~
| | |
| | (29) entry to 'print_message_queue'
| 160 | {
| 161 | for (struct msg *m = msg_chain; m; )
| | ~
| | |
| | (31)
following 'true' branch (when 'm' is non-NULL)...
|......
| 164 | char const *p = m->args;
| | ~~~~
| | |
| | (32) ...to here
| 165 | char const *plim = p + m->argbytes;
| 166 | char const *arg[4];
| | ~~~
| | |
| | (30) region created on
stack here
| 167 | for (int i = 0; i < 4; i++)
| | ~~~~~
| | |
| | (33) following 'true'
branch (when 'i != 4')...
| | (35) following
'false' branch (when 'i == 4')...
| 168 | {
| 169 | arg[i] = p;
| | ~~~
| | |
| | (34) ...to here
|......
| 173 | printf (_(m->msgid), arg[0], arg[1],
arg[2], arg[3]);
| |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (36) ...to here
| | (37) use of uninitialized value
'arg[2]' here
|
util.c:173:7: error: use of uninitialized value 'arg[2]' [CWE-457]
[-Werror=analyzer-use-of-uninitialized-value]
173 | printf (_(m->msgid), arg[0], arg[1], arg[2], arg[3]);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'output_1_line': events 1-5
|
| 1364 | output_1_line (char const *base, char const *limit, char const
*flag_format,
| | ^~~~~~~~~~~~~
| | |
| | (1) entry to 'output_1_line'
|......
| 1368 | if (!expand_tabs)
| | ~
| | |
| | (2) following 'false' branch...
| 1369 | {
| 1370 | size_t left = limit - base;
| | ~~~~~~
| | |
| | (3) ...to here
| 1371 | while (left)
| | ~~~~
| | |
| | (4) following 'true' branch (when 'left != 0')...
| 1372 | {
| 1373 | size_t to_write = MIN (left, MAX_CHUNK);
| | ~~~~~~
| | |
| | (5) ...to here
|
'output_1_line': event 6
|
|../lib/unlocked-io.h:94:27:
| 94 | # define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z)
| | ^~~~~~~~~~~~~~~
| | |
| | (6) following 'true' branch...
util.c:1374:28: note: in expansion of macro 'fwrite'
| 1374 | size_t written = fwrite (base, sizeof (char), to_write,
outfile);
| | ^~~~~~
|
'output_1_line': event 7
|
|../lib/unlocked-io.h:94:27:
| 94 | # define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z)
| | ^~~~~~~~~~~~~~~
| | |
| | (7) ...to here
util.c:1374:28: note: in expansion of macro 'fwrite'
| 1374 | size_t written = fwrite (base, sizeof (char), to_write,
outfile);
| | ^~~~~~
|
'output_1_line': event 8
|
|../lib/unlocked-io.h:94:27:
| 94 | # define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z)
| | ^~~~~~~~~~~~~~~
| | |
| | (8) following 'false' branch (when
'__cnt == 0')...
util.c:1374:28: note: in expansion of macro 'fwrite'
| 1374 | size_t written = fwrite (base, sizeof (char), to_write,
outfile);
| | ^~~~~~
|
'output_1_line': event 9
|
|../lib/unlocked-io.h:94:27:
| 94 | # define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z)
| | ^~~~~~~~~~~~~~~
| | |
| | (9) ...to here
util.c:1374:28: note: in expansion of macro 'fwrite'
| 1374 | size_t written = fwrite (base, sizeof (char), to_write,
outfile);
| | ^~~~~~
|
'output_1_line': events 10-12
|
| 1375 | if (written < to_write)
| | ^
| | |
| | (10) following 'false' branch...
| 1376 | return;
| 1377 | base += written;
| | ~~~~
| | |
| | (11) ...to here
| 1378 | left -= written;
| 1379 | process_signals ();
| | ~~~~~~~~~~~~~~~~~~
| | |
| | (12) calling 'process_signals' from 'output_1_line'
|
+--> 'process_signals': events 13-16
|
| 260 | process_signals (void)
| | ^~~~~~~~~~~~~~~
| | |
| | (13) entry to 'process_signals'
| 261 | {
| 262 | while (interrupt_signal | stop_signal_count)
| | ~~~~~~~~~~~~~~~~
| | |
| | (14) following 'true' branch...
| 263 | {
| 264 | set_color_context (RESET_CONTEXT);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (15) ...to here
| | (16) calling 'set_color_context' from
'process_signals'
|
+--> 'set_color_context': events 17-19
|
| 1449 | set_color_context (enum color_context color_context)
| | ^~~~~~~~~~~~~~~~~
| | |
| | (17) entry to 'set_color_context'
| 1450 | {
| 1451 | if (color_context != RESET_CONTEXT)
| | ~
| | |
| | (18) following 'false' branch (when
'color_context == 3')...
| 1452 | process_signals ();
| 1453 | if (colors_enabled && last_context !=
color_context)
| | ~~
| | |
| | (19) ...to here
|
<------+
|
'process_signals': events 20-21
|
| 264 | set_color_context (RESET_CONTEXT);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (20) returning to 'process_signals' from
'set_color_context'
|......
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals, &oldset);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (21) calling 'xsigprocmask' from 'process_signals'
|
+--> 'xsigprocmask': events 22-24
|
| 212 | xsigprocmask (int how, sigset_t const *restrict set,
sigset_t *restrict oset)
| | ^~~~~~~~~~~~
| | |
| | (22) entry to 'xsigprocmask'
| 213 | {
| 214 | if (sigprocmask (how, set, oset) != 0)
| | ~
| | |
| | (23) following 'false' branch...
| 215 | pfatal_with_name ("sigprocmask");
| 216 | }
| | ~
| | |
| | (24) ...to here
|
<------+
|
'process_signals': events 25-28
|
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals, &oldset);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (25) returning to 'process_signals' from
'xsigprocmask'
|......
| 289 | if (raise (sig) != 0)
| | ~
| | |
| | (26) following 'false' branch...
| 290 | pfatal_with_name ("raise");
| 291 | xsigprocmask (SIG_SETMASK, &oldset, NULL);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (27) ...to here
| | (28) calling 'xsigprocmask' from 'process_signals'
|
+--> 'xsigprocmask': event 29
|
| 212 | xsigprocmask (int how, sigset_t const *restrict set,
sigset_t *restrict oset)
| | ^~~~~~~~~~~~
| | |
| | (29) entry to 'xsigprocmask'
|
'xsigprocmask': event 30
|
|cc1:
| (30): calling 'xsigprocmask.part.0' from 'xsigprocmask'
|
+--> 'xsigprocmask.part.0': events 31-32
|
| 212 | xsigprocmask (int how, sigset_t const
*restrict set, sigset_t *restrict oset)
| | ^~~~~~~~~~~~
| | |
| | (31) entry to 'xsigprocmask.part.0'
|......
| 215 | pfatal_with_name ("sigprocmask");
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (32) calling 'pfatal_with_name' from
'xsigprocmask.part.0'
|
+--> 'pfatal_with_name': events 33-34
|
| 87 | pfatal_with_name (char const *name)
| | ^~~~~~~~~~~~~~~~
| | |
| | (33) entry to 'pfatal_with_name'
|......
| 90 | print_message_queue ();
| | ~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (34) calling 'print_message_queue'
from 'pfatal_with_name'
|
+--> 'print_message_queue': events 35-43
|
| 159 | print_message_queue (void)
| | ^~~~~~~~~~~~~~~~~~~
| | |
| | (35) entry to
'print_message_queue'
| 160 | {
| 161 | for (struct msg *m =
msg_chain; m; )
| |
~
| |
|
| |
(37) following 'true' branch (when 'm' is non-NULL)...
|......
| 164 | char const *p = m->args;
| | ~~~~
| | |
| | (38) ...to here
| 165 | char const *plim = p +
m->argbytes;
| 166 | char const *arg[4];
| | ~~~
| | |
| | (36) region
created on stack here
| 167 | for (int i = 0; i < 4;
i++)
| | ~~~~~
| | |
| | (39)
following 'true' branch (when 'i != 4')...
| | (41)
following 'false' branch (when 'i == 4')...
| 168 | {
| 169 | arg[i] = p;
| | ~~~
| | |
| | (40) ...to here
|......
| 173 | printf (_(m->msgid),
arg[0], arg[1], arg[2], arg[3]);
| |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (42) ...to here
| | (43) use of uninitialized
value 'arg[2]' here
|
util.c:173:7: error: use of uninitialized value 'arg[1]' [CWE-457]
[-Werror=analyzer-use-of-uninitialized-value]
173 | printf (_(m->msgid), arg[0], arg[1], arg[2], arg[3]);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'output_1_line': events 1-5
|
| 1364 | output_1_line (char const *base, char const *limit, char const
*flag_format,
| | ^~~~~~~~~~~~~
| | |
| | (1) entry to 'output_1_line'
|......
| 1368 | if (!expand_tabs)
| | ~
| | |
| | (2) following 'false' branch...
| 1369 | {
| 1370 | size_t left = limit - base;
| | ~~~~~~
| | |
| | (3) ...to here
| 1371 | while (left)
| | ~~~~
| | |
| | (4) following 'true' branch (when 'left != 0')...
| 1372 | {
| 1373 | size_t to_write = MIN (left, MAX_CHUNK);
| | ~~~~~~
| | |
| | (5) ...to here
|
'output_1_line': event 6
|
|../lib/unlocked-io.h:94:27:
| 94 | # define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z)
| | ^~~~~~~~~~~~~~~
| | |
| | (6) following 'true' branch...
util.c:1374:28: note: in expansion of macro 'fwrite'
| 1374 | size_t written = fwrite (base, sizeof (char), to_write,
outfile);
| | ^~~~~~
|
'output_1_line': event 7
|
|../lib/unlocked-io.h:94:27:
| 94 | # define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z)
| | ^~~~~~~~~~~~~~~
| | |
| | (7) ...to here
util.c:1374:28: note: in expansion of macro 'fwrite'
| 1374 | size_t written = fwrite (base, sizeof (char), to_write,
outfile);
| | ^~~~~~
|
'output_1_line': event 8
|
|../lib/unlocked-io.h:94:27:
| 94 | # define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z)
| | ^~~~~~~~~~~~~~~
| | |
| | (8) following 'false' branch (when
'__cnt == 0')...
util.c:1374:28: note: in expansion of macro 'fwrite'
| 1374 | size_t written = fwrite (base, sizeof (char), to_write,
outfile);
| | ^~~~~~
|
'output_1_line': event 9
|
|../lib/unlocked-io.h:94:27:
| 94 | # define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z)
| | ^~~~~~~~~~~~~~~
| | |
| | (9) ...to here
util.c:1374:28: note: in expansion of macro 'fwrite'
| 1374 | size_t written = fwrite (base, sizeof (char), to_write,
outfile);
| | ^~~~~~
|
'output_1_line': events 10-12
|
| 1375 | if (written < to_write)
| | ^
| | |
| | (10) following 'false' branch...
| 1376 | return;
| 1377 | base += written;
| | ~~~~
| | |
| | (11) ...to here
| 1378 | left -= written;
| 1379 | process_signals ();
| | ~~~~~~~~~~~~~~~~~~
| | |
| | (12) calling 'process_signals' from 'output_1_line'
|
+--> 'process_signals': events 13-16
|
| 260 | process_signals (void)
| | ^~~~~~~~~~~~~~~
| | |
| | (13) entry to 'process_signals'
| 261 | {
| 262 | while (interrupt_signal | stop_signal_count)
| | ~~~~~~~~~~~~~~~~
| | |
| | (14) following 'true' branch...
| 263 | {
| 264 | set_color_context (RESET_CONTEXT);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (15) ...to here
| | (16) calling 'set_color_context' from
'process_signals'
|
+--> 'set_color_context': events 17-19
|
| 1449 | set_color_context (enum color_context color_context)
| | ^~~~~~~~~~~~~~~~~
| | |
| | (17) entry to 'set_color_context'
| 1450 | {
| 1451 | if (color_context != RESET_CONTEXT)
| | ~
| | |
| | (18) following 'false' branch (when
'color_context == 3')...
| 1452 | process_signals ();
| 1453 | if (colors_enabled && last_context !=
color_context)
| | ~~
| | |
| | (19) ...to here
|
<------+
|
'process_signals': events 20-21
|
| 264 | set_color_context (RESET_CONTEXT);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (20) returning to 'process_signals' from
'set_color_context'
|......
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals, &oldset);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (21) calling 'xsigprocmask' from 'process_signals'
|
+--> 'xsigprocmask': events 22-24
|
| 212 | xsigprocmask (int how, sigset_t const *restrict set,
sigset_t *restrict oset)
| | ^~~~~~~~~~~~
| | |
| | (22) entry to 'xsigprocmask'
| 213 | {
| 214 | if (sigprocmask (how, set, oset) != 0)
| | ~
| | |
| | (23) following 'false' branch...
| 215 | pfatal_with_name ("sigprocmask");
| 216 | }
| | ~
| | |
| | (24) ...to here
|
<------+
|
'process_signals': events 25-28
|
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals, &oldset);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (25) returning to 'process_signals' from
'xsigprocmask'
|......
| 289 | if (raise (sig) != 0)
| | ~
| | |
| | (26) following 'false' branch...
| 290 | pfatal_with_name ("raise");
| 291 | xsigprocmask (SIG_SETMASK, &oldset, NULL);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (27) ...to here
| | (28) calling 'xsigprocmask' from 'process_signals'
|
+--> 'xsigprocmask': event 29
|
| 212 | xsigprocmask (int how, sigset_t const *restrict set,
sigset_t *restrict oset)
| | ^~~~~~~~~~~~
| | |
| | (29) entry to 'xsigprocmask'
|
'xsigprocmask': event 30
|
|cc1:
| (30): calling 'xsigprocmask.part.0' from 'xsigprocmask'
|
+--> 'xsigprocmask.part.0': events 31-32
|
| 212 | xsigprocmask (int how, sigset_t const
*restrict set, sigset_t *restrict oset)
| | ^~~~~~~~~~~~
| | |
| | (31) entry to 'xsigprocmask.part.0'
|......
| 215 | pfatal_with_name ("sigprocmask");
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (32) calling 'pfatal_with_name' from
'xsigprocmask.part.0'
|
+--> 'pfatal_with_name': events 33-34
|
| 87 | pfatal_with_name (char const *name)
| | ^~~~~~~~~~~~~~~~
| | |
| | (33) entry to 'pfatal_with_name'
|......
| 90 | print_message_queue ();
| | ~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (34) calling 'print_message_queue'
from 'pfatal_with_name'
|
+--> 'print_message_queue': events 35-43
|
| 159 | print_message_queue (void)
| | ^~~~~~~~~~~~~~~~~~~
| | |
| | (35) entry to
'print_message_queue'
| 160 | {
| 161 | for (struct msg *m =
msg_chain; m; )
| |
~
| |
|
| |
(37) following 'true' branch (when 'm' is non-NULL)...
|......
| 164 | char const *p = m->args;
| | ~~~~
| | |
| | (38) ...to here
| 165 | char const *plim = p +
m->argbytes;
| 166 | char const *arg[4];
| | ~~~
| | |
| | (36) region
created on stack here
| 167 | for (int i = 0; i < 4;
i++)
| | ~~~~~
| | |
| | (39)
following 'true' branch (when 'i != 4')...
| | (41)
following 'false' branch (when 'i == 4')...
| 168 | {
| 169 | arg[i] = p;
| | ~~~
| | |
| | (40) ...to here
|......
| 173 | printf (_(m->msgid),
arg[0], arg[1], arg[2], arg[3]);
| |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (42) ...to here
| | (43) use of uninitialized
value 'arg[1]' here
|
util.c:173:7: error: use of uninitialized value 'arg[3]' [CWE-457]
[-Werror=analyzer-use-of-uninitialized-value]
173 | printf (_(m->msgid), arg[0], arg[1], arg[2], arg[3]);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'output_1_line': events 1-5
|
| 1364 | output_1_line (char const *base, char const *limit, char const
*flag_format,
| | ^~~~~~~~~~~~~
| | |
| | (1) entry to 'output_1_line'
|......
| 1368 | if (!expand_tabs)
| | ~
| | |
| | (2) following 'false' branch...
| 1369 | {
| 1370 | size_t left = limit - base;
| | ~~~~~~
| | |
| | (3) ...to here
| 1371 | while (left)
| | ~~~~
| | |
| | (4) following 'true' branch (when 'left != 0')...
| 1372 | {
| 1373 | size_t to_write = MIN (left, MAX_CHUNK);
| | ~~~~~~
| | |
| | (5) ...to here
|
'output_1_line': event 6
|
|../lib/unlocked-io.h:94:27:
| 94 | # define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z)
| | ^~~~~~~~~~~~~~~
| | |
| | (6) following 'true' branch...
util.c:1374:28: note: in expansion of macro 'fwrite'
| 1374 | size_t written = fwrite (base, sizeof (char), to_write,
outfile);
| | ^~~~~~
|
'output_1_line': event 7
|
|../lib/unlocked-io.h:94:27:
| 94 | # define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z)
| | ^~~~~~~~~~~~~~~
| | |
| | (7) ...to here
util.c:1374:28: note: in expansion of macro 'fwrite'
| 1374 | size_t written = fwrite (base, sizeof (char), to_write,
outfile);
| | ^~~~~~
|
'output_1_line': event 8
|
|../lib/unlocked-io.h:94:27:
| 94 | # define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z)
| | ^~~~~~~~~~~~~~~
| | |
| | (8) following 'false' branch (when
'__cnt == 0')...
util.c:1374:28: note: in expansion of macro 'fwrite'
| 1374 | size_t written = fwrite (base, sizeof (char), to_write,
outfile);
| | ^~~~~~
|
'output_1_line': event 9
|
|../lib/unlocked-io.h:94:27:
| 94 | # define fwrite(w,x,y,z) fwrite_unlocked (w,x,y,z)
| | ^~~~~~~~~~~~~~~
| | |
| | (9) ...to here
util.c:1374:28: note: in expansion of macro 'fwrite'
| 1374 | size_t written = fwrite (base, sizeof (char), to_write,
outfile);
| | ^~~~~~
|
'output_1_line': events 10-12
|
| 1375 | if (written < to_write)
| | ^
| | |
| | (10) following 'false' branch...
| 1376 | return;
| 1377 | base += written;
| | ~~~~
| | |
| | (11) ...to here
| 1378 | left -= written;
| 1379 | process_signals ();
| | ~~~~~~~~~~~~~~~~~~
| | |
| | (12) calling 'process_signals' from 'output_1_line'
|
+--> 'process_signals': events 13-16
|
| 260 | process_signals (void)
| | ^~~~~~~~~~~~~~~
| | |
| | (13) entry to 'process_signals'
| 261 | {
| 262 | while (interrupt_signal | stop_signal_count)
| | ~~~~~~~~~~~~~~~~
| | |
| | (14) following 'true' branch...
| 263 | {
| 264 | set_color_context (RESET_CONTEXT);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (15) ...to here
| | (16) calling 'set_color_context' from
'process_signals'
|
+--> 'set_color_context': events 17-19
|
| 1449 | set_color_context (enum color_context color_context)
| | ^~~~~~~~~~~~~~~~~
| | |
| | (17) entry to 'set_color_context'
| 1450 | {
| 1451 | if (color_context != RESET_CONTEXT)
| | ~
| | |
| | (18) following 'false' branch (when
'color_context == 3')...
| 1452 | process_signals ();
| 1453 | if (colors_enabled && last_context !=
color_context)
| | ~~
| | |
| | (19) ...to here
|
<------+
|
'process_signals': events 20-21
|
| 264 | set_color_context (RESET_CONTEXT);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (20) returning to 'process_signals' from
'set_color_context'
|......
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals, &oldset);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (21) calling 'xsigprocmask' from 'process_signals'
|
+--> 'xsigprocmask': events 22-24
|
| 212 | xsigprocmask (int how, sigset_t const *restrict set,
sigset_t *restrict oset)
| | ^~~~~~~~~~~~
| | |
| | (22) entry to 'xsigprocmask'
| 213 | {
| 214 | if (sigprocmask (how, set, oset) != 0)
| | ~
| | |
| | (23) following 'false' branch...
| 215 | pfatal_with_name ("sigprocmask");
| 216 | }
| | ~
| | |
| | (24) ...to here
|
<------+
|
'process_signals': events 25-28
|
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals, &oldset);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (25) returning to 'process_signals' from
'xsigprocmask'
|......
| 289 | if (raise (sig) != 0)
| | ~
| | |
| | (26) following 'false' branch...
| 290 | pfatal_with_name ("raise");
| 291 | xsigprocmask (SIG_SETMASK, &oldset, NULL);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (27) ...to here
| | (28) calling 'xsigprocmask' from 'process_signals'
|
+--> 'xsigprocmask': event 29
|
| 212 | xsigprocmask (int how, sigset_t const *restrict set,
sigset_t *restrict oset)
| | ^~~~~~~~~~~~
| | |
| | (29) entry to 'xsigprocmask'
|
'xsigprocmask': event 30
|
|cc1:
| (30): calling 'xsigprocmask.part.0' from 'xsigprocmask'
|
+--> 'xsigprocmask.part.0': events 31-32
|
| 212 | xsigprocmask (int how, sigset_t const
*restrict set, sigset_t *restrict oset)
| | ^~~~~~~~~~~~
| | |
| | (31) entry to 'xsigprocmask.part.0'
|......
| 215 | pfatal_with_name ("sigprocmask");
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (32) calling 'pfatal_with_name' from
'xsigprocmask.part.0'
|
+--> 'pfatal_with_name': events 33-34
|
| 87 | pfatal_with_name (char const *name)
| | ^~~~~~~~~~~~~~~~
| | |
| | (33) entry to 'pfatal_with_name'
|......
| 90 | print_message_queue ();
| | ~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (34) calling 'print_message_queue'
from 'pfatal_with_name'
|
+--> 'print_message_queue': events 35-43
|
| 159 | print_message_queue (void)
| | ^~~~~~~~~~~~~~~~~~~
| | |
| | (35) entry to
'print_message_queue'
| 160 | {
| 161 | for (struct msg *m =
msg_chain; m; )
| |
~
| |
|
| |
(37) following 'true' branch (when 'm' is non-NULL)...
|......
| 164 | char const *p = m->args;
| | ~~~~
| | |
| | (38) ...to here
| 165 | char const *plim = p +
m->argbytes;
| 166 | char const *arg[4];
| | ~~~
| | |
| | (36) region
created on stack here
| 167 | for (int i = 0; i < 4;
i++)
| | ~~~~~
| | |
| | (39)
following 'true' branch (when 'i != 4')...
| | (41)
following 'false' branch (when 'i == 4')...
| 168 | {
| 169 | arg[i] = p;
| | ~~~
| | |
| | (40) ...to here
|......
| 173 | printf (_(m->msgid),
arg[0], arg[1], arg[2], arg[3]);
| |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (42) ...to here
| | (43) use of uninitialized
value 'arg[3]' here
|
util.c:173:7: error: use of uninitialized value 'arg[1]' [CWE-457]
[-Werror=analyzer-use-of-uninitialized-value]
173 | printf (_(m->msgid), arg[0], arg[1], arg[2], arg[3]);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'output_1_line': events 1-12
|
| 1364 | output_1_line (char const *base, char const *limit, char const
*flag_format,
| | ^~~~~~~~~~~~~
| | |
| | (1) entry to 'output_1_line'
|......
| 1368 | if (!expand_tabs)
| | ~
| | |
| | (2) following 'false' branch...
| 1369 | {
| 1370 | size_t left = limit - base;
| | ~~~~~~
| | |
| | (3) ...to here
| 1371 | while (left)
| | ~~~~
| | |
| | (4) following 'true' branch (when 'left != 0')...
| | (8) following 'true' branch (when 'left != 0')...
| 1372 | {
| 1373 | size_t to_write = MIN (left, MAX_CHUNK);
| | ~~~~~~
| | |
| | (5) ...to here
| | (9) ...to here
| 1374 | size_t written = fwrite (base, sizeof (char), to_write,
outfile);
| 1375 | if (written < to_write)
| | ~
| | |
| | (6) following 'false' branch...
| | (10) following 'false' branch...
| 1376 | return;
| 1377 | base += written;
| | ~~~~
| | |
| | (7) ...to here
| | (11) ...to here
| 1378 | left -= written;
| 1379 | process_signals ();
| | ~~~~~~~~~~~~~~~~~~
| | |
| | (12) calling 'process_signals' from 'output_1_line'
|
+--> 'process_signals': events 13-14
|
| 260 | process_signals (void)
| | ^~~~~~~~~~~~~~~
| | |
| | (13) entry to 'process_signals'
|......
| 264 | set_color_context (RESET_CONTEXT);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (14) calling 'set_color_context' from
'process_signals'
|
+--> 'set_color_context': events 15-17
|
| 1449 | set_color_context (enum color_context color_context)
| | ^~~~~~~~~~~~~~~~~
| | |
| | (15) entry to 'set_color_context'
| 1450 | {
| 1451 | if (color_context != RESET_CONTEXT)
| | ~
| | |
| | (16) following 'false' branch (when
'color_context == 3')...
| 1452 | process_signals ();
| 1453 | if (colors_enabled && last_context !=
color_context)
| | ~~
| | |
| | (17) ...to here
|
<------+
|
'process_signals': events 18-19
|
| 264 | set_color_context (RESET_CONTEXT);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (18) returning to 'process_signals' from
'set_color_context'
|......
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals, &oldset);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (19) calling 'xsigprocmask' from 'process_signals'
|
+--> 'xsigprocmask': events 20-22
|
| 212 | xsigprocmask (int how, sigset_t const *restrict set,
sigset_t *restrict oset)
| | ^~~~~~~~~~~~
| | |
| | (20) entry to 'xsigprocmask'
| 213 | {
| 214 | if (sigprocmask (how, set, oset) != 0)
| | ~
| | |
| | (21) following 'false' branch...
| 215 | pfatal_with_name ("sigprocmask");
| 216 | }
| | ~
| | |
| | (22) ...to here
|
<------+
|
'process_signals': events 23-24
|
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals, &oldset);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (23) returning to 'process_signals' from
'xsigprocmask'
|......
| 285 | xsignal (sig, SIG_DFL);
| | ~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (24) calling 'xsignal' from 'process_signals'
|
+--> 'xsignal': events 25-26
|
| 203 | xsignal (int sig, signal_handler func)
| | ^~~~~~~
| | |
| | (25) entry to 'xsignal'
|......
| 207 | pfatal_with_name ("signal");
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (26) calling 'pfatal_with_name' from 'xsignal'
|
+--> 'pfatal_with_name': events 27-28
|
| 87 | pfatal_with_name (char const *name)
| | ^~~~~~~~~~~~~~~~
| | |
| | (27) entry to 'pfatal_with_name'
|......
| 90 | print_message_queue ();
| | ~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (28) calling 'print_message_queue' from
'pfatal_with_name'
|
+--> 'print_message_queue': events 29-37
|
| 159 | print_message_queue (void)
| | ^~~~~~~~~~~~~~~~~~~
| | |
| | (29) entry to 'print_message_queue'
| 160 | {
| 161 | for (struct msg *m = msg_chain; m; )
| | ~
| | |
| | (31)
following 'true' branch (when 'm' is non-NULL)...
|......
| 164 | char const *p = m->args;
| | ~~~~
| | |
| | (32) ...to here
| 165 | char const *plim = p +
m->argbytes;
| 166 | char const *arg[4];
| | ~~~
| | |
| | (30) region created
on stack here
| 167 | for (int i = 0; i < 4; i++)
| | ~~~~~
| | |
| | (33) following
'true' branch (when 'i != 4')...
| | (35) following
'false' branch (when 'i == 4')...
| 168 | {
| 169 | arg[i] = p;
| | ~~~
| | |
| | (34) ...to here
|......
| 173 | printf (_(m->msgid), arg[0],
arg[1], arg[2], arg[3]);
| |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (36) ...to here
| | (37) use of uninitialized value
'arg[1]' here
|
util.c:173:7: error: use of uninitialized value 'arg[2]' [CWE-457]
[-Werror=analyzer-use-of-uninitialized-value]
173 | printf (_(m->msgid), arg[0], arg[1], arg[2], arg[3]);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'output_1_line': events 1-12
|
| 1364 | output_1_line (char const *base, char const *limit, char const
*flag_format,
| | ^~~~~~~~~~~~~
| | |
| | (1) entry to 'output_1_line'
|......
| 1368 | if (!expand_tabs)
| | ~
| | |
| | (2) following 'false' branch...
| 1369 | {
| 1370 | size_t left = limit - base;
| | ~~~~~~
| | |
| | (3) ...to here
| 1371 | while (left)
| | ~~~~
| | |
| | (4) following 'true' branch (when 'left != 0')...
| | (8) following 'true' branch (when 'left != 0')...
| 1372 | {
| 1373 | size_t to_write = MIN (left, MAX_CHUNK);
| | ~~~~~~
| | |
| | (5) ...to here
| | (9) ...to here
| 1374 | size_t written = fwrite (base, sizeof (char), to_write,
outfile);
| 1375 | if (written < to_write)
| | ~
| | |
| | (6) following 'false' branch...
| | (10) following 'false' branch...
| 1376 | return;
| 1377 | base += written;
| | ~~~~
| | |
| | (7) ...to here
| | (11) ...to here
| 1378 | left -= written;
| 1379 | process_signals ();
| | ~~~~~~~~~~~~~~~~~~
| | |
| | (12) calling 'process_signals' from 'output_1_line'
|
+--> 'process_signals': events 13-14
|
| 260 | process_signals (void)
| | ^~~~~~~~~~~~~~~
| | |
| | (13) entry to 'process_signals'
|......
| 264 | set_color_context (RESET_CONTEXT);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (14) calling 'set_color_context' from
'process_signals'
|
+--> 'set_color_context': events 15-17
|
| 1449 | set_color_context (enum color_context color_context)
| | ^~~~~~~~~~~~~~~~~
| | |
| | (15) entry to 'set_color_context'
| 1450 | {
| 1451 | if (color_context != RESET_CONTEXT)
| | ~
| | |
| | (16) following 'false' branch (when
'color_context == 3')...
| 1452 | process_signals ();
| 1453 | if (colors_enabled && last_context !=
color_context)
| | ~~
| | |
| | (17) ...to here
|
<------+
|
'process_signals': events 18-19
|
| 264 | set_color_context (RESET_CONTEXT);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (18) returning to 'process_signals' from
'set_color_context'
|......
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals, &oldset);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (19) calling 'xsigprocmask' from 'process_signals'
|
+--> 'xsigprocmask': events 20-22
|
| 212 | xsigprocmask (int how, sigset_t const *restrict set,
sigset_t *restrict oset)
| | ^~~~~~~~~~~~
| | |
| | (20) entry to 'xsigprocmask'
| 213 | {
| 214 | if (sigprocmask (how, set, oset) != 0)
| | ~
| | |
| | (21) following 'false' branch...
| 215 | pfatal_with_name ("sigprocmask");
| 216 | }
| | ~
| | |
| | (22) ...to here
|
<------+
|
'process_signals': events 23-24
|
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals, &oldset);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (23) returning to 'process_signals' from
'xsigprocmask'
|......
| 285 | xsignal (sig, SIG_DFL);
| | ~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (24) calling 'xsignal' from 'process_signals'
|
+--> 'xsignal': events 25-26
|
| 203 | xsignal (int sig, signal_handler func)
| | ^~~~~~~
| | |
| | (25) entry to 'xsignal'
|......
| 207 | pfatal_with_name ("signal");
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (26) calling 'pfatal_with_name' from 'xsignal'
|
+--> 'pfatal_with_name': events 27-28
|
| 87 | pfatal_with_name (char const *name)
| | ^~~~~~~~~~~~~~~~
| | |
| | (27) entry to 'pfatal_with_name'
|......
| 90 | print_message_queue ();
| | ~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (28) calling 'print_message_queue' from
'pfatal_with_name'
|
+--> 'print_message_queue': events 29-37
|
| 159 | print_message_queue (void)
| | ^~~~~~~~~~~~~~~~~~~
| | |
| | (29) entry to 'print_message_queue'
| 160 | {
| 161 | for (struct msg *m = msg_chain; m; )
| | ~
| | |
| | (31)
following 'true' branch (when 'm' is non-NULL)...
|......
| 164 | char const *p = m->args;
| | ~~~~
| | |
| | (32) ...to here
| 165 | char const *plim = p +
m->argbytes;
| 166 | char const *arg[4];
| | ~~~
| | |
| | (30) region created
on stack here
| 167 | for (int i = 0; i < 4; i++)
| | ~~~~~
| | |
| | (33) following
'true' branch (when 'i != 4')...
| | (35) following
'false' branch (when 'i == 4')...
| 168 | {
| 169 | arg[i] = p;
| | ~~~
| | |
| | (34) ...to here
|......
| 173 | printf (_(m->msgid), arg[0],
arg[1], arg[2], arg[3]);
| |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (36) ...to here
| | (37) use of uninitialized value
'arg[2]' here
|
util.c:173:7: error: use of uninitialized value 'arg[3]' [CWE-457]
[-Werror=analyzer-use-of-uninitialized-value]
173 | printf (_(m->msgid), arg[0], arg[1], arg[2], arg[3]);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'output_1_line': events 1-12
|
| 1364 | output_1_line (char const *base, char const *limit, char const
*flag_format,
| | ^~~~~~~~~~~~~
| | |
| | (1) entry to 'output_1_line'
|......
| 1368 | if (!expand_tabs)
| | ~
| | |
| | (2) following 'false' branch...
| 1369 | {
| 1370 | size_t left = limit - base;
| | ~~~~~~
| | |
| | (3) ...to here
| 1371 | while (left)
| | ~~~~
| | |
| | (4) following 'true' branch (when 'left != 0')...
| | (8) following 'true' branch (when 'left != 0')...
| 1372 | {
| 1373 | size_t to_write = MIN (left, MAX_CHUNK);
| | ~~~~~~
| | |
| | (5) ...to here
| | (9) ...to here
| 1374 | size_t written = fwrite (base, sizeof (char), to_write,
outfile);
| 1375 | if (written < to_write)
| | ~
| | |
| | (6) following 'false' branch...
| | (10) following 'false' branch...
| 1376 | return;
| 1377 | base += written;
| | ~~~~
| | |
| | (7) ...to here
| | (11) ...to here
| 1378 | left -= written;
| 1379 | process_signals ();
| | ~~~~~~~~~~~~~~~~~~
| | |
| | (12) calling 'process_signals' from 'output_1_line'
|
+--> 'process_signals': events 13-14
|
| 260 | process_signals (void)
| | ^~~~~~~~~~~~~~~
| | |
| | (13) entry to 'process_signals'
|......
| 264 | set_color_context (RESET_CONTEXT);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (14) calling 'set_color_context' from
'process_signals'
|
+--> 'set_color_context': events 15-17
|
| 1449 | set_color_context (enum color_context color_context)
| | ^~~~~~~~~~~~~~~~~
| | |
| | (15) entry to 'set_color_context'
| 1450 | {
| 1451 | if (color_context != RESET_CONTEXT)
| | ~
| | |
| | (16) following 'false' branch (when
'color_context == 3')...
| 1452 | process_signals ();
| 1453 | if (colors_enabled && last_context !=
color_context)
| | ~~
| | |
| | (17) ...to here
|
<------+
|
'process_signals': events 18-19
|
| 264 | set_color_context (RESET_CONTEXT);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (18) returning to 'process_signals' from
'set_color_context'
|......
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals, &oldset);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (19) calling 'xsigprocmask' from 'process_signals'
|
+--> 'xsigprocmask': events 20-22
|
| 212 | xsigprocmask (int how, sigset_t const *restrict set,
sigset_t *restrict oset)
| | ^~~~~~~~~~~~
| | |
| | (20) entry to 'xsigprocmask'
| 213 | {
| 214 | if (sigprocmask (how, set, oset) != 0)
| | ~
| | |
| | (21) following 'false' branch...
| 215 | pfatal_with_name ("sigprocmask");
| 216 | }
| | ~
| | |
| | (22) ...to here
|
<------+
|
'process_signals': events 23-24
|
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals, &oldset);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (23) returning to 'process_signals' from
'xsigprocmask'
|......
| 285 | xsignal (sig, SIG_DFL);
| | ~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (24) calling 'xsignal' from 'process_signals'
|
+--> 'xsignal': events 25-26
|
| 203 | xsignal (int sig, signal_handler func)
| | ^~~~~~~
| | |
| | (25) entry to 'xsignal'
|......
| 207 | pfatal_with_name ("signal");
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (26) calling 'pfatal_with_name' from 'xsignal'
|
+--> 'pfatal_with_name': events 27-28
|
| 87 | pfatal_with_name (char const *name)
| | ^~~~~~~~~~~~~~~~
| | |
| | (27) entry to 'pfatal_with_name'
|......
| 90 | print_message_queue ();
| | ~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (28) calling 'print_message_queue' from
'pfatal_with_name'
|
+--> 'print_message_queue': events 29-37
|
| 159 | print_message_queue (void)
| | ^~~~~~~~~~~~~~~~~~~
| | |
| | (29) entry to 'print_message_queue'
| 160 | {
| 161 | for (struct msg *m = msg_chain; m; )
| | ~
| | |
| | (31)
following 'true' branch (when 'm' is non-NULL)...
|......
| 164 | char const *p = m->args;
| | ~~~~
| | |
| | (32) ...to here
| 165 | char const *plim = p +
m->argbytes;
| 166 | char const *arg[4];
| | ~~~
| | |
| | (30) region created
on stack here
| 167 | for (int i = 0; i < 4; i++)
| | ~~~~~
| | |
| | (33) following
'true' branch (when 'i != 4')...
| | (35) following
'false' branch (when 'i == 4')...
| 168 | {
| 169 | arg[i] = p;
| | ~~~
| | |
| | (34) ...to here
|......
| 173 | printf (_(m->msgid), arg[0],
arg[1], arg[2], arg[3]);
| |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (36) ...to here
| | (37) use of uninitialized value
'arg[3]' here
|
util.c:173:7: error: use of uninitialized value 'arg[1]' [CWE-457]
[-Werror=analyzer-use-of-uninitialized-value]
173 | printf (_(m->msgid), arg[0], arg[1], arg[2], arg[3]);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'set_color_context': events 1-4
|
| 1449 | set_color_context (enum color_context color_context)
| | ^~~~~~~~~~~~~~~~~
| | |
| | (1) entry to 'set_color_context'
| 1450 | {
| 1451 | if (color_context != RESET_CONTEXT)
| | ~
| | |
| | (2) following 'true' branch (when 'color_context != 3')...
| 1452 | process_signals ();
| | ~~~~~~~~~~~~~~~~~~
| | |
| | (3) ...to here
| | (4) calling 'process_signals' from 'set_color_context'
|
+--> 'process_signals': events 5-8
|
| 260 | process_signals (void)
| | ^~~~~~~~~~~~~~~
| | |
| | (5) entry to 'process_signals'
| 261 | {
| 262 | while (interrupt_signal | stop_signal_count)
| | ~~~~~~~~~~~~~~~~
| | |
| | (6) following 'true' branch...
| 263 | {
| 264 | set_color_context (RESET_CONTEXT);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (7) ...to here
| | (8) calling 'set_color_context' from 'process_signals'
|
+--> 'set_color_context': events 9-11
|
| 1449 | set_color_context (enum color_context color_context)
| | ^~~~~~~~~~~~~~~~~
| | |
| | (9) entry to 'set_color_context'
| 1450 | {
| 1451 | if (color_context != RESET_CONTEXT)
| | ~
| | |
| | (10) following 'false' branch (when
'color_context == 3')...
| 1452 | process_signals ();
| 1453 | if (colors_enabled && last_context !=
color_context)
| | ~~
| | |
| | (11) ...to here
|
<------+
|
'process_signals': events 12-13
|
| 264 | set_color_context (RESET_CONTEXT);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (12) returning to 'process_signals' from
'set_color_context'
|......
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals, &oldset);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (13) calling 'xsigprocmask' from 'process_signals'
|
+--> 'xsigprocmask': events 14-16
|
| 212 | xsigprocmask (int how, sigset_t const *restrict set,
sigset_t *restrict oset)
| | ^~~~~~~~~~~~
| | |
| | (14) entry to 'xsigprocmask'
| 213 | {
| 214 | if (sigprocmask (how, set, oset) != 0)
| | ~
| | |
| | (15) following 'false' branch...
| 215 | pfatal_with_name ("sigprocmask");
| 216 | }
| | ~
| | |
| | (16) ...to here
|
<------+
|
'process_signals': events 17-20
|
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals, &oldset);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (17) returning to 'process_signals' from
'xsigprocmask'
|......
| 289 | if (raise (sig) != 0)
| | ~
| | |
| | (18) following 'false' branch...
| 290 | pfatal_with_name ("raise");
| 291 | xsigprocmask (SIG_SETMASK, &oldset, NULL);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (19) ...to here
| | (20) calling 'xsigprocmask' from 'process_signals'
|
+--> 'xsigprocmask': events 21-23
|
| 212 | xsigprocmask (int how, sigset_t const *restrict set,
sigset_t *restrict oset)
| | ^~~~~~~~~~~~
| | |
| | (21) entry to 'xsigprocmask'
| 213 | {
| 214 | if (sigprocmask (how, set, oset) != 0)
| | ~
| | |
| | (22) following 'false' branch...
| 215 | pfatal_with_name ("sigprocmask");
| 216 | }
| | ~
| | |
| | (23) ...to here
|
<------+
|
'process_signals': events 24-27
|
| 262 | while (interrupt_signal | stop_signal_count)
| | ~~~~~~~~~~~~~~~~
| | |
| | (25) following 'true' branch...
| 263 | {
| 264 | set_color_context (RESET_CONTEXT);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (26) ...to here
| | (27) calling 'set_color_context' from
'process_signals'
|......
| 291 | xsigprocmask (SIG_SETMASK, &oldset, NULL);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (24) returning to 'process_signals' from
'xsigprocmask'
|
+--> 'set_color_context': events 28-30
|
| 1449 | set_color_context (enum color_context color_context)
| | ^~~~~~~~~~~~~~~~~
| | |
| | (28) entry to 'set_color_context'
| 1450 | {
| 1451 | if (color_context != RESET_CONTEXT)
| | ~
| | |
| | (29) following 'false' branch (when
'color_context == 3')...
| 1452 | process_signals ();
| 1453 | if (colors_enabled && last_context !=
color_context)
| | ~~
| | |
| | (30) ...to here
|
<------+
|
'process_signals': events 31-32
|
| 264 | set_color_context (RESET_CONTEXT);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (31) returning to 'process_signals' from
'set_color_context'
|......
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals, &oldset);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (32) calling 'xsigprocmask' from 'process_signals'
|
+--> 'xsigprocmask': events 33-35
|
| 212 | xsigprocmask (int how, sigset_t const *restrict set,
sigset_t *restrict oset)
| | ^~~~~~~~~~~~
| | |
| | (33) entry to 'xsigprocmask'
| 213 | {
| 214 | if (sigprocmask (how, set, oset) != 0)
| | ~
| | |
| | (34) following 'false' branch...
| 215 | pfatal_with_name ("sigprocmask");
| 216 | }
| | ~
| | |
| | (35) ...to here
|
<------+
|
'process_signals': events 36-37
|
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals, &oldset);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (36) returning to 'process_signals' from
'xsigprocmask'
|......
| 285 | xsignal (sig, SIG_DFL);
| | ~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (37) calling 'xsignal' from 'process_signals'
|
+--> 'xsignal': events 38-39
|
| 203 | xsignal (int sig, signal_handler func)
| | ^~~~~~~
| | |
| | (38) entry to 'xsignal'
|......
| 207 | pfatal_with_name ("signal");
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (39) calling 'pfatal_with_name' from 'xsignal'
|
+--> 'pfatal_with_name': events 40-41
|
| 87 | pfatal_with_name (char const *name)
| | ^~~~~~~~~~~~~~~~
| | |
| | (40) entry to 'pfatal_with_name'
|......
| 90 | print_message_queue ();
| | ~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (41) calling 'print_message_queue' from
'pfatal_with_name'
|
+--> 'print_message_queue': events 42-50
|
| 159 | print_message_queue (void)
| | ^~~~~~~~~~~~~~~~~~~
| | |
| | (42) entry to 'print_message_queue'
| 160 | {
| 161 | for (struct msg *m = msg_chain; m; )
| | ~
| | |
| | (44)
following 'true' branch (when 'm' is non-NULL)...
|......
| 164 | char const *p = m->args;
| | ~~~~
| | |
| | (45) ...to here
| 165 | char const *plim = p +
m->argbytes;
| 166 | char const *arg[4];
| | ~~~
| | |
| | (43) region created
on stack here
| 167 | for (int i = 0; i < 4; i++)
| | ~~~~~
| | |
| | (46) following
'true' branch (when 'i != 4')...
| | (48) following
'false' branch (when 'i == 4')...
| 168 | {
| 169 | arg[i] = p;
| | ~~~
| | |
| | (47) ...to here
|......
| 173 | printf (_(m->msgid), arg[0],
arg[1], arg[2], arg[3]);
| |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (49) ...to here
| | (50) use of uninitialized value
'arg[1]' here
|
util.c:173:7: error: use of uninitialized value 'arg[3]' [CWE-457]
[-Werror=analyzer-use-of-uninitialized-value]
173 | printf (_(m->msgid), arg[0], arg[1], arg[2], arg[3]);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'set_color_context': events 1-4
|
| 1449 | set_color_context (enum color_context color_context)
| | ^~~~~~~~~~~~~~~~~
| | |
| | (1) entry to 'set_color_context'
| 1450 | {
| 1451 | if (color_context != RESET_CONTEXT)
| | ~
| | |
| | (2) following 'true' branch (when 'color_context != 3')...
| 1452 | process_signals ();
| | ~~~~~~~~~~~~~~~~~~
| | |
| | (3) ...to here
| | (4) calling 'process_signals' from 'set_color_context'
|
+--> 'process_signals': events 5-8
|
| 260 | process_signals (void)
| | ^~~~~~~~~~~~~~~
| | |
| | (5) entry to 'process_signals'
| 261 | {
| 262 | while (interrupt_signal | stop_signal_count)
| | ~~~~~~~~~~~~~~~~
| | |
| | (6) following 'true' branch...
| 263 | {
| 264 | set_color_context (RESET_CONTEXT);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (7) ...to here
| | (8) calling 'set_color_context' from 'process_signals'
|
+--> 'set_color_context': events 9-11
|
| 1449 | set_color_context (enum color_context color_context)
| | ^~~~~~~~~~~~~~~~~
| | |
| | (9) entry to 'set_color_context'
| 1450 | {
| 1451 | if (color_context != RESET_CONTEXT)
| | ~
| | |
| | (10) following 'false' branch (when
'color_context == 3')...
| 1452 | process_signals ();
| 1453 | if (colors_enabled && last_context !=
color_context)
| | ~~
| | |
| | (11) ...to here
|
<------+
|
'process_signals': events 12-13
|
| 264 | set_color_context (RESET_CONTEXT);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (12) returning to 'process_signals' from
'set_color_context'
|......
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals, &oldset);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (13) calling 'xsigprocmask' from 'process_signals'
|
+--> 'xsigprocmask': events 14-16
|
| 212 | xsigprocmask (int how, sigset_t const *restrict set,
sigset_t *restrict oset)
| | ^~~~~~~~~~~~
| | |
| | (14) entry to 'xsigprocmask'
| 213 | {
| 214 | if (sigprocmask (how, set, oset) != 0)
| | ~
| | |
| | (15) following 'false' branch...
| 215 | pfatal_with_name ("sigprocmask");
| 216 | }
| | ~
| | |
| | (16) ...to here
|
<------+
|
'process_signals': events 17-20
|
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals, &oldset);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (17) returning to 'process_signals' from
'xsigprocmask'
|......
| 289 | if (raise (sig) != 0)
| | ~
| | |
| | (18) following 'false' branch...
| 290 | pfatal_with_name ("raise");
| 291 | xsigprocmask (SIG_SETMASK, &oldset, NULL);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (19) ...to here
| | (20) calling 'xsigprocmask' from 'process_signals'
|
+--> 'xsigprocmask': events 21-23
|
| 212 | xsigprocmask (int how, sigset_t const *restrict set,
sigset_t *restrict oset)
| | ^~~~~~~~~~~~
| | |
| | (21) entry to 'xsigprocmask'
| 213 | {
| 214 | if (sigprocmask (how, set, oset) != 0)
| | ~
| | |
| | (22) following 'false' branch...
| 215 | pfatal_with_name ("sigprocmask");
| 216 | }
| | ~
| | |
| | (23) ...to here
|
<------+
|
'process_signals': events 24-27
|
| 262 | while (interrupt_signal | stop_signal_count)
| | ~~~~~~~~~~~~~~~~
| | |
| | (25) following 'true' branch...
| 263 | {
| 264 | set_color_context (RESET_CONTEXT);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (26) ...to here
| | (27) calling 'set_color_context' from
'process_signals'
|......
| 291 | xsigprocmask (SIG_SETMASK, &oldset, NULL);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (24) returning to 'process_signals' from
'xsigprocmask'
|
+--> 'set_color_context': events 28-30
|
| 1449 | set_color_context (enum color_context color_context)
| | ^~~~~~~~~~~~~~~~~
| | |
| | (28) entry to 'set_color_context'
| 1450 | {
| 1451 | if (color_context != RESET_CONTEXT)
| | ~
| | |
| | (29) following 'false' branch (when
'color_context == 3')...
| 1452 | process_signals ();
| 1453 | if (colors_enabled && last_context !=
color_context)
| | ~~
| | |
| | (30) ...to here
|
<------+
|
'process_signals': events 31-32
|
| 264 | set_color_context (RESET_CONTEXT);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (31) returning to 'process_signals' from
'set_color_context'
|......
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals, &oldset);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (32) calling 'xsigprocmask' from 'process_signals'
|
+--> 'xsigprocmask': events 33-35
|
| 212 | xsigprocmask (int how, sigset_t const *restrict set,
sigset_t *restrict oset)
| | ^~~~~~~~~~~~
| | |
| | (33) entry to 'xsigprocmask'
| 213 | {
| 214 | if (sigprocmask (how, set, oset) != 0)
| | ~
| | |
| | (34) following 'false' branch...
| 215 | pfatal_with_name ("sigprocmask");
| 216 | }
| | ~
| | |
| | (35) ...to here
|
<------+
|
'process_signals': events 36-37
|
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals, &oldset);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (36) returning to 'process_signals' from
'xsigprocmask'
|......
| 285 | xsignal (sig, SIG_DFL);
| | ~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (37) calling 'xsignal' from 'process_signals'
|
+--> 'xsignal': events 38-39
|
| 203 | xsignal (int sig, signal_handler func)
| | ^~~~~~~
| | |
| | (38) entry to 'xsignal'
|......
| 207 | pfatal_with_name ("signal");
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (39) calling 'pfatal_with_name' from 'xsignal'
|
+--> 'pfatal_with_name': events 40-41
|
| 87 | pfatal_with_name (char const *name)
| | ^~~~~~~~~~~~~~~~
| | |
| | (40) entry to 'pfatal_with_name'
|......
| 90 | print_message_queue ();
| | ~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (41) calling 'print_message_queue' from
'pfatal_with_name'
|
+--> 'print_message_queue': events 42-50
|
| 159 | print_message_queue (void)
| | ^~~~~~~~~~~~~~~~~~~
| | |
| | (42) entry to 'print_message_queue'
| 160 | {
| 161 | for (struct msg *m = msg_chain; m; )
| | ~
| | |
| | (44)
following 'true' branch (when 'm' is non-NULL)...
|......
| 164 | char const *p = m->args;
| | ~~~~
| | |
| | (45) ...to here
| 165 | char const *plim = p +
m->argbytes;
| 166 | char const *arg[4];
| | ~~~
| | |
| | (43) region created
on stack here
| 167 | for (int i = 0; i < 4; i++)
| | ~~~~~
| | |
| | (46) following
'true' branch (when 'i != 4')...
| | (48) following
'false' branch (when 'i == 4')...
| 168 | {
| 169 | arg[i] = p;
| | ~~~
| | |
| | (47) ...to here
|......
| 173 | printf (_(m->msgid), arg[0],
arg[1], arg[2], arg[3]);
| |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (49) ...to here
| | (50) use of uninitialized value
'arg[3]' here
|
util.c:173:7: error: use of uninitialized value 'arg[2]' [CWE-457]
[-Werror=analyzer-use-of-uninitialized-value]
173 | printf (_(m->msgid), arg[0], arg[1], arg[2], arg[3]);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'set_color_context': events 1-4
|
| 1449 | set_color_context (enum color_context color_context)
| | ^~~~~~~~~~~~~~~~~
| | |
| | (1) entry to 'set_color_context'
| 1450 | {
| 1451 | if (color_context != RESET_CONTEXT)
| | ~
| | |
| | (2) following 'true' branch (when 'color_context != 3')...
| 1452 | process_signals ();
| | ~~~~~~~~~~~~~~~~~~
| | |
| | (3) ...to here
| | (4) calling 'process_signals' from 'set_color_context'
|
+--> 'process_signals': events 5-8
|
| 260 | process_signals (void)
| | ^~~~~~~~~~~~~~~
| | |
| | (5) entry to 'process_signals'
| 261 | {
| 262 | while (interrupt_signal | stop_signal_count)
| | ~~~~~~~~~~~~~~~~
| | |
| | (6) following 'true' branch...
| 263 | {
| 264 | set_color_context (RESET_CONTEXT);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (7) ...to here
| | (8) calling 'set_color_context' from 'process_signals'
|
+--> 'set_color_context': events 9-11
|
| 1449 | set_color_context (enum color_context color_context)
| | ^~~~~~~~~~~~~~~~~
| | |
| | (9) entry to 'set_color_context'
| 1450 | {
| 1451 | if (color_context != RESET_CONTEXT)
| | ~
| | |
| | (10) following 'false' branch (when
'color_context == 3')...
| 1452 | process_signals ();
| 1453 | if (colors_enabled && last_context !=
color_context)
| | ~~
| | |
| | (11) ...to here
|
<------+
|
'process_signals': events 12-13
|
| 264 | set_color_context (RESET_CONTEXT);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (12) returning to 'process_signals' from
'set_color_context'
|......
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals, &oldset);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (13) calling 'xsigprocmask' from 'process_signals'
|
+--> 'xsigprocmask': events 14-16
|
| 212 | xsigprocmask (int how, sigset_t const *restrict set,
sigset_t *restrict oset)
| | ^~~~~~~~~~~~
| | |
| | (14) entry to 'xsigprocmask'
| 213 | {
| 214 | if (sigprocmask (how, set, oset) != 0)
| | ~
| | |
| | (15) following 'false' branch...
| 215 | pfatal_with_name ("sigprocmask");
| 216 | }
| | ~
| | |
| | (16) ...to here
|
<------+
|
'process_signals': events 17-20
|
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals, &oldset);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (17) returning to 'process_signals' from
'xsigprocmask'
|......
| 289 | if (raise (sig) != 0)
| | ~
| | |
| | (18) following 'false' branch...
| 290 | pfatal_with_name ("raise");
| 291 | xsigprocmask (SIG_SETMASK, &oldset, NULL);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (19) ...to here
| | (20) calling 'xsigprocmask' from 'process_signals'
|
+--> 'xsigprocmask': events 21-23
|
| 212 | xsigprocmask (int how, sigset_t const *restrict set,
sigset_t *restrict oset)
| | ^~~~~~~~~~~~
| | |
| | (21) entry to 'xsigprocmask'
| 213 | {
| 214 | if (sigprocmask (how, set, oset) != 0)
| | ~
| | |
| | (22) following 'false' branch...
| 215 | pfatal_with_name ("sigprocmask");
| 216 | }
| | ~
| | |
| | (23) ...to here
|
<------+
|
'process_signals': events 24-27
|
| 262 | while (interrupt_signal | stop_signal_count)
| | ~~~~~~~~~~~~~~~~
| | |
| | (25) following 'true' branch...
| 263 | {
| 264 | set_color_context (RESET_CONTEXT);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (26) ...to here
| | (27) calling 'set_color_context' from
'process_signals'
|......
| 291 | xsigprocmask (SIG_SETMASK, &oldset, NULL);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (24) returning to 'process_signals' from
'xsigprocmask'
|
+--> 'set_color_context': events 28-30
|
| 1449 | set_color_context (enum color_context color_context)
| | ^~~~~~~~~~~~~~~~~
| | |
| | (28) entry to 'set_color_context'
| 1450 | {
| 1451 | if (color_context != RESET_CONTEXT)
| | ~
| | |
| | (29) following 'false' branch (when
'color_context == 3')...
| 1452 | process_signals ();
| 1453 | if (colors_enabled && last_context !=
color_context)
| | ~~
| | |
| | (30) ...to here
|
<------+
|
'process_signals': events 31-32
|
| 264 | set_color_context (RESET_CONTEXT);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (31) returning to 'process_signals' from
'set_color_context'
|......
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals, &oldset);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (32) calling 'xsigprocmask' from 'process_signals'
|
+--> 'xsigprocmask': events 33-35
|
| 212 | xsigprocmask (int how, sigset_t const *restrict set,
sigset_t *restrict oset)
| | ^~~~~~~~~~~~
| | |
| | (33) entry to 'xsigprocmask'
| 213 | {
| 214 | if (sigprocmask (how, set, oset) != 0)
| | ~
| | |
| | (34) following 'false' branch...
| 215 | pfatal_with_name ("sigprocmask");
| 216 | }
| | ~
| | |
| | (35) ...to here
|
<------+
|
'process_signals': events 36-37
|
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals, &oldset);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (36) returning to 'process_signals' from
'xsigprocmask'
|......
| 285 | xsignal (sig, SIG_DFL);
| | ~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (37) calling 'xsignal' from 'process_signals'
|
+--> 'xsignal': events 38-39
|
| 203 | xsignal (int sig, signal_handler func)
| | ^~~~~~~
| | |
| | (38) entry to 'xsignal'
|......
| 207 | pfatal_with_name ("signal");
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (39) calling 'pfatal_with_name' from 'xsignal'
|
+--> 'pfatal_with_name': events 40-41
|
| 87 | pfatal_with_name (char const *name)
| | ^~~~~~~~~~~~~~~~
| | |
| | (40) entry to 'pfatal_with_name'
|......
| 90 | print_message_queue ();
| | ~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (41) calling 'print_message_queue' from
'pfatal_with_name'
|
+--> 'print_message_queue': events 42-50
|
| 159 | print_message_queue (void)
| | ^~~~~~~~~~~~~~~~~~~
| | |
| | (42) entry to 'print_message_queue'
| 160 | {
| 161 | for (struct msg *m = msg_chain; m; )
| | ~
| | |
| | (44)
following 'true' branch (when 'm' is non-NULL)...
|......
| 164 | char const *p = m->args;
| | ~~~~
| | |
| | (45) ...to here
| 165 | char const *plim = p +
m->argbytes;
| 166 | char const *arg[4];
| | ~~~
| | |
| | (43) region created
on stack here
| 167 | for (int i = 0; i < 4; i++)
| | ~~~~~
| | |
| | (46) following
'true' branch (when 'i != 4')...
| | (48) following
'false' branch (when 'i == 4')...
| 168 | {
| 169 | arg[i] = p;
| | ~~~
| | |
| | (47) ...to here
|......
| 173 | printf (_(m->msgid), arg[0],
arg[1], arg[2], arg[3]);
| |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (49) ...to here
| | (50) use of uninitialized value
'arg[2]' here
|
util.c:173:7: error: use of uninitialized value 'arg[2]' [CWE-457]
[-Werror=analyzer-use-of-uninitialized-value]
173 | printf (_(m->msgid), arg[0], arg[1], arg[2], arg[3]);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'print_1_line_nl': events 1-6
|
| 1320 | print_1_line_nl (char const *line_flag, char const *const *line,
bool skip_nl)
| | ^~~~~~~~~~~~~~~
| | |
| | (1) entry to 'print_1_line_nl'
|......
| 1331 | if (line_flag && *line_flag)
| | ~~~~~~~~~~~~~~~~~~~~~~~~
| | | | |
| | | | (3) ...to here
| | | (4) following 'false' branch...
| | (2) following 'true' branch (when 'line_flag' is non-NULL)...
|......
| 1349 | output_1_line (base, limit - (skip_nl && limit[-1] == '\n'),
flag_format, line_flag);
| |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (5) ...to here
| | (6) calling 'output_1_line' from 'print_1_line_nl'
|
+--> 'output_1_line': events 7-18
|
| 1364 | output_1_line (char const *base, char const *limit, char
const *flag_format,
| | ^~~~~~~~~~~~~
| | |
| | (7) entry to 'output_1_line'
|......
| 1368 | if (!expand_tabs)
| | ~
| | |
| | (8) following 'false' branch...
| 1369 | {
| 1370 | size_t left = limit - base;
| | ~~~~~~
| | |
| | (9) ...to here
| 1371 | while (left)
| | ~~~~
| | |
| | (10) following 'true' branch (when 'left !=
0')...
| | (14) following 'true' branch (when 'left !=
0')...
| 1372 | {
| 1373 | size_t to_write = MIN (left, MAX_CHUNK);
| | ~~~~~~
| | |
| | (11) ...to here
| | (15) ...to here
| 1374 | size_t written = fwrite (base, sizeof (char),
to_write, outfile);
| 1375 | if (written < to_write)
| | ~
| | |
| | (12) following 'false' branch...
| | (16) following 'false' branch...
| 1376 | return;
| 1377 | base += written;
| | ~~~~
| | |
| | (13) ...to here
| | (17) ...to here
| 1378 | left -= written;
| 1379 | process_signals ();
| | ~~~~~~~~~~~~~~~~~~
| | |
| | (18) calling 'process_signals' from
'output_1_line'
|
+--> 'process_signals': events 19-20
|
| 260 | process_signals (void)
| | ^~~~~~~~~~~~~~~
| | |
| | (19) entry to 'process_signals'
|......
| 264 | set_color_context (RESET_CONTEXT);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (20) calling 'set_color_context' from
'process_signals'
|
+--> 'set_color_context': events 21-23
|
| 1449 | set_color_context (enum color_context
color_context)
| | ^~~~~~~~~~~~~~~~~
| | |
| | (21) entry to 'set_color_context'
| 1450 | {
| 1451 | if (color_context != RESET_CONTEXT)
| | ~
| | |
| | (22) following 'false' branch (when
'color_context == 3')...
| 1452 | process_signals ();
| 1453 | if (colors_enabled && last_context !=
color_context)
| | ~~
| | |
| | (23) ...to here
|
<------+
|
'process_signals': events 24-25
|
| 264 | set_color_context (RESET_CONTEXT);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (24) returning to 'process_signals' from
'set_color_context'
|......
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals,
&oldset);
| |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (25) calling 'xsigprocmask' from
'process_signals'
|
+--> 'xsigprocmask': events 26-28
|
| 212 | xsigprocmask (int how, sigset_t const
*restrict set, sigset_t *restrict oset)
| | ^~~~~~~~~~~~
| | |
| | (26) entry to 'xsigprocmask'
| 213 | {
| 214 | if (sigprocmask (how, set, oset) != 0)
| | ~
| | |
| | (27) following 'false' branch...
| 215 | pfatal_with_name ("sigprocmask");
| 216 | }
| | ~
| | |
| | (28) ...to here
|
<------+
|
'process_signals': events 29-30
|
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals,
&oldset);
| |
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (29) returning to 'process_signals' from
'xsigprocmask'
|......
| 285 | xsignal (sig, SIG_DFL);
| | ~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (30) calling 'xsignal' from
'process_signals'
|
+--> 'xsignal': events 31-32
|
| 203 | xsignal (int sig, signal_handler func)
| | ^~~~~~~
| | |
| | (31) entry to 'xsignal'
|......
| 207 | pfatal_with_name ("signal");
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (32) calling 'pfatal_with_name' from
'xsignal'
|
+--> 'pfatal_with_name': events 33-34
|
| 87 | pfatal_with_name (char const *name)
| | ^~~~~~~~~~~~~~~~
| | |
| | (33) entry to 'pfatal_with_name'
|......
| 90 | print_message_queue ();
| | ~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (34) calling 'print_message_queue'
from 'pfatal_with_name'
|
+--> 'print_message_queue': events 35-43
|
| 159 | print_message_queue (void)
| | ^~~~~~~~~~~~~~~~~~~
| | |
| | (35) entry to
'print_message_queue'
| 160 | {
| 161 | for (struct msg *m =
msg_chain; m; )
| |
~
| |
|
| |
(37) following 'true' branch (when 'm' is non-NULL)...
|......
| 164 | char const *p = m->args;
| | ~~~~
| | |
| | (38) ...to here
| 165 | char const *plim = p +
m->argbytes;
| 166 | char const *arg[4];
| | ~~~
| | |
| | (36) region
created on stack here
| 167 | for (int i = 0; i < 4;
i++)
| | ~~~~~
| | |
| | (39)
following 'true' branch (when 'i != 4')...
| | (41)
following 'false' branch (when 'i == 4')...
| 168 | {
| 169 | arg[i] = p;
| | ~~~
| | |
| | (40) ...to here
|......
| 173 | printf (_(m->msgid),
arg[0], arg[1], arg[2], arg[3]);
| |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (42) ...to here
| | (43) use of uninitialized
value 'arg[2]' here
|
util.c:173:7: error: use of uninitialized value 'arg[1]' [CWE-457]
[-Werror=analyzer-use-of-uninitialized-value]
173 | printf (_(m->msgid), arg[0], arg[1], arg[2], arg[3]);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'print_1_line_nl': events 1-6
|
| 1320 | print_1_line_nl (char const *line_flag, char const *const *line,
bool skip_nl)
| | ^~~~~~~~~~~~~~~
| | |
| | (1) entry to 'print_1_line_nl'
|......
| 1331 | if (line_flag && *line_flag)
| | ~~~~~~~~~~~~~~~~~~~~~~~~
| | | | |
| | | | (3) ...to here
| | | (4) following 'false' branch...
| | (2) following 'true' branch (when 'line_flag' is non-NULL)...
|......
| 1349 | output_1_line (base, limit - (skip_nl && limit[-1] == '\n'),
flag_format, line_flag);
| |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (5) ...to here
| | (6) calling 'output_1_line' from 'print_1_line_nl'
|
+--> 'output_1_line': events 7-18
|
| 1364 | output_1_line (char const *base, char const *limit, char
const *flag_format,
| | ^~~~~~~~~~~~~
| | |
| | (7) entry to 'output_1_line'
|......
| 1368 | if (!expand_tabs)
| | ~
| | |
| | (8) following 'false' branch...
| 1369 | {
| 1370 | size_t left = limit - base;
| | ~~~~~~
| | |
| | (9) ...to here
| 1371 | while (left)
| | ~~~~
| | |
| | (10) following 'true' branch (when 'left !=
0')...
| | (14) following 'true' branch (when 'left !=
0')...
| 1372 | {
| 1373 | size_t to_write = MIN (left, MAX_CHUNK);
| | ~~~~~~
| | |
| | (11) ...to here
| | (15) ...to here
| 1374 | size_t written = fwrite (base, sizeof (char),
to_write, outfile);
| 1375 | if (written < to_write)
| | ~
| | |
| | (12) following 'false' branch...
| | (16) following 'false' branch...
| 1376 | return;
| 1377 | base += written;
| | ~~~~
| | |
| | (13) ...to here
| | (17) ...to here
| 1378 | left -= written;
| 1379 | process_signals ();
| | ~~~~~~~~~~~~~~~~~~
| | |
| | (18) calling 'process_signals' from
'output_1_line'
|
+--> 'process_signals': events 19-20
|
| 260 | process_signals (void)
| | ^~~~~~~~~~~~~~~
| | |
| | (19) entry to 'process_signals'
|......
| 264 | set_color_context (RESET_CONTEXT);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (20) calling 'set_color_context' from
'process_signals'
|
+--> 'set_color_context': events 21-23
|
| 1449 | set_color_context (enum color_context
color_context)
| | ^~~~~~~~~~~~~~~~~
| | |
| | (21) entry to 'set_color_context'
| 1450 | {
| 1451 | if (color_context != RESET_CONTEXT)
| | ~
| | |
| | (22) following 'false' branch (when
'color_context == 3')...
| 1452 | process_signals ();
| 1453 | if (colors_enabled && last_context !=
color_context)
| | ~~
| | |
| | (23) ...to here
|
<------+
|
'process_signals': events 24-25
|
| 264 | set_color_context (RESET_CONTEXT);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (24) returning to 'process_signals' from
'set_color_context'
|......
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals,
&oldset);
| |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (25) calling 'xsigprocmask' from
'process_signals'
|
+--> 'xsigprocmask': events 26-28
|
| 212 | xsigprocmask (int how, sigset_t const
*restrict set, sigset_t *restrict oset)
| | ^~~~~~~~~~~~
| | |
| | (26) entry to 'xsigprocmask'
| 213 | {
| 214 | if (sigprocmask (how, set, oset) != 0)
| | ~
| | |
| | (27) following 'false' branch...
| 215 | pfatal_with_name ("sigprocmask");
| 216 | }
| | ~
| | |
| | (28) ...to here
|
<------+
|
'process_signals': events 29-30
|
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals,
&oldset);
| |
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (29) returning to 'process_signals' from
'xsigprocmask'
|......
| 285 | xsignal (sig, SIG_DFL);
| | ~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (30) calling 'xsignal' from
'process_signals'
|
+--> 'xsignal': events 31-32
|
| 203 | xsignal (int sig, signal_handler func)
| | ^~~~~~~
| | |
| | (31) entry to 'xsignal'
|......
| 207 | pfatal_with_name ("signal");
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (32) calling 'pfatal_with_name' from
'xsignal'
|
+--> 'pfatal_with_name': events 33-34
|
| 87 | pfatal_with_name (char const *name)
| | ^~~~~~~~~~~~~~~~
| | |
| | (33) entry to 'pfatal_with_name'
|......
| 90 | print_message_queue ();
| | ~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (34) calling 'print_message_queue'
from 'pfatal_with_name'
|
+--> 'print_message_queue': events 35-43
|
| 159 | print_message_queue (void)
| | ^~~~~~~~~~~~~~~~~~~
| | |
| | (35) entry to
'print_message_queue'
| 160 | {
| 161 | for (struct msg *m =
msg_chain; m; )
| |
~
| |
|
| |
(37) following 'true' branch (when 'm' is non-NULL)...
|......
| 164 | char const *p = m->args;
| | ~~~~
| | |
| | (38) ...to here
| 165 | char const *plim = p +
m->argbytes;
| 166 | char const *arg[4];
| | ~~~
| | |
| | (36) region
created on stack here
| 167 | for (int i = 0; i < 4;
i++)
| | ~~~~~
| | |
| | (39)
following 'true' branch (when 'i != 4')...
| | (41)
following 'false' branch (when 'i == 4')...
| 168 | {
| 169 | arg[i] = p;
| | ~~~
| | |
| | (40) ...to here
|......
| 173 | printf (_(m->msgid),
arg[0], arg[1], arg[2], arg[3]);
| |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (42) ...to here
| | (43) use of uninitialized
value 'arg[1]' here
|
util.c:173:7: error: use of uninitialized value 'arg[3]' [CWE-457]
[-Werror=analyzer-use-of-uninitialized-value]
173 | printf (_(m->msgid), arg[0], arg[1], arg[2], arg[3]);
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
'print_1_line_nl': events 1-6
|
| 1320 | print_1_line_nl (char const *line_flag, char const *const *line,
bool skip_nl)
| | ^~~~~~~~~~~~~~~
| | |
| | (1) entry to 'print_1_line_nl'
|......
| 1331 | if (line_flag && *line_flag)
| | ~~~~~~~~~~~~~~~~~~~~~~~~
| | | | |
| | | | (3) ...to here
| | | (4) following 'false' branch...
| | (2) following 'true' branch (when 'line_flag' is non-NULL)...
|......
| 1349 | output_1_line (base, limit - (skip_nl && limit[-1] == '\n'),
flag_format, line_flag);
| |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (5) ...to here
| | (6) calling 'output_1_line' from 'print_1_line_nl'
|
+--> 'output_1_line': events 7-18
|
| 1364 | output_1_line (char const *base, char const *limit, char
const *flag_format,
| | ^~~~~~~~~~~~~
| | |
| | (7) entry to 'output_1_line'
|......
| 1368 | if (!expand_tabs)
| | ~
| | |
| | (8) following 'false' branch...
| 1369 | {
| 1370 | size_t left = limit - base;
| | ~~~~~~
| | |
| | (9) ...to here
| 1371 | while (left)
| | ~~~~
| | |
| | (10) following 'true' branch (when 'left !=
0')...
| | (14) following 'true' branch (when 'left !=
0')...
| 1372 | {
| 1373 | size_t to_write = MIN (left, MAX_CHUNK);
| | ~~~~~~
| | |
| | (11) ...to here
| | (15) ...to here
| 1374 | size_t written = fwrite (base, sizeof (char),
to_write, outfile);
| 1375 | if (written < to_write)
| | ~
| | |
| | (12) following 'false' branch...
| | (16) following 'false' branch...
| 1376 | return;
| 1377 | base += written;
| | ~~~~
| | |
| | (13) ...to here
| | (17) ...to here
| 1378 | left -= written;
| 1379 | process_signals ();
| | ~~~~~~~~~~~~~~~~~~
| | |
| | (18) calling 'process_signals' from
'output_1_line'
|
+--> 'process_signals': events 19-20
|
| 260 | process_signals (void)
| | ^~~~~~~~~~~~~~~
| | |
| | (19) entry to 'process_signals'
|......
| 264 | set_color_context (RESET_CONTEXT);
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (20) calling 'set_color_context' from
'process_signals'
|
+--> 'set_color_context': events 21-23
|
| 1449 | set_color_context (enum color_context
color_context)
| | ^~~~~~~~~~~~~~~~~
| | |
| | (21) entry to 'set_color_context'
| 1450 | {
| 1451 | if (color_context != RESET_CONTEXT)
| | ~
| | |
| | (22) following 'false' branch (when
'color_context == 3')...
| 1452 | process_signals ();
| 1453 | if (colors_enabled && last_context !=
color_context)
| | ~~
| | |
| | (23) ...to here
|
<------+
|
'process_signals': events 24-25
|
| 264 | set_color_context (RESET_CONTEXT);
| | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (24) returning to 'process_signals' from
'set_color_context'
|......
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals,
&oldset);
| |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (25) calling 'xsigprocmask' from
'process_signals'
|
+--> 'xsigprocmask': events 26-28
|
| 212 | xsigprocmask (int how, sigset_t const
*restrict set, sigset_t *restrict oset)
| | ^~~~~~~~~~~~
| | |
| | (26) entry to 'xsigprocmask'
| 213 | {
| 214 | if (sigprocmask (how, set, oset) != 0)
| | ~
| | |
| | (27) following 'false' branch...
| 215 | pfatal_with_name ("sigprocmask");
| 216 | }
| | ~
| | |
| | (28) ...to here
|
<------+
|
'process_signals': events 29-30
|
| 268 | xsigprocmask (SIG_BLOCK, &caught_signals,
&oldset);
| |
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (29) returning to 'process_signals' from
'xsigprocmask'
|......
| 285 | xsignal (sig, SIG_DFL);
| | ~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (30) calling 'xsignal' from
'process_signals'
|
+--> 'xsignal': events 31-32
|
| 203 | xsignal (int sig, signal_handler func)
| | ^~~~~~~
| | |
| | (31) entry to 'xsignal'
|......
| 207 | pfatal_with_name ("signal");
| | ~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (32) calling 'pfatal_with_name' from
'xsignal'
|
+--> 'pfatal_with_name': events 33-34
|
| 87 | pfatal_with_name (char const *name)
| | ^~~~~~~~~~~~~~~~
| | |
| | (33) entry to 'pfatal_with_name'
|......
| 90 | print_message_queue ();
| | ~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (34) calling 'print_message_queue'
from 'pfatal_with_name'
|
+--> 'print_message_queue': events 35-43
|
| 159 | print_message_queue (void)
| | ^~~~~~~~~~~~~~~~~~~
| | |
| | (35) entry to
'print_message_queue'
| 160 | {
| 161 | for (struct msg *m =
msg_chain; m; )
| |
~
| |
|
| |
(37) following 'true' branch (when 'm' is non-NULL)...
|......
| 164 | char const *p = m->args;
| | ~~~~
| | |
| | (38) ...to here
| 165 | char const *plim = p +
m->argbytes;
| 166 | char const *arg[4];
| | ~~~
| | |
| | (36) region
created on stack here
| 167 | for (int i = 0; i < 4;
i++)
| | ~~~~~
| | |
| | (39)
following 'true' branch (when 'i != 4')...
| | (41)
following 'false' branch (when 'i == 4')...
| 168 | {
| 169 | arg[i] = p;
| | ~~~
| | |
| | (40) ...to here
|......
| 173 | printf (_(m->msgid),
arg[0], arg[1], arg[2], arg[3]);
| |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| | |
| | (42) ...to here
| | (43) use of uninitialized
value 'arg[3]' here
|
cc1: all warnings being treated as errors
make[2]: *** [Makefile:1776: util.o] Error 1
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [PATCH] build: temp?-disable -Wanalyzer-use-of-uninitialized-value,
Jim Meyering <=