View Javadoc
1   package io.jawk.backend;
2   
3   /*-
4    * ╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲
5    * Jawk
6    * ჻჻჻჻჻჻
7    * Copyright (C) 2006 - 2026 MetricsHub
8    * ჻჻჻჻჻჻
9    * This program is free software: you can redistribute it and/or modify
10   * it under the terms of the GNU Lesser General Public License as
11   * published by the Free Software Foundation, either version 3 of the
12   * License, or (at your option) any later version.
13   *
14   * This program is distributed in the hope that it will be useful,
15   * but WITHOUT ANY WARRANTY; without even the implied warranty of
16   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17   * GNU General Lesser Public License for more details.
18   *
19   * You should have received a copy of the GNU General Lesser Public
20   * License along with this program.  If not, see
21   * <http://www.gnu.org/licenses/lgpl-3.0.html>.
22   * ╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱
23   */
24  
25  import java.util.Map;
26  import io.jawk.ext.JawkExtension;
27  import io.jawk.jrt.AwkSink;
28  import io.jawk.jrt.JRT;
29  import io.jawk.jrt.SandboxedJRT;
30  import io.jawk.util.AwkSettings;
31  
32  /**
33   * {@link AVM} variant enforcing sandbox restrictions at runtime.
34   */
35  public class SandboxedAVM extends AVM {
36  
37  	/**
38  	 * Creates a sandboxed AVM with the provided settings and extension instances.
39  	 *
40  	 * @param parameters Runtime settings to honor
41  	 * @param extensionInstances Available extension implementations
42  	 */
43  	public SandboxedAVM(AwkSettings parameters,
44  			Map<String, JawkExtension> extensionInstances) {
45  		this(parameters, extensionInstances, false);
46  	}
47  
48  	/**
49  	 * Creates a sandboxed AVM with the provided settings, extension instances, and
50  	 * profiling mode.
51  	 *
52  	 * @param parameters Runtime settings to honor
53  	 * @param extensionInstances Available extension implementations
54  	 * @param profilingEnabled Whether to collect profiling statistics
55  	 */
56  	public SandboxedAVM(
57  			AwkSettings parameters,
58  			Map<String, JawkExtension> extensionInstances,
59  			boolean profilingEnabled) {
60  		super(parameters, extensionInstances, profilingEnabled);
61  	}
62  
63  	@Override
64  	protected JRT createJrt() {
65  		AwkSettings s = getSettings();
66  		return new SandboxedJRT(this, s.getLocale(), AwkSink.NOP_SINK, null);
67  	}
68  
69  }