Skip to content

Commit

Permalink
Fixes SecureRandom code generation issue
Browse files Browse the repository at this point in the history
Signed-off-by: Rakshit Krishnappa Ravi <rakshitkrishnapparavi@gmail.com>
  • Loading branch information
rakshitkr committed Oct 29, 2020
1 parent 7d64821 commit 00d9d4d
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -27,15 +27,15 @@ public class CodeGenCrySLRule extends CrySLRule {
private static final long serialVersionUID = -7488186084564628280L;
private List<CrySLMethod> requiredMethods;
private List<CodeGenCrySLObject> requiredPars;
private CrySLObject requiredRetObj;
private CodeGenCrySLObject requiredRetObj;

public CodeGenCrySLRule(String _className, List<Entry<String, String>> defObjects, List<CrySLForbiddenMethod> _forbiddenMethods, StateMachineGraph _usagePattern, List<ISLConstraint> _constraints, List<CrySLPredicate> _predicates, List<CodeGenCrySLObject> pars, CrySLObject reqRet) {
public CodeGenCrySLRule(String _className, List<Entry<String, String>> defObjects, List<CrySLForbiddenMethod> _forbiddenMethods, StateMachineGraph _usagePattern, List<ISLConstraint> _constraints, List<CrySLPredicate> _predicates, List<CodeGenCrySLObject> pars, CodeGenCrySLObject reqRet) {
super(_className, defObjects, _forbiddenMethods, _usagePattern, _constraints, _predicates);
requiredPars = pars;
requiredRetObj = reqRet;
}

public CodeGenCrySLRule(CrySLRule rule, List<CodeGenCrySLObject> pars, CrySLObject reqRet) {
public CodeGenCrySLRule(CrySLRule rule, List<CodeGenCrySLObject> pars, CodeGenCrySLObject reqRet) {
this(rule.getClassName(), rule.getObjects(), rule.getForbiddenMethods(), rule.getUsagePattern(), rule.getConstraints(), rule.getPredicates(), pars, reqRet);
}

Expand All @@ -58,7 +58,7 @@ public List<CodeGenCrySLObject> getRequiredPars() {
return requiredPars;
}

public CrySLObject getRequiredRetObj() {
public CodeGenCrySLObject getRequiredRetObj() {
return requiredRetObj;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -260,9 +260,10 @@ public boolean generateCodeTemplates(Configuration chosenConfig, String pathToFo
}
if (toBeEnsuredPred == null) {
for (CrySLPredicate reqPred : rule.getPredicates()) {
CrySLObject a = ((CodeGenCrySLRule) rule).getRequiredRetObj();
CodeGenCrySLObject a = rule.getRequiredRetObj();
if (reqPred.getParameters().size() > 0) {
boolean baseMatch = Utils.isSubType(((CrySLObject) reqPred.getParameters().get(0)).getJavaType(), a.getJavaType());
boolean baseMatch = Utils.isSubType(((CrySLObject) reqPred.getParameters().get(0)).getJavaType(), a.getJavaType())
&& reqPred.getParameters().get(0).getName().equals(a.getCrySLVariable());
if (!baseMatch) {
continue;
}
Expand Down Expand Up @@ -743,7 +744,7 @@ else if (methodName.equals(lastInvokedMethod) && returnValueType.equals(voidStri
}
// Not the last invoked method and return type is not equal to "void".
else if (!methodName.equals(lastInvokedMethod) && !returnValueType.equals(voidString)) {
methodInvocation = returnValueType + " = " + instanceName + "." + currentInvokedMethod;
methodInvocation = retObjInTemplate.getName() + " = " + instanceName + "." + currentInvokedMethod;
generated = true;
}
}
Expand Down Expand Up @@ -1226,7 +1227,7 @@ public GeneratorClass setUpTemplateClass(String pathToTemplateFile) {
final ASTVisitor astVisitor = new ASTVisitor(true) {

GeneratorMethod curMethod = null;
CrySLObject retObj = null;
CodeGenCrySLObject retObj = null;
List<CodeGenCrySLObject> pars = new ArrayList<>();
Map<SimpleName, CrySLObject> preCGVars = new HashMap<SimpleName, CrySLObject>();
Map<SimpleName, CrySLObject> postCGVars = new HashMap<SimpleName, CrySLObject>();
Expand All @@ -1249,7 +1250,7 @@ public boolean visit(MethodInvocation node) {
if (efqn.equals(varfqn)) {
CrySLObject crySLObject = preCGVars.get(var);
if(pars.isEmpty()) {
retObj = crySLObject;
retObj = new CodeGenCrySLObject(crySLObject, (String) ((StringLiteral) arguments.get(1)).resolveConstantExpressionValue());
}
pars.add(new CodeGenCrySLObject(crySLObject, (String) ((StringLiteral) arguments.get(1)).resolveConstantExpressionValue()));
break;
Expand Down

0 comments on commit 00d9d4d

Please sign in to comment.