-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathADS1SecurityManager.java
More file actions
163 lines (131 loc) · 3.2 KB
/
ADS1SecurityManager.java
File metadata and controls
163 lines (131 loc) · 3.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
package ads1ss13.pa;
import java.io.FileDescriptor;
import java.net.InetAddress;
import java.security.Permission;
/**
* SecurityManager für das ADS2 Framework.
*
* <p>
* <b>WICHTIG:</b> Nehmen Sie keine Änderungen in dieser Klasse vor. Bei
* der Abgabe werden diese Änderungen verworfen und es könnte dadurch
* passieren, dass Ihr Programm somit nicht mehr korrekt funktioniert.
* </p>
*/
public class ADS1SecurityManager extends SecurityManager {
static private Class<? extends Object> userclass = MKP.class;
@Override
public void checkPermission(Permission perm) {
for (Object x : this.getClassContext()) {
if (x.equals(userclass)) {
throw new SecurityException("setSecurityManager: " + x);
} else if (x.equals(Main.class)) {
return;
}
}
super.checkPermission(perm);
}
/**
* Erzeugt einen neuen SecurityManager
*
*/
public ADS1SecurityManager() {
super();
}
@Override
public void checkAccept(String arg0, int arg1) {
checkOrigin("ServerSocket.accept()");
}
@Override
public void checkAccess(Thread arg0) {
// checkOrigin("Thread access");
super.checkAccess(arg0);
}
@Override
public void checkAccess(ThreadGroup arg0) {
// checkOrigin("ThreadGroup access");
super.checkAccess(arg0);
}
@Override
public void checkConnect(String arg0, int arg1) {
checkOrigin("Socket.connect()");
}
@Override
public void checkConnect(String arg0, int arg1, Object arg2) {
checkOrigin("Socket.connect()");
}
@Override
public void checkCreateClassLoader() {
checkOrigin("Create ClassLoader");
}
@Override
public void checkDelete(String arg0) {
checkOrigin("File.delete()");
}
@Override
public void checkExec(String arg0) {
checkOrigin("Runtime.exec()");
}
@Override
public void checkExit(int status) {
checkOrigin("System.exit()");
}
@Override
public void checkLink(String arg0) {
checkOrigin("Runtime.load()/loadLibrary()");
}
@Override
public void checkListen(int arg0) {
checkOrigin("Listen to port");
}
@Override
public void checkMulticast(InetAddress arg0) {
checkOrigin("Multicast");
}
private void checkOrigin(String type) throws SecurityException {
for (Object x : this.getClassContext()) {
if (x.equals(userclass)) {
throw new SecurityException(type + ": " + x);
} else if (x.equals(Main.class)) {
return;
}
}
throw new SecurityException(type);
}
@Override
public void checkPrintJobAccess() {
checkOrigin("Print");
}
@Override
public void checkPropertiesAccess() {
checkOrigin("System.set/getProperties()");
}
@Override
public void checkPropertyAccess(String arg0) {
checkOrigin("System.getProperty(" + arg0 + ")");
}
@Override
public void checkRead(FileDescriptor arg0) {
}
@Override
public void checkRead(String arg0) {
}
@Override
public void checkRead(String arg0, Object arg1) {
}
@Override
public void checkSetFactory() {
checkOrigin("Set Socket/ServerSocket/URL Factory");
}
@Override
public void checkSystemClipboardAccess() {
checkOrigin("SystemClipboard access");
}
@Override
public void checkWrite(FileDescriptor arg0) {
checkOrigin("Write FileDescriptor");
}
@Override
public void checkWrite(String arg0) {
checkOrigin("Write File");
}
}