From 5a0492b176fa6f01925c87a8ad22034a5ed66155 Mon Sep 17 00:00:00 2001
From: SmallJoker <SmallJoker@users.noreply.github.com>
Date: Mon, 23 Jul 2018 13:00:59 +0200
Subject: Check protection on microcontroller programming (#420)

Also, fix globals assignment.
---
 mesecons_microcontroller/init.lua | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/mesecons_microcontroller/init.lua b/mesecons_microcontroller/init.lua
index 46272b9..9b1bf3b 100644
--- a/mesecons_microcontroller/init.lua
+++ b/mesecons_microcontroller/init.lua
@@ -103,6 +103,12 @@ minetest.register_node(nodename, {
 		meta:set_string("eeprom", r)
 	end,
 	on_receive_fields = function(pos, formanme, fields, sender)
+		local player_name = sender:get_player_name()
+		if minetest.is_protected(pos, player_name) and
+				not minetest.check_player_privs(player_name, {protection_bypass=true}) then
+			minetest.record_protection_violation(pos, player_name)
+			return
+		end
 		local meta = minetest.get_meta(pos)
 		if fields.band then
 			fields.code = "sbi(C, A&B) :A and B are inputs, C is output"
@@ -272,7 +278,7 @@ yc.parsecode = function(code, pos)
 end
 
 yc.parse_get_command = function(code, starti)
-	i = starti
+	local i = starti
 	local s
 	while s ~= "" do
 		s = string.sub(code, i, i)
@@ -298,7 +304,7 @@ yc.parse_get_command = function(code, starti)
 end
 
 yc.parse_get_params = function(code, starti)
-	i = starti
+	local i = starti
 	local s
 	local params = {}
 	local is_string = false
@@ -321,7 +327,7 @@ yc.parse_get_params = function(code, starti)
 end
 
 yc.parse_get_eeprom_param = function(cond, starti)
-	i = starti
+	local i = starti
 	local s
 	local addr
 	while s ~= "" do
@@ -488,7 +494,7 @@ end
 
 --Condition parsing
 yc.command_if_getcondition = function(code, starti)
-	i = starti
+	local i = starti
 	local s
 	local brackets = 1 --1 Bracket to close
 	while s ~= "" do
-- 
cgit v1.2.3