PRECISION.LOSS.CALLLoss of precision during function callThe PRECISION.LOSS checker finds instances in which an implicit cast to a smaller data type during a function call can cause a loss of precision in data. Vulnerability and riskDepending on the exact circumstances, this situation is potentially exploitable, for instance if it results in a buffer overflow. Mitigation and preventionIf the loss of precision cast is intentional, the source of the cast should be masked with an appropriate bitmask. For example: char c = (i & 0xFF); Vulnerable code example1 void foo(unsigned char v); 2 void test(unsigned long data){ 3 foo(data); 4 } Klocwork flags line 3, in which an unsigned long is converted to an unsigned char. Related checkers |