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"`
|
* Example: `minetest.rgba(10, 20, 30, 40)`, returns `"#0A141E28"`
|
||||||
* `minetest.encode_base64(string)`: returns string encoded in base64
|
* `minetest.encode_base64(string)`: returns string encoded in base64
|
||||||
* Encodes a string 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.
|
* Decodes a string encoded in base64.
|
||||||
* `minetest.is_protected(pos, name)`: returns boolean
|
* `minetest.is_protected(pos, name)`: returns boolean
|
||||||
* Returning `true` restricts the player `name` from modifying (i.e. digging,
|
* 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;
|
NO_MAP_LOCK_REQUIRED;
|
||||||
|
|
||||||
size_t size;
|
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());
|
lua_pushlstring(L, out.data(), out.size());
|
||||||
return 1;
|
return 1;
|
||||||
|
Loading…
Reference in New Issue
Block a user