projects
/
open-adventure.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix off-by-one error that enabled the fuzzer to find a crash hole.
[open-adventure.git]
/
main.c
diff --git
a/main.c
b/main.c
index 92ee30391dfb7e9bf349fc906a76d5052ffeb8c4..b830d89ce187d94735f7041864563d48b0293380 100644
(file)
--- a/
main.c
+++ b/
main.c
@@
-1060,8
+1060,9
@@
L2607:
if (V1 == ENTER && WD2 > 0) {
WD1 = WD2;
WD1X = WD2X;
if (V1 == ENTER && WD2 > 0) {
WD1 = WD2;
WD1X = WD2X;
-
WD2 = 0
;
+
wordclear(&WD2)
;
} else {
} else {
+ /* FIXME: Magic numbers */
if (!((V1 != 1000 + WATER && V1 != 1000 + OIL) ||
(V2 != 1000 + PLANT && V2 != 1000 + DOOR))) {
if (AT(V2 - 1000))
if (!((V1 != 1000 + WATER && V1 != 1000 + OIL) ||
(V2 != 1000 + PLANT && V2 != 1000 + DOOR))) {
if (AT(V2 - 1000))
@@
-1071,12
+1072,12
@@
L2607:
WD1 = MAKEWD(WORD_CATCH);
}
L2620:
WD1 = MAKEWD(WORD_CATCH);
}
L2620:
- if (
WD1 == MAKEWD(WORD_WEST
)) {
+ if (
wordeq(WD1, MAKEWD(WORD_WEST)
)) {
++game.iwest;
if (game.iwest == 10)
RSPEAK(W_IS_WEST);
}
++game.iwest;
if (game.iwest == 10)
RSPEAK(W_IS_WEST);
}
- if (
WD1 == MAKEWD(WORD_GO) && WD2 != 0
) {
+ if (
wordeq(WD1, MAKEWD(WORD_GO)) && !wordempty(WD2)
) {
if (++igo == 10)
RSPEAK(GO_UNNEEDED);
}
if (++igo == 10)
RSPEAK(GO_UNNEEDED);
}
@@
-1133,7
+1134,7
@@
Laction:
/* Get second word for analysis. */
WD1 = WD2;
WD1X = WD2X;
/* Get second word for analysis. */
WD1 = WD2;
WD1X = WD2X;
-
WD2 = 0
;
+
wordclear(&WD2)
;
goto L2620;
case GO_UNKNOWN:
/* Random intransitive verbs come here. Clear obj just in case
goto L2620;
case GO_UNKNOWN:
/* Random intransitive verbs come here. Clear obj just in case