"gcc silently discards some wraparound checks" - оптимизатор GCC 4.2 убирает проверки целочисленного переполнения для указателей. Например, будет игнорирован код "char *buf; int len; if(buf+len < buf){". Для обхода проблемы нужно писать "if((uintptr_t)buf+len < (uintptr_t)buf)".
Дополнение: исчерпывающие описание проблемы на русском языке, от одного из разработчиков Samba.
|