An open API service indexing awesome lists of open source software.

https://github.com/stscoundrel/gandhi-ai-bug

Demonstration of Nuclear Gandhi AI Bug
https://github.com/stscoundrel/gandhi-ai-bug

c cpp gandhi-ai-bug integer-overflow rust

Last synced: 4 months ago
JSON representation

Demonstration of Nuclear Gandhi AI Bug

Awesome Lists containing this project

README

          

# Gandhi AI bug

Demonstration of "Nuclear Gandhi" bug in C, C++ and Rust.

Nuclear Gandhi Bug is an urban legend from Civilizations game series. Supposedly, aggression of AI players was a value between 1 - 10 (or 1 - 12). Gandhi had the lowest value, 1, which should have made him peaceful. But once Gandhi gains "democracy" modifier of -2 to aggression, his final aggression ends up being -1. As the aggression was supposedly stored in an unsigned 8bit integer, this leads to integer overflow with value of 255. So Gandhi's aggression was supposedly 255 in scale of 1 - 10, making him quite trigger happy with nuclear bombs.

This urban legend has since been debunked by developers of original Civilizations games. Even if it is an urban legend, it is still one of the best known known examples of integer overflow.

## The test

- 8bit unsiged integer as Gandhi's "aggression"
- Adds value of "-2" to original value
- If value is unsigned 8bit integer, the final result should be 255 instead of -1.

## To run

Three versions to run:
- `yarn run:c`
- `yarn run:c++`
- `yarn run:rust`