[Soot-list] about Heros

Rohan Padhye rohanpadhye at cse.iitb.ac.in
Fri Apr 19 09:56:39 EDT 2013


Hello Eric,

That is an interesting approach. I also have a requirement of 
context-sensitive data flow values so allow me to butt into this thread.

How would such a model work in the presence of recursion? Wouldn't 
bounding the call-string stack limit the precision for call sequences 
deeper than that bound? And would the algorithmic complexity increase by 
a cubic factor of the stack-bound? Or am I getting it wrong?

Alternatively, if a client wants to query whether a data flow fact "x" 
holds at a point "p" along a particular call-sequence "c_1...c_k", would 
it make sense (this is just a stab in the dark, I may be absolutely 
wrong) to only compute graph reachability starting from <entry, zero> to 
<p, x> along paths that contain the call sequence "c_1...c_k"? Or is 
this an incorrect understanding?

Thanks,
Rohan

On 2013-04-19 15:07, Bodden, Eric wrote:
> Hi Zhang.
>
> IFDS formulates context-sensitive analysis in such a way that a
> context is characterized by domain values, not by (method-signature
> based) calling-context strings. You should hence design your abstract
> domain accordingly. For instance, in case you really need a
> calling-context string then your domain should hold a (bounded) stack
> of those strings.
>
> Eric
>
>
>
> On 18.04.2013, at 17:46, Zhang Yufeng <yuffonzhang at 163.com> wrote:
>
>> Hi Eric,
>> I am using Heros in my project.
>> I have two questions about the "context-sensitive" problem.
>>
>> The first question:
>> In my IFDS problem,
>> in implementing the function
>> public FlowFunction<Local> getNormalFlowFunction(Unit curr, Unit 
>> succ) {}
>> I need to know the context about where the method including 'curr' 
>> is invoked.
>>
>> In my problem, the operations on the Domain D for the same unit are 
>> different in different context.
>> For example, in the following fuction:
>>
>> void foo() {
>> obj1=obj2;
>> }
>>
>> for statement
>> obj1=obj2;
>>
>> the operation on the 'facts' in the domain 'D' is different in the 
>> different context (where the function foo() is invoked).
>>
>> But in the function
>> public FlowFunction<Local> getNormalFlowFunction(Unit curr, Unit 
>> succ) {}
>> there is no information indicating that the curr unit is encountered 
>> under what context.
>>
>> Can I do this in Heros?
>>
>>
>> The second question is also about the context-sensitive problem.
>> After I get the results by solving the IFDS problem.
>> I can get the result at each unit by using:
>> solver.resultsAt((Stmt)unit);
>> right?
>> My question is:
>> does Heros keep the context-sensitive information in the results?
>> In some cases, the results at the same unit are different in 
>> different context.
>> How can I get this from Heros?
>>
>> I don't know whether I make it clear.
>>
>> Thanks.
>> Best.
>> Yufeng
>> _______________________________________________
>> Soot-list mailing list
>> Soot-list at sable.mcgill.ca
>> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>
> --
> Eric Bodden, Ph.D., http://sse.ec-spride.de/ http://bodden.de/
> Head of Secure Software Engineering Group at EC SPRIDE
> Tel: +49 6151 16-75422    Fax: +49 6151 16-72051
> Room 3.2.14, Mornewegstr. 30, 64293 Darmstadt
>
> _______________________________________________
> Soot-list mailing list
> Soot-list at sable.mcgill.ca
> http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list



More information about the Soot-list mailing list