< prev index next >

src/java.base/share/classes/java/io/FilePermission.java

Print this page
rev 56150 : [mq]: 8230415-Avoid-redundant-permission-checking-in-FilePermissionCollection-and-SocketPermissionCollection


1179      * the set, false if not.
1180      */
1181     @Override
1182     public boolean implies(Permission permission) {
1183         if (! (permission instanceof FilePermission))
1184             return false;
1185 
1186         FilePermission fperm = (FilePermission) permission;
1187 
1188         int desired = fperm.getMask();
1189         int effective = 0;
1190         int needed = desired;
1191 
1192         for (Permission perm : perms.values()) {
1193             FilePermission fp = (FilePermission)perm;
1194             if (((needed & fp.getMask()) != 0) && fp.impliesIgnoreMask(fperm)) {
1195                 effective |= fp.getMask();
1196                 if ((effective & desired) == desired) {
1197                     return true;
1198                 }
1199                 needed = (desired ^ effective);
1200             }
1201         }
1202         return false;
1203     }
1204 
1205     /**
1206      * Returns an enumeration of all the FilePermission objects in the
1207      * container.
1208      *
1209      * @return an enumeration of all the FilePermission objects.
1210      */
1211     @Override
1212     public Enumeration<Permission> elements() {
1213         return perms.elements();
1214     }
1215 
1216     @java.io.Serial
1217     private static final long serialVersionUID = 2202956749081564585L;
1218 
1219     // Need to maintain serialization interoperability with earlier releases,




1179      * the set, false if not.
1180      */
1181     @Override
1182     public boolean implies(Permission permission) {
1183         if (! (permission instanceof FilePermission))
1184             return false;
1185 
1186         FilePermission fperm = (FilePermission) permission;
1187 
1188         int desired = fperm.getMask();
1189         int effective = 0;
1190         int needed = desired;
1191 
1192         for (Permission perm : perms.values()) {
1193             FilePermission fp = (FilePermission)perm;
1194             if (((needed & fp.getMask()) != 0) && fp.impliesIgnoreMask(fperm)) {
1195                 effective |= fp.getMask();
1196                 if ((effective & desired) == desired) {
1197                     return true;
1198                 }
1199                 needed = (desired & ~effective);
1200             }
1201         }
1202         return false;
1203     }
1204 
1205     /**
1206      * Returns an enumeration of all the FilePermission objects in the
1207      * container.
1208      *
1209      * @return an enumeration of all the FilePermission objects.
1210      */
1211     @Override
1212     public Enumeration<Permission> elements() {
1213         return perms.elements();
1214     }
1215 
1216     @java.io.Serial
1217     private static final long serialVersionUID = 2202956749081564585L;
1218 
1219     // Need to maintain serialization interoperability with earlier releases,


< prev index next >