[PATCH] D79437: [clang-tidy] Add fsetpos argument checker
Aaron Ballman via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Sat May 23 07:55:57 PDT 2020
aaron.ballman added a comment.
Thank you for working on this check, I think it's useful functionality. One concern I have, though, is that it's not flow-sensitive and should probably be implemented as a clang static analyzer check instead of a clang-tidy check. For instance, consider these three plausible issues:
// This only sets the offset on one code path.
void func(FILE *fp) {
fpos_t offset;
if (condition) {
// ... code
if (0 != fgetpos(fp, &offset))
return;
// ... code
} else {
// ... code
}
fsetpos(fp, &offset);
}
// This doesn't check the failure from getting the position and sets the position regardless.
void func(FILE *fp) {
fpos_t offset;
fgetpos(fp, &offset);
// ... code
fsetpos(fp, &offset);
}
// This function accepts the offset from the caller but the caller passes an invalid offset.
void func(FILE *fp, const fpos_t *offset) {
fsetpos(fp, offset);
}
void caller(FILE *fp) {
fpos_t offset;
func(fp, &offset);
}
Have you considered writing a static analyzer check so you can do data and control flow analysis to catch issues like these?
================
Comment at: clang-tools-extra/clang-tidy/cert/CERTTidyModule.cpp:103
// FIO
+ CheckFactories.registerCheck<bugprone::FsetposArgumentCheck>("cert-fio44-c");
CheckFactories.registerCheck<misc::NonCopyableObjectsCheck>("cert-fio38-c");
----------------
Can you reorder to below fio38-c?
================
Comment at: clang-tools-extra/docs/clang-tidy/checks/bugprone-fsetpos-argument-check.rst:4
+bugprone-fsetpos-argument-check
+========================
+
----------------
The underlines here don't look like they are correct.
================
Comment at: clang-tools-extra/docs/clang-tidy/checks/bugprone-fsetpos-argument-check.rst:35
+
+This check corresponds to the CERT C++ Coding Standard rule
+`FIO44-C. Only use values for fsetpos() that are returned from fgetpos()
----------------
the CERT C Coding Standard rule
Repository:
rCTE Clang Tools Extra
CHANGES SINCE LAST ACTION
https://reviews.llvm.org/D79437/new/
https://reviews.llvm.org/D79437
More information about the cfe-commits
mailing list