From d18bee7fa0a8da8d977767b2f26549080063e3bf Mon Sep 17 00:00:00 2001
From: frodon1 <frodon1@gmail.com>
Date: Mon, 27 Feb 2017 21:31:21 +0100
Subject: [PATCH] Fix calls to check_player_privs with player name instead of
 player userdata

Fixes #357
---
 homedecor/handlers/inventory.lua |  6 +++---
 inbox/init.lua                   |  4 ++--
 itemframes/init.lua              | 24 ++++++++++++++----------
 3 files changed, 19 insertions(+), 15 deletions(-)

diff --git a/homedecor/handlers/inventory.lua b/homedecor/handlers/inventory.lua
index 4db9892..62269e6 100644
--- a/homedecor/handlers/inventory.lua
+++ b/homedecor/handlers/inventory.lua
@@ -119,7 +119,7 @@ function homedecor.handle_inventory(name, def, original_def)
 			local playername = player:get_player_name()
 
 			if playername == owner or
-					minetest.check_player_privs(player, "protection_bypass") then
+					minetest.check_player_privs(playername, "protection_bypass") then
 				return allow_move and
 						allow_move(pos, from_list, from_index, to_list, to_index, count, player) or
 						count
@@ -138,7 +138,7 @@ function homedecor.handle_inventory(name, def, original_def)
 			local playername = player:get_player_name()
 
 			if playername == owner or
-					minetest.check_player_privs(player, "protection_bypass") then
+					minetest.check_player_privs(playername, "protection_bypass") then
 				return allow_put and allow_put(pos, listname, index, stack, player) or
 						stack:get_count()
 			end
@@ -156,7 +156,7 @@ function homedecor.handle_inventory(name, def, original_def)
 			local playername = player:get_player_name()
 
 			if playername == owner or
-					minetest.check_player_privs(player, "protection_bypass") then
+					minetest.check_player_privs(playername, "protection_bypass") then
 				return allow_take and allow_take(pos, listname, index, stack, player) or
 						stack:get_count()
 			end
diff --git a/inbox/init.lua b/inbox/init.lua
index 3de7a3c..280edf2 100644
--- a/inbox/init.lua
+++ b/inbox/init.lua
@@ -52,12 +52,12 @@ minetest.register_node("inbox:empty", {
 				minetest.check_player_privs(player, "protection_bypass") and
 				clicker:get_player_control().aux1 then
 			minetest.show_formspec(
-				clicker:get_player_name(),
+				player,
 				"inbox:mailbox",
 				inbox.get_inbox_formspec(pos))
 		else
 			minetest.show_formspec(
-				clicker:get_player_name(),
+				player,
 				"inbox:mailbox",
 				inbox.get_inbox_insert_formspec(pos))
 		end
diff --git a/itemframes/init.lua b/itemframes/init.lua
index a6561e1..0593d87 100644
--- a/itemframes/init.lua
+++ b/itemframes/init.lua
@@ -129,8 +129,9 @@ minetest.register_node("itemframes:frame",{
 	on_rightclick = function(pos, node, clicker, itemstack)
 		if not itemstack then return end
 		local meta = minetest.get_meta(pos)
-		if clicker:get_player_name() == meta:get_string("owner") or
-				minetest.check_player_privs(clicker, "protection_bypass") then
+		local name = clicker and clicker:get_player_name()
+		if name == meta:get_string("owner") or
+				minetest.check_player_privs(name, "protection_bypass") then
 			drop_item(pos,node)
 			local s = itemstack:take_item()
 			meta:set_string("item",s:to_string())
@@ -140,8 +141,9 @@ minetest.register_node("itemframes:frame",{
 	end,
 	on_punch = function(pos,node,puncher)
 		local meta = minetest.get_meta(pos)
-		if puncher:get_player_name() == meta:get_string("owner") or
-				minetest.check_player_privs(puncher, "protection_bypass") then
+		local name = puncher and puncher:get_player_name()
+		if name == meta:get_string("owner") or
+				minetest.check_player_privs(name, "protection_bypass") then
 			drop_item(pos, node)
 		end
 	end,
@@ -150,7 +152,7 @@ minetest.register_node("itemframes:frame",{
 		local name = player and player:get_player_name()
 		local meta = minetest.get_meta(pos)
 		return name == meta:get_string("owner") or
-				minetest.check_player_privs(player, "protection_bypass")
+				minetest.check_player_privs(name, "protection_bypass")
 	end,
 	on_destruct = function(pos)
 		local meta = minetest.get_meta(pos)
@@ -190,8 +192,9 @@ minetest.register_node("itemframes:pedestal",{
 	on_rightclick = function(pos, node, clicker, itemstack)
 		if not itemstack then return end
 		local meta = minetest.get_meta(pos)
-		if clicker:get_player_name() == meta:get_string("owner") or
-				minetest.check_player_privs(clicker, "protection_bypass") then
+		local name = clicker and clicker:get_player_name()
+		if name == meta:get_string("owner") or
+				minetest.check_player_privs(name, "protection_bypass") then
 			drop_item(pos,node)
 			local s = itemstack:take_item()
 			meta:set_string("item",s:to_string())
@@ -201,8 +204,9 @@ minetest.register_node("itemframes:pedestal",{
 	end,
 	on_punch = function(pos,node,puncher)
 		local meta = minetest.get_meta(pos)
-		if puncher:get_player_name() == meta:get_string("owner") or
-				minetest.check_player_privs(puncher, "protection_bypass") then
+		local name = puncher and puncher:get_player_name()
+		if name == meta:get_string("owner") or
+				minetest.check_player_privs(name, "protection_bypass") then
 			drop_item(pos,node)
 		end
 	end,
@@ -211,7 +215,7 @@ minetest.register_node("itemframes:pedestal",{
 		local name = player and player:get_player_name()
 		local meta = minetest.get_meta(pos)
 		return name == meta:get_string("owner") or
-				minetest.check_player_privs(player, "protection_bypass")
+				minetest.check_player_privs(name, "protection_bypass")
 	end,
 	on_destruct = function(pos)
 		local meta = minetest.get_meta(pos)