[PATCH] D25876: [analyzer] Report CFNumberGetValue API misuse
Anna Zaks via cfe-commits
cfe-commits at lists.llvm.org
Tue Oct 25 15:47:07 PDT 2016
zaks.anna added inline comments.
================
Comment at: test/Analysis/CFNumber.c:39
+ unsigned char scalar = 0;
+ CFNumberGetValue(x, kCFNumberSInt16Type, &scalar); // expected-warning{{A CFNumber object that represents a 16-bit integer is used to initialize an 8-bit integer; 8 bits of the CFNumber value will overwrite adjacent storage}}
+ return scalar;
----------------
NoQ wrote:
> We're not sure from this code if the `CFNumber` object `x` actually represents a 16-bit integer, or somebody just misplaced the `kCFNumberSInt16Type` thing. I think the warning message could be made more precise in this sence, but i'm not good at coming up with warning messages.
>
> Hmm, there could actually be a separate check for detecting inconsistent type specifiers used for accessing the same CFNumber object.
I see your point. Looks like we'd need to modify both first part of the sentence and the second to address this concern. We could do something like "A CFNumber object treated as if it represents a 16-bit integer is used to initialize an 8-bit integer; 8 bits of the CFNumber value or the adjacent storage will overwrite adjacent storage of the integer".
Though this is more correct, I do not think it's worth the new language complexity. Also, the warning message is already quite long.
https://reviews.llvm.org/D25876
More information about the cfe-commits
mailing list