diff options
-rw-r--r-- | main_gui.c | 3 | ||||
-rw-r--r-- | misc_cmd.c | 5 |
2 files changed, 8 insertions, 0 deletions
diff --git a/main_gui.c b/main_gui.c index 03c4db845..787390870 100644 --- a/main_gui.c +++ b/main_gui.c @@ -87,6 +87,9 @@ void HandleOnEditText(WindowEvent *e) { // Give money int32 money = atoi(e->edittext.str) / GetCurrentCurrencyRate(); char msg[100]; + + money = clamp(money, 0, 0xFFFFFFFF); // Clamp between 4 billion and 0 + // Give 'id' the money, and substract it from ourself if (!DoCommandP(0, money, id, NULL, CMD_GIVE_MONEY)) break; diff --git a/misc_cmd.c b/misc_cmd.c index defba53ea..1ea3ffeef 100644 --- a/misc_cmd.c +++ b/misc_cmd.c @@ -285,6 +285,11 @@ int32 CmdGiveMoney(int x, int y, uint32 flags, uint32 p1, uint32 p2) { SET_EXPENSES_TYPE(EXPENSES_OTHER); + p1 = clamp(p1, 0, 0xFFFFFFFF); // Clamp between 4 billion and 0 + + if (p1 == 0) + return CMD_ERROR; + if (flags & DC_EXEC) { // Add money to player byte old_cp = _current_player; |