#include "beware_overflow.h" void *beware_overflow(void *ptr, size_t nmemb, size_t size) { size_t res; if (__builtin_umull_overflow(nmemb, size, &res)) return NULL; char *r = ptr; return r + res; }