HomeFreeBSD

Fix too few arguments to formatting function

Description

Fix too few arguments to formatting function

CodeQL reported that when the VERIFY3U condition is false, we do not
pass enough arguments to spl_panic(). This is because the format
string from snprintf() was concatenated into the format string for
spl_panic(), which causes us to have an unexpected format specifier.

A CodeQL developer suggested fixing the macro to have a %s format
string that takes a stringified RIGHT argument, which would fix this.
However, upon inspection, the VERIFY3U check was never necessary in the
first place, so we remove it in favor of just calling snprintf().

Lastly, it is interesting that every other static analyzer run on the
codebase did not catch this, including some that made an effort to catch
such things. Presumably, all of them relied on header annotations, which
we have not yet done on spl_panic(). CodeQL apparently is able to
track the flow of arguments on their way to annotated functions, which
llowed it to catch this when others did not. A future patch that I have
in development should annotate spl_panic(), so the others will catch
this too.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Signed-off-by: Richard Yao <richard.yao@alumni.stonybrook.edu>
Closes #14098

Details

Provenance
Richard Yao <richard.yao@alumni.stonybrook.edu>Authored on Oct 27 2022, 4:45 PM
Tony Hutter <hutter2@llnl.gov>Committed on Dec 1 2022, 8:39 PM
Parents
rG52e658edd7af: Remove zpl_revalidate: fix snapshot rollback
Branches
Unknown
Tags
Unknown

Event Timeline

Tony Hutter <hutter2@llnl.gov> committed rGe9a8fb17b533: Fix too few arguments to formatting function (authored by Richard Yao <richard.yao@alumni.stonybrook.edu>).Dec 1 2022, 8:39 PM