forked from Mirrorlandia_minetest/minetest
Check for valid base64 before decoding (#9904)
This commit is contained in:
parent
7ab0c0662a
commit
e79bc40c0a
@ -5449,7 +5449,7 @@ Misc.
|
||||
* Example: `minetest.rgba(10, 20, 30, 40)`, returns `"#0A141E28"`
|
||||
* `minetest.encode_base64(string)`: returns string encoded in base64
|
||||
* Encodes a string in base64.
|
||||
* `minetest.decode_base64(string)`: returns string
|
||||
* `minetest.decode_base64(string)`: returns string or nil for invalid base64
|
||||
* Decodes a string encoded in base64.
|
||||
* `minetest.is_protected(pos, name)`: returns boolean
|
||||
* Returning `true` restricts the player `name` from modifying (i.e. digging,
|
||||
|
@ -318,9 +318,13 @@ int ModApiUtil::l_decode_base64(lua_State *L)
|
||||
NO_MAP_LOCK_REQUIRED;
|
||||
|
||||
size_t size;
|
||||
const char *data = luaL_checklstring(L, 1, &size);
|
||||
const char *d = luaL_checklstring(L, 1, &size);
|
||||
const std::string data = std::string(d, size);
|
||||
|
||||
std::string out = base64_decode(std::string(data, size));
|
||||
if (!base64_is_valid(data))
|
||||
return 0;
|
||||
|
||||
std::string out = base64_decode(data);
|
||||
|
||||
lua_pushlstring(L, out.data(), out.size());
|
||||
return 1;
|
||||
|
Loading…
Reference in New Issue
Block a user