Mercurial Hosting > luan
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 )