Skip to content
Snippets Groups Projects
  1. Dec 28, 2016
    • Jeija's avatar
      Luacontroller: Restrict digiline messages · 703e6fda
      Jeija authored
      Restrict maximum length of messages to 50.000 characters and disable sending functions or table references over the wire. Restrict types of channel variable to string, number or boolean.
      
      The missing length restriction made DoS-like attacks possible by overflowing memory using string concatenation. Thanks to gamemanj for disclosing this issue.
      703e6fda
  2. Dec 04, 2016
  3. Nov 17, 2016
  4. Sep 04, 2016
  5. Aug 31, 2016
    • Jeija's avatar
      Duplicate unhash_blockpos code to legacy.lua · 54efc645
      Jeija authored
      Duplicating that small piece of code seems like a better idea than
      putting the undo-forceloading code back into util.lua. This way, it is
      easier to remember to remove that unneccesary code after a couple of
      months / years, when people have transitioned. This also means we can
      make changes to the code in util.lua without breaking old code.
      54efc645
  6. Aug 30, 2016
  7. Aug 24, 2016
    • Christopher Head's avatar
      Simplify turnon/turnoff. · 8e6536ca
      Christopher Head authored
      It is no longer possible for get_node_force to return nil if the target
      location does, in fact, exist, because a VM will always be able to load
      it (whereas a forceload might not, due to exhaustion of forceload
      resources). So it is no longer necessary to handle get_node_force
      returning nil by deferring processing.
      8e6536ca
    • Christopher Head's avatar
      Use VM transactions for conductor state changes. · bc9d4c2d
      Christopher Head authored
      VoxelManipulator-based transactions are used to hopefully speed up
      scanning and replacing of networks of conductors when receptors start or
      stop driving signals into them.
      bc9d4c2d
    • Christopher Head's avatar
      Implement VoxelManipulator-based transactions. · 6d79272e
      Christopher Head authored
      Rather than calling out through the Lua-to-C API for each node that
      needs to be read or written, a group of map reads (and optionally
      writes) can be grouped into a transaction. Access to map data within the
      transaction is provided at high speed by means of VoxelManipulators.
      Once the reads and writes are finished, the transaction can be committed
      or aborted.
      6d79272e
    • Christopher Head's avatar
      Use VoxelManipulators for get_node_force. · 564cee34
      Christopher Head authored
      A VoxelManipulator, when asked to read a mapblock, in addition to making
      that mapblock available to the caller, also pulls it into the server’s
      map cache, thus making get_node calls in the immediate future succeed.
      
      This has the dual advantages that not every mapblock containing a
      Mesecons circuit need remain loaded at all times (rather mapblocks can
      be loaded on demand as signals are sent), and that the server need not
      bother running ABMs and ticking entities within those mapblocks that are
      loaded due to Mesecons signalling.
      564cee34
  8. Aug 23, 2016
    • Carter Kolwey's avatar
      Split wires into their own mod, introduce autoconnect hooks · 912f17f3
      Carter Kolwey authored
      The update_autoconnect function had to be abstracted away from the
      default wires, any kind of wire can now register autoconnect hooks,
      which should make having multiple different wire types much easier.
      
      mesecons_mvps, mesecons_receiver and mesecons_random made use of
      update_autoconnect, their code was also adapted. This also fixes a
      receiver bug: If a receiver was placed with a onstate receptor next
      to it (but not the wall lever / button that caused the receiver to
      appear) the receiver didn't turn on in the past.
      
      Also move documentation for mesecon wire into mesecons_wire.
      912f17f3
    • Carter Kolwey's avatar
  9. Aug 16, 2016
  10. Jul 31, 2016
  11. Jul 25, 2016
  12. Jul 09, 2016
  13. May 17, 2016
  14. May 16, 2016
  15. May 15, 2016
  16. Apr 26, 2016
  17. Apr 21, 2016
  18. Apr 02, 2016
    • Pedro Gimeno's avatar
      Disable JIT optimization for user code and allow string.find in plain mode · b487783c
      Pedro Gimeno authored
      Disabling LuaJIT for user code enables normal working of debug.sethook() even for loops. The drawback is that that code will run more slowly.
      
      The fourth parameter of string.find indicates whether the second parameter should be interpreted literally (true) or as a pattern (false). Allowing patterns enables DoS attacks, but it's possible to
      allow literal matching with little effort, by disallowing the function only if the fourth parameter (plain mode) is not `true`.
      b487783c
  19. Mar 14, 2016
  20. Mar 13, 2016
  21. Feb 28, 2016
  22. Feb 27, 2016
  23. Feb 23, 2016
  24. Feb 19, 2016
Loading