001
014
015 package com.liferay.portal.security.pacl.checker;
016
017 import com.liferay.portal.kernel.util.JavaDetector;
018
019 import java.security.AccessController;
020
021 import sun.reflect.Reflection;
022
023
026 public class CheckerUtil {
027
028 public static boolean isAccessControllerDoPrivileged(int frame) {
029 frame++;
030
031 Class<?> callerClass = Reflection.getCallerClass(frame);
032
033 if (callerClass != AccessController.class) {
034 return false;
035 }
036
037 Thread currentThread = Thread.currentThread();
038
039 StackTraceElement[] stackTraceElements = currentThread.getStackTrace();
040
041 if (JavaDetector.isIBM()) {
042 frame++;
043 }
044
045 StackTraceElement stackTraceElement = stackTraceElements[frame];
046
047 String methodName = stackTraceElement.getMethodName();
048
049 return methodName.equals(_METHOD_NAME_DO_PRIVILEGED);
050 }
051
052 private static final String _METHOD_NAME_DO_PRIVILEGED = "doPrivileged";
053
054 }