Skip to content

Commit b5956bd

Browse files
committedJan 28, 2021
Sanitize ItemStack meta text
1 parent ed0882f commit b5956bd

File tree

1 file changed

+15
-2
lines changed

1 file changed

+15
-2
lines changed
 

Diff for: ‎src/itemstackmetadata.cpp

+15-2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ with this program; if not, write to the Free Software Foundation, Inc.,
2121
#include "itemstackmetadata.h"
2222
#include "util/serialize.h"
2323
#include "util/strfnd.h"
24+
#include <algorithm>
2425

2526
#define DESERIALIZE_START '\x01'
2627
#define DESERIALIZE_KV_DELIM '\x02'
@@ -37,10 +38,22 @@ void ItemStackMetadata::clear()
3738
updateToolCapabilities();
3839
}
3940

41+
static void sanitize_string(std::string &str)
42+
{
43+
str.erase(std::remove(str.begin(), str.end(), DESERIALIZE_START), str.end());
44+
str.erase(std::remove(str.begin(), str.end(), DESERIALIZE_KV_DELIM), str.end());
45+
str.erase(std::remove(str.begin(), str.end(), DESERIALIZE_PAIR_DELIM), str.end());
46+
}
47+
4048
bool ItemStackMetadata::setString(const std::string &name, const std::string &var)
4149
{
42-
bool result = Metadata::setString(name, var);
43-
if (name == TOOLCAP_KEY)
50+
std::string clean_name = name;
51+
std::string clean_var = var;
52+
sanitize_string(clean_name);
53+
sanitize_string(clean_var);
54+
55+
bool result = Metadata::setString(clean_name, clean_var);
56+
if (clean_name == TOOLCAP_KEY)
4457
updateToolCapabilities();
4558
return result;
4659
}

0 commit comments

Comments
 (0)
Please sign in to comment.