The Usual Suspects (Unbounded Copies)
gets(buf)— reads a line with no size limit. Never safe.strcpy(dst, src)— copies until a NUL byte, ignoresdstsize.sprintf(buf, fmt, ...)— formats with no length bound.strcat/memcpywith an attacker-controlled length.read(fd, buf, n)with the wrongn(bigger thanbuf).scanf("%s", buf)—%swith no field width.
Key Takeaway
The pattern to flag in review: a copy whose length comes from input or is a constant larger than the destination.