diff options
author | David Malcolm <dmalcolm@redhat.com> | 2022-06-16 17:35:16 -0400 |
---|---|---|
committer | David Malcolm <dmalcolm@redhat.com> | 2022-06-16 17:35:16 -0400 |
commit | f0da5f0a3161310f2180cccc42a26e0bd02030f0 (patch) | |
tree | 290026e5e811ede1edf8fe6cb1871c8ecd876efe /gcc | |
parent | f443024bca7c1ac988eb7c05e639b017347ee714 (diff) | |
download | gcc-f0da5f0a3161310f2180cccc42a26e0bd02030f0.zip gcc-f0da5f0a3161310f2180cccc42a26e0bd02030f0.tar.gz gcc-f0da5f0a3161310f2180cccc42a26e0bd02030f0.tar.bz2 |
analyzer: associate -Wanalyzer-va-arg-type-mismatch with CWE-686
gcc/analyzer/ChangeLog:
* varargs.cc (va_arg_type_mismatch::emit): Associate the warning
with CWE-686 ("Function Call With Incorrect Argument Type").
gcc/testsuite/ChangeLog:
* gcc.dg/analyzer/stdarg-1.c
(__analyzer_called_by_test_type_mismatch_1): Verify that
-Wanalyzer-va-arg-type-mismatch is associated with CWE-686.
Signed-off-by: David Malcolm <dmalcolm@redhat.com>
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/analyzer/varargs.cc | 13 | ||||
-rw-r--r-- | gcc/testsuite/gcc.dg/analyzer/stdarg-1.c | 2 |
2 files changed, 9 insertions, 6 deletions
diff --git a/gcc/analyzer/varargs.cc b/gcc/analyzer/varargs.cc index 3baba79..c92a56d 100644 --- a/gcc/analyzer/varargs.cc +++ b/gcc/analyzer/varargs.cc @@ -857,12 +857,15 @@ public: bool emit (rich_location *rich_loc) final override { auto_diagnostic_group d; + diagnostic_metadata m; + /* "CWE-686: Function Call With Incorrect Argument Type". */ + m.add_cwe (686); bool warned - = warning_at (rich_loc, get_controlling_option (), - "%<va_arg%> expected %qT but received %qT" - " for variadic argument %i of %qE", - m_expected_type, m_actual_type, - get_variadic_index_for_diagnostic (), m_va_list_tree); + = warning_meta (rich_loc, m, get_controlling_option (), + "%<va_arg%> expected %qT but received %qT" + " for variadic argument %i of %qE", + m_expected_type, m_actual_type, + get_variadic_index_for_diagnostic (), m_va_list_tree); return warned; } diff --git a/gcc/testsuite/gcc.dg/analyzer/stdarg-1.c b/gcc/testsuite/gcc.dg/analyzer/stdarg-1.c index 41935f7..f23d28c5 100644 --- a/gcc/testsuite/gcc.dg/analyzer/stdarg-1.c +++ b/gcc/testsuite/gcc.dg/analyzer/stdarg-1.c @@ -195,7 +195,7 @@ __analyzer_called_by_test_type_mismatch_1 (int placeholder, ...) __builtin_va_list ap; __builtin_va_start (ap, placeholder); - i = __builtin_va_arg (ap, int); /* { dg-warning "'va_arg' expected 'int' but received '\[^\n\r\]*' for variadic argument 1 of 'ap'" } */ + i = __builtin_va_arg (ap, int); /* { dg-warning "'va_arg' expected 'int' but received '\[^\n\r\]*' for variadic argument 1 of 'ap' \\\[CWE-686\\\]" } */ __builtin_va_end (ap); } |