...
Optimized code produced by gcc GCC 3.4.6.
.
| Code Block | ||
|---|---|---|
| ||
#include <stdio.h>
int main()
{
short a[2];
a[0]=0x1111;
a[1]=0x1111;
printf("%x %x\n", a[0], a[1]);
return 0;
}
|
...
To fix the code above, you can use a union instead of a cast (note that this is a GCC extension which might not work with other compilers).
| Code Block | ||
|---|---|---|
| ||
#include <stdio.h>
int main()
{
union
{
short a[2];
int i;
}u;
u.a[0]=0x1111;
u.a[1]=0x1111;
u.i = 0x22222222;
printf("%x %x\n", u.a[0], u.a[1]);
return 0;
}
|
...
Rule | Severity | Likelihood | Remediation Cost | Priority | Level |
|---|---|---|---|---|---|
OBJ31-J | medium | probable | high low | P4 P12 | L3 L1 |
References
GCC Known Bugs C bugs, Aliasing issues while casting to incompatible types
...