Planetfall foi lançado publicamente ontem, mas passei semanas no Infidel. Encontrei um bug egregious: um ponteiro selvagem que rabiscam a memória. A maioria considera trivial, mas como programador em C, vejo a corrupção de memória como o pior pecado.
Também é um bug do compilador. Infidel usa ENDLESS-DESERT para simular áreas não mapeadas. Itens abandonados vão para DESERT-TABLE com lat/long.
A rotina DESERT-TO-TABLE tem um bug onde falha em lidar corretamente com o argumento SLOC, causando corrupção de memória. O bug é difícil de detectar porque os itens têm uma chance de uma em três de serem perdidos na areia. Analisei o lançamento 22 do Infidel serial 840522 (atualização Macintosh); o lançamento original 830916 tem o mesmo bug.
A rotina escreve em DESERT-TABLE usando indexação incorreta, sobrescrevendo memória adjacente. Isso viola a segurança de memória apesar de impacto mínimo no jogo. A implementação da máquina Z revela o erro através de erros de aritmética de ponteiros no loop de atualização da tabela.
Fonte: Hacker News · Resumido por HeadlinesBriefing