minetest/src
JosiahWI 8e5bd82c4d
fix integer overflow in mapgen (#11641)
* fix integer overflow in mapgen

Some calculations involving the magic seed had overflow because the result of an intermediate arithmetic step could not fit in an s32. By making the magic seed unsigned, the other operand in the equation will be cast to unsigned, and possibly other operands or intermediate operands. This will result in unexpected behavior if an operand is negative, which is technically possible, but logically should not happen.

* comment noise2d bitshift

While working through the code I was momentarily concerned that the right bitshift in noise2d could fill ones in some cases. It turns out that with signed integers, this is indeed true, but this one is shifting an unsigned integer, so the behavior is as expected. I put a comment here to clarify this, in case someone else wonders the same thing down the line.

* noise2d and noise3d unittests

I have added 3 tests each for noise2d and noise3d, testing all zero inputs, a very large seed (case which caused UB in the old implementation) and some fun primes I picked for no particular reason. This should be sufficient to demonstrate that the behavior of the new implementation has not changed. I used uniform initialization because it is a good feature of C++11. Please do not explode.

* uncomment the noise2d bitshift

This reverts commit 583b77ee9f1ad6bb77340ebb5ba51eb9a88ff51c. It's a
well-defined language semantic; it doesn't need to be commented.

* code cleanliness
2022-06-03 20:51:58 -04:00
..
benchmark Add benchmarks for json string serialize/deserialize (#12258) 2022-05-06 21:17:16 +01:00
client Properly keep noclip state in Game and ClientMap 2022-06-03 21:48:52 +02:00
content Deprecate game.conf name, use title instead (#12030) 2022-05-21 16:23:30 +01:00
database Deal with compiler warnings 2022-04-30 16:49:41 +02:00
gui Improve a translation string 2022-05-29 14:00:19 +02:00
irrlicht_changes Fixes needed to use irrArray backed by std::vector (#12263) 2022-05-22 00:11:49 +02:00
mapgen fix integer overflow in mapgen (#11641) 2022-06-03 20:51:58 -04:00
network Make logging cost free when there is no output target (#12247) 2022-05-04 20:55:01 +02:00
script Add helper functions to make tool usable n times (#12047) 2022-06-03 21:47:04 +02:00
server Handle lua entity HP changes correctly (like punches) 2022-05-29 14:00:19 +02:00
threading Fix synchronization issue at thread start 2022-05-02 20:54:55 +02:00
unittest fix integer overflow in mapgen (#11641) 2022-06-03 20:51:58 -04:00
util Optimize JSON string (de)serialization routines 2022-05-21 17:46:10 +02:00
activeobject.h Removed some obsolete code (#10562) 2021-01-21 18:17:09 +00:00
activeobjectmgr.h Add nametag background setting and object property (#10937) 2021-02-17 19:51:28 +00:00
ban.cpp Add unittests on ActiveObject and BanManager class (#6866) 2018-01-01 18:48:52 +01:00
ban.h C++ modernize: Pragma once (#6264) 2017-08-17 22:19:39 +02:00
chat_interface.h C++ modernize: Pragma once (#6264) 2017-08-17 22:19:39 +02:00
chat.cpp Remove a few unused functions reported by callcatcher (#11658) 2021-10-12 20:12:20 +02:00
chat.h Remove a few unused functions reported by callcatcher (#11658) 2021-10-12 20:12:20 +02:00
chatmessage.h Travis: Update clang from 4.0 to 5.0 (#6467) 2017-10-09 11:32:06 +02:00
clientiface.cpp Clean up some auth packet handling related code 2022-04-28 20:05:26 +02:00
clientiface.h Fix password changing getting stuck if wrong password is entered once 2022-04-28 19:55:36 +02:00
cmake_config_githash.h.in C++ modernize: Pragma once (#6264) 2017-08-17 22:19:39 +02:00
cmake_config.h.in Add benchmarks for json string serialize/deserialize (#12258) 2022-05-06 21:17:16 +01:00
CMakeLists.txt Fix linking with Postgres libs on older cmake versions 2022-05-29 14:00:19 +02:00
collision.cpp Spacing fixes 2022-04-08 14:55:21 +01:00
collision.h Expose collided objects in moveresult 2020-05-06 14:03:52 +02:00
config.h Remove duplication in config.h 2022-04-08 14:55:21 +01:00
constants.h Raise max mapgen limit constant to align with mapblock size 2022-01-30 13:49:26 +01:00
content_mapnode.cpp Modernize src/c* src/d* and src/e* files (#6263) 2017-08-17 23:02:50 +02:00
content_mapnode.h C++ modernize: Pragma once (#6264) 2017-08-17 22:19:39 +02:00
content_nodemeta.cpp (se)SerializeString: Include max length in the name 2020-10-01 09:52:59 +02:00
content_nodemeta.h C++ modernize: Pragma once (#6264) 2017-08-17 22:19:39 +02:00
convert_json.cpp Sort out cURL timeouts and increase default 2021-04-02 00:19:39 +02:00
convert_json.h Sort out cURL timeouts and increase default 2021-04-02 00:19:39 +02:00
craftdef.cpp Fix cooking and fuel crafts with aliases 2022-05-10 22:37:05 +02:00
craftdef.h Clean up craft replacements docs 2019-12-07 23:46:24 +01:00
daynightratio.h Make natural night light as bright as MT 0.4.16 (#9053) 2019-10-18 21:54:44 +01:00
debug.cpp Fix some misspellings (#8104) 2019-01-16 13:39:13 +01:00
debug.h Remove DSTACK support (#6346) 2017-08-30 08:09:41 +02:00
defaultsettings.cpp Improve shadow filters (#12195) 2022-05-21 16:49:30 +02:00
defaultsettings.h Settings: Proper priority hierarchy 2021-01-29 17:32:35 +01:00
emerge.cpp Add more Prometheus metrics (#12274) 2022-05-09 21:20:58 +02:00
emerge.h Add more Prometheus metrics (#12274) 2022-05-09 21:20:58 +02:00
environment.cpp Abort raycasts that go out-of-bounds (#12006) 2022-01-30 21:31:18 +01:00
environment.h Allow the ABM time budget to be configurable. 2020-08-18 16:04:32 -07:00
exceptions.h Remove dead code (#10845) 2021-01-22 15:09:26 +00:00
face_position_cache.cpp Modernize various files 2017-08-18 07:44:52 +02:00
face_position_cache.h C++ modernize: Pragma once (#6264) 2017-08-17 22:19:39 +02:00
filesys.cpp Socket-related cleanups 2021-12-29 23:01:26 +01:00
filesys.h Move instead of copy during content install if possible 2021-10-07 00:20:01 +02:00
gamedef.h Refactor some Lua API functions in preparation for async env 2022-05-02 20:54:55 +02:00
gameparams.h Cleanup ClientLauncher structure (#10160) 2020-07-14 19:10:37 +02:00
gettext.cpp Gettext support on Android (#11435) 2021-08-08 18:59:07 +02:00
gettext.h Fix various code & correctness issues (#11815) 2021-12-05 14:40:30 +01:00
gettime.h Refactor local time getter functions (#12221) 2022-04-28 18:53:33 +02:00
httpfetch.cpp Print announce error response (#11878) 2022-01-01 22:44:56 +01:00
httpfetch.h Print announce error response (#11878) 2022-01-01 22:44:56 +01:00
hud.cpp Readd basic_debug as a HUD flag (#12020) 2022-03-05 22:16:17 +01:00
hud.h Readd basic_debug as a HUD flag (#12020) 2022-03-05 22:16:17 +01:00
inventory.cpp Fix the documentation of InvRef:get_lists() and clean up code (#12150) 2022-03-29 18:06:16 +02:00
inventory.h Fix the documentation of InvRef:get_lists() and clean up code (#12150) 2022-03-29 18:06:16 +02:00
inventorymanager.cpp Spacing fixes 2022-04-08 14:55:21 +01:00
inventorymanager.h Fix inventory swapping not calling all callbacks (#9923) 2020-09-04 20:49:07 +02:00
irr_aabb3d.h Revert 6587 - Optimize entity-entity collision (#7539) 2018-07-08 21:30:55 +01:00
irr_ptr.h Improve irr_ptr (#10808) 2021-01-24 14:40:34 +00:00
irr_v2d.h C++ modernize: Pragma once (#6264) 2017-08-17 22:19:39 +02:00
irr_v3d.h Revert 6587 - Optimize entity-entity collision (#7539) 2018-07-08 21:30:55 +01:00
irrlichttypes_bloated.h C++ modernize: Pragma once (#6264) 2017-08-17 22:19:39 +02:00
irrlichttypes_extrabloated.h Use true pitch/yaw/roll rotations without loss of precision by pgimeno (#8019) 2019-02-07 21:26:06 +00:00
irrlichttypes.h Irrlicht support code maintenance 2021-03-31 13:15:47 +02:00
itemdef.cpp Use place_param2 client-side for item appearance & prediction (#11024) 2021-03-09 00:56:53 +01:00
itemdef.h Use place_param2 client-side for item appearance & prediction (#11024) 2021-03-09 00:56:53 +01:00
itemgroup.h C++ modernize: Pragma once (#6264) 2017-08-17 22:19:39 +02:00
itemstackmetadata.cpp Make sure relevant std::stringstreams are set to binary 2021-09-11 21:06:57 +02:00
itemstackmetadata.h Add player:get_meta(), deprecate player attributes (#7202) 2018-04-06 10:52:29 +02:00
light.cpp Fix light overflow of u8 if light is saturated at 255 (#10305) 2020-08-23 15:39:55 +02:00
light.h Light curve: Simplify and improve code, fix darkened daytime sky (#7693) 2018-09-16 17:59:42 +01:00
lighting.h Add API to control shadow intensity from the game/mod (#11944) 2022-03-26 16:58:26 +01:00
log.cpp Add missing concurrency protection in logger (#12325) 2022-05-23 22:50:25 +02:00
log.h Add missing concurrency protection in logger (#12325) 2022-05-23 22:50:25 +02:00
main.cpp Add benchmarks for json string serialize/deserialize (#12258) 2022-05-06 21:17:16 +01:00
map_settings_manager.cpp Mainmenu game-related changes (#11887) 2022-01-09 21:15:35 +01:00
map_settings_manager.h Rework Settings to support arbitrary hierarchies (#11352) 2021-06-23 15:22:31 +02:00
map.cpp Use unordered_map instead of map for MapSectors 2022-05-23 22:50:49 +02:00
map.h Use unordered_map instead of map for MapSectors 2022-05-23 22:50:49 +02:00
mapblock.cpp Get rid of global buffer that would ruin concurrent MapBlock serialization 2022-05-26 15:49:12 +02:00
mapblock.h Raise max mapgen limit constant to align with mapblock size 2022-01-30 13:49:26 +01:00
mapnode.cpp Reduce size of ContentFeatures structure 2022-05-26 15:49:12 +02:00
mapnode.h Switch MapBlock compression to zstd (#10788) 2021-08-31 17:32:31 -07:00
mapsector.cpp ServerMap saving: cleanups (#6274) 2017-08-19 11:29:46 +02:00
mapsector.h Minor clientmap improvements. 2020-10-19 09:31:09 -07:00
metadata.cpp Add player:get_meta(), deprecate player attributes (#7202) 2018-04-06 10:52:29 +02:00
metadata.h Add player:get_meta(), deprecate player attributes (#7202) 2018-04-06 10:52:29 +02:00
modchannels.cpp Move the codebase to C++14 2022-02-26 14:39:41 +01:00
modchannels.h Add session_t typedef + remove unused functions (#6470) 2017-09-27 19:47:36 +02:00
modifiedstate.h C++ modernize: Pragma once (#6264) 2017-08-17 22:19:39 +02:00
mtevent.h Darwin platform build fix (#10376) 2020-09-09 19:12:03 +02:00
nameidmapping.cpp (se)SerializeString: Include max length in the name 2020-10-01 09:52:59 +02:00
nameidmapping.h C++ modernize: Pragma once (#6264) 2017-08-17 22:19:39 +02:00
nodedef.cpp Map opaque waving leaves to allfaces drawtype 2022-05-29 14:00:19 +02:00
nodedef.h Reduce size of ContentFeatures structure 2022-05-26 15:49:12 +02:00
nodemetadata.cpp Send to clients node metadata that changed to become empty (#11597) 2021-09-10 23:16:34 +02:00
nodemetadata.h Send to clients node metadata that changed to become empty (#11597) 2021-09-10 23:16:34 +02:00
nodetimer.cpp Code modernization: src/n*, src/o* (#6280) 2017-08-19 11:30:46 +02:00
nodetimer.h Code modernization: src/n*, src/o* (#6280) 2017-08-19 11:30:46 +02:00
noise.cpp fix integer overflow in mapgen (#11641) 2022-06-03 20:51:58 -04:00
noise.h Remove a few unused functions reported by callcatcher (#11658) 2021-10-12 20:12:20 +02:00
objdef.cpp Allow ObjDefManager instances to be cloned 2020-05-05 19:26:59 +02:00
objdef.h Fix remaining issues with mapgen scriptapi 2020-05-05 19:26:59 +02:00
object_properties.cpp Add no_texture.png as fallback for unspecified textures 2021-10-20 21:50:16 +02:00
object_properties.h Validate staticdata and object property length limits (#11511) 2021-08-19 20:14:22 +02:00
particles.cpp (se)SerializeString: Include max length in the name 2020-10-01 09:52:59 +02:00
particles.h Implement spawning particles with node texture appearance 2020-05-23 22:52:21 +02:00
pathfinder.cpp Reserve vectors before pushing and other code quality changes (#11161) 2021-04-05 13:38:31 +02:00
pathfinder.h Reduce ServerEnvironment propagation (#9642) 2020-04-11 19:59:43 +02:00
player.cpp Readd basic_debug as a HUD flag (#12020) 2022-03-05 22:16:17 +01:00
player.h Restore pass-through of direction keys (#11924) 2022-01-09 18:46:36 +01:00
porting_android.cpp Use scoped app storage on Android (#11466) 2021-10-15 18:14:48 +02:00
porting_android.h Add open user data button to main menu (#10579) 2020-12-19 13:27:15 +00:00
porting.cpp Treat empty XDG_CACHE_HOME same as unset 2022-04-08 14:55:21 +01:00
porting.h Slap u64 on everything time-y (#10984) 2021-02-24 12:05:17 +01:00
profiler.cpp Minor profiler fixes. 2020-12-23 14:48:08 -08:00
profiler.h Better F6 profiler (#8750) 2019-08-13 19:56:55 +02:00
raycast.cpp Ease selection of entities behind nodes (#7739) 2018-10-26 19:23:33 +02:00
raycast.h C++ modernize: Pragma once (#6264) 2017-08-17 22:19:39 +02:00
reflowscan.cpp Node definition manager refactor (#7016) 2018-02-10 21:04:16 +01:00
reflowscan.h Node definition manager refactor (#7016) 2018-02-10 21:04:16 +01:00
remoteplayer.cpp Fix consistency of sky sun/moon texture behaviour 2022-01-22 11:18:34 -05:00
remoteplayer.h Add API to control shadow intensity from the game/mod (#11944) 2022-03-26 16:58:26 +01:00
rollback_interface.cpp Fix some reference counters (memleak) (#8981) 2019-09-24 19:05:28 +02:00
rollback_interface.h Code modernization: src/p*, src/q*, src/r*, src/s* (partial) (#6282) 2017-08-19 14:25:35 +02:00
rollback.cpp Fix possible unreliable behavior due to uninitialized variables 2022-05-10 22:36:25 +02:00
rollback.h Remove a few unused functions reported by callcatcher (#11658) 2021-10-12 20:12:20 +02:00
serialization.cpp Fix compiler warnings 2022-04-08 14:55:21 +01:00
serialization.h Switch MapBlock compression to zstd (#10788) 2021-08-31 17:32:31 -07:00
server.cpp Optimize Server::sendMetadataChanged a bit 2022-05-29 14:00:19 +02:00
server.h Optimize Server::sendMetadataChanged a bit 2022-05-29 14:00:19 +02:00
serverenvironment.cpp Minor code improvements around active block keeping 2022-05-29 14:00:19 +02:00
serverenvironment.h Minor code improvements around active block keeping 2022-05-29 14:00:19 +02:00
serverlist.cpp Print announce error response (#11878) 2022-01-01 22:44:56 +01:00
serverlist.h Use JSON for favorites, move server list code to Lua (#10085) 2021-01-22 15:08:57 +00:00
settings_translation_file.cpp Fix typo and update settings files 2022-04-08 14:55:21 +01:00
settings.cpp Mainmenu game-related changes (#11887) 2022-01-09 21:15:35 +01:00
settings.h Mainmenu game-related changes (#11887) 2022-01-09 21:15:35 +01:00
skyparams.h Fix consistency of sky sun/moon texture behaviour 2022-01-22 11:18:34 -05:00
sound.h (se)SerializeString: Include max length in the name 2020-10-01 09:52:59 +02:00
staticobject.cpp Validate staticdata and object property length limits (#11511) 2021-08-19 20:14:22 +02:00
staticobject.h ServerEnvironment & StaticObject cleanups 2018-03-09 23:27:26 +01:00
terminal_chat_console.cpp Fix compiler warnings 2022-04-08 14:55:21 +01:00
terminal_chat_console.h C++ modernize: Pragma once (#6264) 2017-08-17 22:19:39 +02:00
texture_override.cpp Implement override.txt support for special tiles (#10140) 2020-08-04 20:12:47 +02:00
texture_override.h Implement override.txt support for special tiles (#10140) 2020-08-04 20:12:47 +02:00
tileanimation.cpp Proselytize the network. Use IEEE F32 (#8030) 2019-01-03 17:04:26 +01:00
tileanimation.h Bump minimal protocol version to 36 (#6319) 2017-08-29 19:26:55 +02:00
tool.cpp Add helper functions to make tool usable n times (#12047) 2022-06-03 21:47:04 +02:00
tool.h Add helper functions to make tool usable n times (#12047) 2022-06-03 21:47:04 +02:00
translation.cpp Fix a segfault caused by wrong textdomain lines in translation files (#11530) 2021-08-12 20:06:18 +02:00
translation.h Clean up server-side translations, remove global variable (#10075) 2020-09-16 14:51:11 +01:00
version.cpp Fully remove bitmap font support (#11863) 2022-01-08 14:53:25 +01:00
version.h C++ modernize: Pragma once (#6264) 2017-08-17 22:19:39 +02:00
voxel.cpp Node definition manager refactor (#7016) 2018-02-10 21:04:16 +01:00
voxel.h VoxelArea: add_{x,y,z,p} must be static 2018-03-09 23:27:26 +01:00
voxelalgorithms.cpp Reserve vectors before pushing and other code quality changes (#11161) 2021-04-05 13:38:31 +02:00
voxelalgorithms.h Reserve vectors before pushing and other code quality changes (#11161) 2021-04-05 13:38:31 +02:00