[Soot-list] How to set -process-dir and -cp correctly in this case? I got the error: class small.DataClass read in from a classfile in which DataClass was expected.

Khanh Nguyen khanhtn1 at uci.edu
Sat Nov 23 05:30:17 EST 2013


Thanks everyone for helping me out. Guru already tested the latest version
of Soot and found it's working. That means the Soot's version I'm using
(2.5) is buggy. I'll use the nightly build instead then. If you do not hear
back from me then that would be the end of this.

Thanks again,

Khanh Nguyen


On Sat, Nov 23, 2013 at 1:02 AM, Bodden, Eric <eric.bodden at sit.fraunhofer.de
> wrote:

> Hi all.
>
> The problem is that you are using -w mode. Usually this means to Soot
> "load everything you need and can find". But when you use
> -no-bodies-for-excluded then this should prevent excluded classes' method
> bodies from being loaded. If that's not the case then this is a bug.
>
> Eric
>
> On 23.11.2013, at 02:04, Guru Devanla <gdevan2 at uic.edu> wrote:
>
> > Ok, I was wrong with my previous analysis.
> >
> > I did test the behavior with the latest version of soot. I see the
> excluded classes not being transformed. Note, in -verbose mode you will see
> log files to check. You can see them being resolved but not
> processed/transformed.
> >
> > Sorry, I am not able to help further. Let me know if you need more
> information.
> >
> >
> > On Fri, Nov 22, 2013 at 3:33 PM, Khanh Nguyen <khanhtn1 at uci.edu> wrote:
> > Sorry for my ignorance but where exactly the -x option is processed. I
> mean if -x option is processed before you running any pack then the
> excluded classes should not be in the list of application class. That's
> what -x does, right?
> >
> > Also, PackManager.runPacksForOneClassAtATime() only called if
> Options.v().oaat() is true. Not sure what oaat() is but probably in
> runPacks(), PackManager should take the else branch where it will take the
> whole program packs and run them
> >
> > Thank you,
> >
> > Khanh Nguyen
> >
> >
> > On Fri, Nov 22, 2013 at 3:12 PM, Guru Devanla <gdevan2 at uic.edu> wrote:
> > Hi Khanh,
> >
> > I looked at the current version of Soot. I think the problem is in
> >
> > PackManager.runPacksForOneClassAtATime().  This methods loops through
> all files it files under -process-dir and does not check/respect
>  attributes set with -x option.
> >
> > The looping structure in that method can have a conditional check to see
> if the class being processed is part of the excluded package.
> >
> > Eric et all: So, is it okay to exclude classes at this method level.
> Does anyone see any incompatibility issues with excluded class under
> process-dir not being part of application class list?
> >
> > Thanks
> > Guru
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> >
> > On Fri, Nov 22, 2013 at 1:20 PM, Khanh Nguyen <khanhtn1 at uci.edu> wrote:
> > Even with -no-bodies-for-excluded I still see my transformation touches
> the excluded packages
> > My command is this:  -w -pp -keep-line-number -f J -p jb
> use-original-names:false  -process-dir C:\test\bin -exclude small
> -no-bodies-for-excluded -cp C:\test\bin
> > Anything that is unusual?
> >
> > Thank you,
> >
> > Khanh Nguyen
> >
> >
> > On Fri, Nov 22, 2013 at 12:12 PM, Guru Devanla <gdevan2 at uic.edu> wrote:
> > I think you also need to use -no-bodies-for-excluded.  I have seen
> excluded packages being touched for different analysis when I just use the
> -x option.
> >
> > Hope that helps.
> >
> > -Guru
> >
> >
> > On Fri, Nov 22, 2013 at 10:38 AM, Khanh Nguyen <khanhtn1 at uci.edu> wrote:
> > Hi Eric,
> >
> > Unfortunately, that doesnt work for me. I set the "-x small" then use
> Scene.v().getApplicationClasses() to get the application classes to check.
> And there are classes from package "small" being analyzed.
> > I'm using the released soot 2.5. My analysis is in pack "wjtp" if that
> info helps.
> >
> >
> >
> > Thank you,
> >
> > Khanh Nguyen
> >
> >
> > On Fri, Nov 22, 2013 at 12:20 AM, Bodden, Eric <
> eric.bodden at sit.fraunhofer.de> wrote:
> > Hi Khanh.
> >
> > When you set Soot's classpath or process dir then the path must always
> point to the root of the package hierarchy, not to some particular package
> folder, i.e., in your setting it must point to C:\test\bin\
> > You can then the include/exclude options to include/exclude certain
> packages from analysis. See here:
> > http://www.sable.mcgill.ca/soot/tutorial/usage/index.html
> >
> > Does that work for you?
> >
> >
> > Cheers,
> > Eric
> >
> >
> >
> > On 18.11.2013, at 08:47, Khanh Nguyen <khanhtn1 at uci.edu> wrote:
> >
> > > Hello,
> > >
> > > I know that this question has been in the list since a long time ago,
> I read all those posts and got what I wanted to do but still, I want it
> work in another way (if possible)
> > > The background is this: In C:\test\bin I have 2 folders, "simple" and
> "small" (equivalent to 2 different packages) in "small", I have one class:
> DataClass.class, in "simple", I also have one class called DataClass.class
> > >
> > > I want to apply my analysis only on folder "small". Thus I used the
> command line :-process-dir C:\test\bin\small -cp C:\test\bin\small.
> > > I understand that by setting -process-dir C:\test\bin\small, the class
> Soot will find to load is DataClass.class (i.e. no info about the package
> 'small') which is okay, that's why I thought the -cp must be set as
> C:\test\bin\small. So now the file structure is identical. But I got the
> error instead("class small.DataClass read in from a classfile in which
> DataClass was expected.")
> > > Is it because even when setting -cp: C:\test\bin\small the class
> loaded is still be considered as small.DataClass? (because the actual class
> is read and thus, the name is small.DataClass?)
> > >
> > >
> > > Of course I can make my analysis to work only on "small" by deleting
> the "simple" and set both -process-dir and -cp to C:\test\bin (so that
> -process-dir sets the target class is actually small.DataClass and -cp will
> let me see small\DataClass.class)
> > > But, even with only "small" under C:\test\bin, I cant do -process-dir
> C:\test\bin -cp C:\test\bin\small, either (Soot will complain there is no
> small.DataClass on classpath- why? now -cp only see DataClass.class?)
> > >
> > > But, bottom line is, isnt there anyway to just set the target of the
> analysis restricted to only 1 package like what I wanted?
> > >
> > > Thank you,
> > >
> > > Khanh Nguyen
> > > UC Irvine
> > > _______________________________________________
> > > Soot-list mailing list
> > > Soot-list at sable.mcgill.ca
> > > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
> >
> > --
> > Prof. Eric Bodden, Ph.D., http://sse.ec-spride.de/ http://bodden.de/
> > Head of Secure Software Engineering  at Fraunhofer SIT, TU Darmstadt and
> 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
> >
> >
> >
> >
> >
> >
> > _______________________________________________
> > Soot-list mailing list
> > Soot-list at sable.mcgill.ca
> > http://mailman.cs.mcgill.ca/mailman/listinfo/soot-list
>
> --
> Prof. Eric Bodden, Ph.D., http://sse.ec-spride.de/ http://bodden.de/
> Head of Secure Software Engineering  at Fraunhofer SIT, TU Darmstadt and
> EC SPRIDE
> Tel: +49 6151 16-75422    Fax: +49 6151 16-72051
> Room 3.2.14, Mornewegstr. 30, 64293 Darmstadt
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.cs.mcgill.ca/pipermail/soot-list/attachments/20131123/18d1f20d/attachment-0001.html 


More information about the Soot-list mailing list