diff src/luan/modules/Boot.luan @ 1330:f41919741100

fix security
author Franklin Schmidt <fschmidt@gmail.com>
date Mon, 11 Feb 2019 01:38:55 -0700
parents 307e76ccd0d6
children 643cf1c37723
line wrap: on
line diff
--- a/src/luan/modules/Boot.luan	Sun Feb 10 02:01:49 2019 -0700
+++ b/src/luan/modules/Boot.luan	Mon Feb 11 01:38:55 2019 -0700
@@ -5,11 +5,13 @@
 local new_error = BasicLuan.new_error
 local ipairs = BasicLuan.ipairs
 local set_metatable = BasicLuan.set_metatable
+local try = BasicLuan.try_
 local StringLuan = require "java:luan.modules.StringLuan"
 local match = StringLuan.match  -- String.match
 local IoLuan = require "java:luan.modules.IoLuan"
 local LuanUrl = require "java:luan.modules.url.LuanUrl"
-IoLuan.unrestricted()  -- not right
+local LuanJava = require "java:luan.Luan"
+local LuanTable = require "java:luan.LuanTable"
 
 
 local Boot = {}
@@ -20,6 +22,20 @@
 end
 Boot.error = error
 
+local function no_security(fn)
+	LuanJava.checkCallerSecurity("no_security")
+	return function(...)
+		local security = LuanJava.setSecurity(nil)
+		return try( {
+			fn
+			finally = function()
+				security and LuanJava.setSecurity(security)
+			end
+		}, ... )
+	end
+end
+Boot.no_security = no_security
+
 
 local function new_LuanIn(io)
 	local this = {}
@@ -69,6 +85,7 @@
 end
 
 local schemes = {}
+LuanTable.setSecurity(schemes,"schemes")
 
 function schemes.null(path)
 	return new_LuanIO( IoLuan.nullIO )