本文整理汇总了Java中org.apache.bcel.generic.LDC类的典型用法代码示例。如果您正苦于以下问题:Java LDC类的具体用法?Java LDC怎么用?Java LDC使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
LDC类属于org.apache.bcel.generic包,在下文中一共展示了LDC类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: visitLDC
import org.apache.bcel.generic.LDC; //导入依赖的package包/类
@Override
public void visitLDC(LDC ldc) {
Taint taint = new Taint(Taint.State.SAFE);
Object value = ldc.getValue(cpg);
if (value instanceof String) {
taint.setConstantValue((String) value);
}
if (FindSecBugsGlobalConfig.getInstance().isDebugTaintState()) {
if (value instanceof String) {
taint.setDebugInfo("\"" + value + "\"");
} else {
taint.setDebugInfo("LDC " + ldc.getType(cpg).getSignature());
}
}
getFrame().pushValue(taint);
}
示例2: analyzeMethod
import org.apache.bcel.generic.LDC; //导入依赖的package包/类
private void analyzeMethod(Method m, ClassContext classContext) throws CFGBuilderException, DataflowAnalysisException {
ConstantPoolGen cpg = classContext.getConstantPoolGen();
CFG cfg = classContext.getCFG(m);
for (Iterator<Location> i = cfg.locationIterator(); i.hasNext(); ) {
Location location = i.next();
Instruction inst = location.getHandle().getInstruction();
if (inst instanceof LDC) {
LDC ldc = (LDC) inst;
if (ldc != null) {
if("java.naming.security.authentication".equals(ldc.getValue(cpg)) &&
"none".equals(ByteCode.getConstantLDC(location.getHandle().getNext(), cpg, String.class))){
JavaClass clz = classContext.getJavaClass();
bugReporter.reportBug(new BugInstance(this, LDAP_ANONYMOUS, Priorities.LOW_PRIORITY) //
.addClass(clz)
.addMethod(clz, m)
.addSourceLine(classContext, m, location));
break;
}
}
}
}
}
示例3: updateStringAppendState
import org.apache.bcel.generic.LDC; //导入依赖的package包/类
private StringAppendState updateStringAppendState(Location location, ConstantPoolGen cpg, StringAppendState stringAppendState)
{
InstructionHandle handle = location.getHandle();
Instruction ins = handle.getInstruction();
if (!isConstantStringLoad(location, cpg)) {
throw new IllegalArgumentException("instruction must be LDC");
}
LDC load = (LDC) ins;
Object value = load.getValue(cpg);
String stringValue = ((String) value).trim();
if (stringValue.startsWith(",") || stringValue.endsWith(","))
stringAppendState.setSawComma(handle);
if (isCloseQuote(stringValue) && stringAppendState.getSawOpenQuote(handle))
stringAppendState.setSawCloseQuote(handle);
if (isOpenQuote(stringValue))
stringAppendState.setSawOpenQuote(handle);
return stringAppendState;
}
示例4: isSafeValue
import org.apache.bcel.generic.LDC; //导入依赖的package包/类
private boolean isSafeValue(Location location, ConstantPoolGen cpg) throws CFGBuilderException {
Instruction prevIns = location.getHandle().getInstruction();
if (prevIns instanceof LDC || prevIns instanceof GETSTATIC)
return true;
if (prevIns instanceof InvokeInstruction) {
String methodName = ((InvokeInstruction) prevIns).getMethodName(cpg);
if (methodName.startsWith("to") && methodName.endsWith("String") && methodName.length() > 8)
return true;
}
if (prevIns instanceof AALOAD) {
CFG cfg = classContext.getCFG(method);
Location prev = getPreviousLocation(cfg, location, true);
if (prev != null) {
Location prev2 = getPreviousLocation(cfg, prev, true);
if (prev2 != null && prev2.getHandle().getInstruction() instanceof GETSTATIC) {
GETSTATIC getStatic = (GETSTATIC) prev2.getHandle().getInstruction();
if (getStatic.getSignature(cpg).equals("[Ljava/lang/String;"))
return true;
}
}
}
return false;
}
示例5: visitLDC
import org.apache.bcel.generic.LDC; //导入依赖的package包/类
@Override
public void visitLDC(LDC obj) {
Object constantValue = obj.getValue(cpg);
ValueNumber value;
if (constantValue instanceof ConstantClass) {
ConstantClass constantClass = (ConstantClass) constantValue;
String className = constantClass.getBytes(cpg.getConstantPool());
value = factory.getClassObjectValue(className);
} else {
value = constantValueMap.get(constantValue);
if (value == null) {
value = factory.createFreshValue(ValueNumber.CONSTANT_VALUE);
constantValueMap.put(constantValue, value);
// Keep track of String constants
if (constantValue instanceof String) {
stringConstantMap.put(value, (String) constantValue);
}
}
}
getFrame().pushValue(value);
}
示例6: isPEI
import org.apache.bcel.generic.LDC; //导入依赖的package包/类
/**
* Return whether or not the given instruction can throw exceptions.
*
* @param handle
* the instruction
* @return true if the instruction can throw an exception, false otherwise
*/
private boolean isPEI(InstructionHandle handle) {
Instruction ins = handle.getInstruction();
if (!(ins instanceof ExceptionThrower))
return false;
if (ins instanceof NEW)
return false;
// if (ins instanceof ATHROW) return false;
if (ins instanceof GETSTATIC)
return false;
if (ins instanceof PUTSTATIC)
return false;
if (ins instanceof ReturnInstruction)
return false;
if (ins instanceof INSTANCEOF)
return false;
if (ins instanceof MONITOREXIT)
return false;
if (ins instanceof LDC)
return false;
return true;
}
示例7: visitLDC
import org.apache.bcel.generic.LDC; //导入依赖的package包/类
/** Checks if the constraints of operands of the said instruction(s) are satisfied. */
// LDC and LDC_W (LDC_W is a subclass of LDC in BCEL's model)
public void visitLDC(LDC o){
indexValid(o, o.getIndex());
Constant c = cpg.getConstant(o.getIndex());
if (c instanceof ConstantClass){
addMessage("Operand of LDC or LDC_W is CONSTANT_Class '"+c+"' - this is only supported in JDK 1.5 and higher.");
}
else{
if (! ( (c instanceof ConstantInteger) ||
(c instanceof ConstantFloat) ||
(c instanceof ConstantString) ) ){
constraintViolated(o, "Operand of LDC or LDC_W must be one of CONSTANT_Integer, CONSTANT_Float or CONSTANT_String, but is '"+c+"'.");
}
}
}
示例8: genCreate
import org.apache.bcel.generic.LDC; //导入依赖的package包/类
/**
* <<GET_IMODEL(THIS)>>
* LDC className
* INVOKEINTERFACE createObject
*/
@Override
public void genCreate(Create c, GenScope scope) {
InstructionList il = scope.getInstructionList();
InstructionFactory ifact = scope.getInstructionFactory();
ConstantPoolGen cpg = scope.getConstantPool();
// generate model access
scope.generateGetModel(modelName);
// CommonGen.generateGetModel(modelName, il, ifact, scope.getTransformationContext() );
// push className
il.append(new LDC(cpg.addString(c.getClassName())));
// invoke
il.append(ifact.createInvoke(DefaultTypes.IModel.getClassName(),
"createObject", Type.OBJECT,
new Type[] { Type.STRING },
DefaultTypes.IModelCall));
}
示例9: analyzeMethod
import org.apache.bcel.generic.LDC; //导入依赖的package包/类
private void analyzeMethod(Method m, ClassContext classContext) throws CFGBuilderException{
JavaClass clazz = classContext.getJavaClass();
ConstantPoolGen cpg = classContext.getConstantPoolGen();
CFG cfg = classContext.getCFG(m);
for (Iterator<Location> i = cfg.locationIterator(); i.hasNext(); ) {
Location loc = i.next();
Instruction inst = loc.getHandle().getInstruction();
if (inst instanceof INVOKEVIRTUAL) {
INVOKEVIRTUAL invoke = (INVOKEVIRTUAL)inst;
if( "java.lang.StringBuilder".equals(invoke.getClassName(cpg)) && "append".equals(invoke.getMethodName(cpg))) {
Instruction prev = loc.getHandle().getPrev().getInstruction();
if (prev instanceof LDC) {
LDC ldc = (LDC)prev;
Object value = ldc.getValue(cpg);
if (value instanceof String) {
String v = (String)value;
if ("redirect:".equals(v)) {
BugInstance bug = new BugInstance(this, SPRING_UNVALIDATED_REDIRECT_TYPE, Priorities.NORMAL_PRIORITY);
bug.addClass(clazz).addMethod(clazz,m).addSourceLine(classContext,m,loc);
reporter.reportBug(bug);
}
}
}
}
}
}
}
示例10: analyzeMethod
import org.apache.bcel.generic.LDC; //导入依赖的package包/类
private void analyzeMethod(Method m, ClassContext classContext) throws CFGBuilderException, DataflowAnalysisException {
ConstantPoolGen cpg = classContext.getConstantPoolGen();
CFG cfg = classContext.getCFG(m);
for (Iterator<Location> i = cfg.locationIterator(); i.hasNext(); ) {
Location location = i.next();
Instruction inst = location.getHandle().getInstruction();
if (inst instanceof INVOKEINTERFACE) {
INVOKEINTERFACE invoke = (INVOKEINTERFACE) inst;
String methodName = invoke.getMethodName(cpg);
String className = invoke.getClassName(cpg);
if (className.equals("javax.servlet.http.HttpServletResponse") &&
(methodName.equals("addHeader") || methodName.equals("setHeader"))) {
LDC ldc = ByteCode.getPrevInstruction(location.getHandle().getPrev(), LDC.class);
if (ldc != null) {
String headerValue = ByteCode.getConstantLDC(location.getHandle().getPrev(), cpg, String.class);
if ("Access-Control-Allow-Origin".equalsIgnoreCase((String)ldc.getValue(cpg)) &&
(headerValue.contains("*") || "null".equalsIgnoreCase(headerValue))) {
JavaClass clz = classContext.getJavaClass();
bugReporter.reportBug(new BugInstance(this, PERMISSIVE_CORS, Priorities.HIGH_PRIORITY)
.addClass(clz)
.addMethod(clz, m)
.addSourceLine(classContext, m, location));
}
}
}
}
}
}
示例11: generateReadCode
import org.apache.bcel.generic.LDC; //导入依赖的package包/类
void generateReadCode(InstructionList il, InstructionFactory factory, ConstantPoolGen cp)
{
il.append(new LDC(cp.addString(name)));
il.append(factory.createInvoke("org.dianahep.root4j.core.RootInput", "readObject", rootObjectType, new Type[]
{
Type.STRING
}, INVOKEINTERFACE));
il.append(factory.createCast(rootObjectType, getJavaType()));
}
示例12: visitLDC
import org.apache.bcel.generic.LDC; //导入依赖的package包/类
@Override
public void visitLDC(LDC obj) {
Type type = obj.getType(getCPG());
if (isString(type)) {
Object value = obj.getValue(getCPG());
if (value instanceof String && ((String)value).length() == 0)
pushValue( emptyStringTypeInstance);
else pushValue( staticStringTypeInstance);
}
else pushValue(type);
}
示例13: isConstantStringLoad
import org.apache.bcel.generic.LDC; //导入依赖的package包/类
private boolean isConstantStringLoad(Location location, ConstantPoolGen cpg) {
Instruction ins = location.getHandle().getInstruction();
if (ins instanceof LDC) {
LDC load = (LDC) ins;
Object value = load.getValue(cpg);
if (value instanceof String) {
return true;
}
}
return false;
}
示例14: registerInstructionSources
import org.apache.bcel.generic.LDC; //导入依赖的package包/类
private void registerInstructionSources() throws DataflowAnalysisException {
for (Iterator<Location> i = cfg.locationIterator(); i.hasNext();) {
Location location = i.next();
Instruction instruction = location.getHandle().getInstruction();
short opcode = instruction.getOpcode();
int produces = instruction.produceStack(cpg);
if (instruction instanceof InvokeInstruction) {
// Model return value
registerReturnValueSource(location);
} else if (opcode == Constants.GETFIELD || opcode == Constants.GETSTATIC) {
// Model field loads
registerFieldLoadSource(location);
} else if (instruction instanceof LDC) {
// Model constant values
registerLDCValueSource(location);
} else if (instruction instanceof LDC2_W) {
// Model constant values
registerLDC2ValueSource(location);
} else if (instruction instanceof ConstantPushInstruction) {
// Model constant values
registerConstantPushSource(location);
} else if (instruction instanceof ACONST_NULL) {
// Model constant values
registerPushNullSource(location);
} else if ((produces == 1 || produces == 2) && !(instruction instanceof LocalVariableInstruction) && !(instruction instanceof CHECKCAST)){
// Model other sources
registerOtherSource(location);
}
}
}
示例15: generateGetModel
import org.apache.bcel.generic.LDC; //导入依赖的package包/类
public void generateGetModel(String modelName, InstructionList il, InstructionFactory ifact, GenScope scope) {
generateGetModelManager(il, ifact, scope.getTransformationContext(), scope);
il.append( new LDC(ifact.getConstantPool().addString(modelName)) );
il.append(ifact.createInvoke(DefaultTypes.ModelManager.getClassName(),
"getNamespace", DefaultTypes.IModel,
new Type[] { Type.STRING },
Constants.INVOKEVIRTUAL));
}