mirror of https://github.com/OpenTTD/OpenTTD
(svn r22952) -Fix: properly limit the length of strings in a choice list
parent
09c293d2ce
commit
babe53351e
|
@ -371,7 +371,9 @@ struct UnmappedChoiceList : ZeroedMemoryAllocator {
|
||||||
for (int i = 0; i < count; i++) {
|
for (int i = 0; i < count; i++) {
|
||||||
int idx = (this->type == SCC_GENDER_LIST ? lm->GetReverseMapping(i, true) : i + 1);
|
int idx = (this->type == SCC_GENDER_LIST ? lm->GetReverseMapping(i, true) : i + 1);
|
||||||
const char *str = this->strings[this->strings.Contains(idx) ? idx : 0];
|
const char *str = this->strings[this->strings.Contains(idx) ? idx : 0];
|
||||||
size_t len = strlen(str);
|
/* Limit the length of the string we copy to 0xFE. The length is written above
|
||||||
|
* as a byte and we need room for the final '\0'. */
|
||||||
|
size_t len = min(0xFE, strlen(str));
|
||||||
memcpy(d, str, len);
|
memcpy(d, str, len);
|
||||||
d += len;
|
d += len;
|
||||||
*d++ = '\0';
|
*d++ = '\0';
|
||||||
|
|
Loading…
Reference in New Issue