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]
/
misc.c
diff --git
a/misc.c
b/misc.c
index ba834fdffd44b84cef98268a2e2cbadc8dea63b2..71c7540669b2b3b8e178220360a89dd4cb8b9ea6 100644
(file)
--- a/
misc.c
+++ b/
misc.c
@@
-50,6
+50,18
@@
void packed_to_token(long packed, char token[6])
}
}
}
}
+void token_to_packed(char token[6], long* packed)
+{
+ *packed = 0;
+ for (size_t i = 0; i < 5; ++i)
+ {
+ if (token[4 - i] == '\0')
+ continue;
+ char mapped = ascii_to_advent[(int) token[4 - i]];
+ *packed |= (mapped << (6 * i));
+ }
+}
+
/* Hide the fact that wods are corrently packed longs */
bool wordeq(token_t a, token_t b)
/* Hide the fact that wods are corrently packed longs */
bool wordeq(token_t a, token_t b)
@@
-279,7
+291,7
@@
bool YES(const char* question, const char* yes_response, const char* no_response
reply = get_input();
reply = get_input();
- char* firstword = (char*) xmalloc(strlen(reply));
+ char* firstword = (char*) xmalloc(strlen(reply)
+1
);
sscanf(reply, "%s", firstword);
for (int i = 0; i < (int)strlen(firstword); ++i)
sscanf(reply, "%s", firstword);
for (int i = 0; i < (int)strlen(firstword); ++i)