summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
inline | side by side (from parent 1:
41aed6b)
We're setting flags to flags_list[3] at the end of the loop, but the
array only has 3 elements. Unless the compiler optimises this away
(because flags will not be used again) we're accessing memory beyond
the end of the array.
With gcc-4.9:
chmode.c: In function 'set_channel_mode':
chmode.c:1548:54: warning: iteration 2u invokes undefined behavior [-Waggressive-loop-optimizations]
for(j = 0, flags = flags_list[0]; j < 3; j++, flags = flags_list[j])
^
chmode.c:1548:2: note: containing loop
for(j = 0, flags = flags_list[0]; j < 3; j++, flags = flags_list[j])
Explicitly set "flags = flags_list[j]" at the start of each loop
iteration, which will avoid referencing off the end of the array.
source_p->name, source_p->username,
source_p->host, chptr->chname);
source_p->name, source_p->username,
source_p->host, chptr->chname);
- for(j = 0, flags = flags_list[0]; j < 3; j++, flags = flags_list[j])
cur_len = mlen;
mbuf = modebuf + mlen;
pbuf = parabuf;
cur_len = mlen;
mbuf = modebuf + mlen;
pbuf = parabuf;