A função gets, da biblioteca padrão do C (stdio) pode gerar um grande problema para o programador que a usa: como essa função não limita o número de caracteres a serem lidos da entrada padrão (stdin), pode haver vazamento de memória, ou até pior, injeção de código malicioso no progreama.
A solução é usar fgets, que limita o buffer de leitura.