aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorrubenwardy <rw@rubenwardy.com>2021-10-25 21:36:28 +0100
committerrubenwardy <rw@rubenwardy.com>2021-10-25 21:39:40 +0100
commit8dfeba02b9f084ddd52090ccd906534200f468b3 (patch)
tree5eaed2fe714279516718a652b547cdc82a34f3d9 /src
parent4ee643f472067356599946345f48fe7f743e6f38 (diff)
downloadminetest-8dfeba02b9f084ddd52090ccd906534200f468b3.tar.gz
minetest-8dfeba02b9f084ddd52090ccd906534200f468b3.tar.bz2
minetest-8dfeba02b9f084ddd52090ccd906534200f468b3.zip
Fix crash on hypertext[] with not enough parts
The length check used < rather than <=, disabling the check when the formspec version matches the client's FORMSPEC_API_VERSION. Additionally, it was possible to have fewer parts than required if the formspec version was greater than the client's FORMSPEC_API_VERSION.
Diffstat (limited to 'src')
-rw-r--r--src/gui/guiFormSpecMenu.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/gui/guiFormSpecMenu.cpp b/src/gui/guiFormSpecMenu.cpp
index 938481fa2..1ce55673d 100644
--- a/src/gui/guiFormSpecMenu.cpp
+++ b/src/gui/guiFormSpecMenu.cpp
@@ -1730,8 +1730,9 @@ void GUIFormSpecMenu::parseHyperText(parserData *data, const std::string &elemen
{
std::vector<std::string> parts = split(element, ';');
- if (parts.size() != 4 && m_formspec_version < FORMSPEC_API_VERSION) {
- errorstream << "Invalid text element(" << parts.size() << "): '" << element << "'" << std::endl;
+ if (parts.size() != 4 &&
+ (parts.size() < 4 || m_formspec_version <= FORMSPEC_API_VERSION)) {
+ errorstream << "Invalid hypertext element(" << parts.size() << "): '" << element << "'" << std::endl;
return;
}