[Soot-list] Proposal: Replace "System.exit()" with Java Exception to handle malformed inputs within analysis procedures

Wei Peng pengw at umail.iu.edu
Tue Dec 30 15:00:45 EST 2014


Hi soot-list,

I am embedding Soot in host program that batch-processes incoming binary
samples.

However, in some if not all cases, the behavior that Soot/Dexpler in
handling malformed samples is System.exit() (example:
https://github.com/Sable/soot/blob/596be7d399df3226249288ec624a02f34237170d/src/soot/dexpler/DexNullTransformer.java#L283).
This would take down the host program along with it.

I understand that *stopping analysis to prevent unsound results is correct
behavio*r; however, I would argue that *using "System.exit()" instead of
catchable/recoverable Exception* in these cases is* too drastic*.

Of course, System.exit has legitimate uses within the driver "main"
methods. But I would propose changing the ones deep within the analysis
procedures. Even a general Java Exception such as
"java.lang.IllegalArgumentException" would be nicer.

There are 30 such places found by Github:
https://github.com/Sable/soot/search?q=%22System+exit%22+language%3Ajava+extension%3Ajava+path%3Asrc%2Fsoot&type=Code

... and the 85 places I find with
git grep -n -P 'System\.exit\(' src/soot/ | perl -wnl -e 'print if
!m|//.*System\.exit|' | tee ~/soot-system-exit.txt


src/soot/PackManager.java:471:          System.exit(0);
src/soot/dava/toolkits/base/DavaMonitor/DavaMonitor.java:72: System.exit(0);
src/soot/dexpler/DexIfTransformer.java:322: System.exit(-1);
src/soot/dexpler/DexIfTransformer.java:359: System.exit(-1);
src/soot/dexpler/DexNullTransformer.java:283: System.exit(-1);
src/soot/dexpler/DexNullTransformer.java:317: System.exit(-1);
src/soot/dexpler/DexTransformer.java:144: System.exit(-1);
src/soot/dexpler/DexTransformer.java:155: System.exit(-1);
src/soot/dexpler/Util.java:178:            System.exit(-1);
src/soot/dexpler/instructions/CmpInstruction.java:102:
 System.exit(-1);
src/soot/dexpler/instructions/TaggedInstruction.java:43:
 System.exit(-1);
src/soot/jbco/Main.java:81:        System.exit(0);
src/soot/jbco/Main.java:102:            System.exit(1);
src/soot/jbco/Main.java:137:            System.exit(1);
src/soot/jbco/Main.java:141:            System.exit(1);
src/soot/jbco/Main.java:149:          System.exit(1);
src/soot/jbco/Main.java:161:            System.exit(1);
src/soot/jbco/Main.java:198:        System.exit(0);
src/soot/jbco/bafTransformations/IndirectIfJumpsToCaughtGotos.java:88:
 System.exit(1);
src/soot/jbco/bafTransformations/StackTypeHeightCalculator.java:513:
   System.exit(1);
src/soot/jbco/gui/JBCOViewer.java:746:                System.exit(0);
src/soot/jbco/jimpleTransformations/FieldRenamer.java:175:
 System.exit(1);
src/soot/jimple/parser/Parse.java:97:            System.exit(0);
src/soot/jimple/spark/geom/geomE/FullSensitiveNodeGenerator.java:205:
System.exit(-1);
src/soot/jimple/spark/geom/geomPA/GeomPointsTo.java:281: System.exit(-1);
src/soot/jimple/spark/geom/heapinsE/HeapInsNodeGenerator.java:189:
System.exit(-1);
src/soot/jimple/spark/geom/ptinsE/PtInsNodeGenerator.java:186:
System.exit(-1);
src/soot/jimple/toolkits/thread/mhp/CheckMSet.java:42: System.exit(1);
src/soot/jimple/toolkits/thread/mhp/CheckMSet.java:50: System.exit(1);
src/soot/jimple/toolkits/thread/mhp/CheckMSet.java:58: System.exit(1);
src/soot/jimple/toolkits/thread/mhp/CheckMSet.java:63: System.exit(1);
src/soot/jimple/toolkits/thread/mhp/CheckMSet.java:74: System.exit(1);
src/soot/jimple/toolkits/thread/mhp/CheckMSet.java:104: System.exit(1);
src/soot/jimple/toolkits/thread/mhp/CheckMSet.java:108: System.exit(1);
src/soot/jimple/toolkits/thread/mhp/CheckMSet.java:116: System.exit(1);
src/soot/jimple/toolkits/thread/mhp/CheckMSet.java:120: System.exit(1);
src/soot/jimple/toolkits/thread/mhp/CheckMSet.java:130: System.exit(1);
src/soot/jimple/toolkits/thread/mhp/DominatorsFinder.java:51:
System.exit(1);
src/soot/jimple/toolkits/thread/mhp/MethodInliner.java:51: System.exit(1);
src/soot/jimple/toolkits/thread/mhp/MhpAnalysis.java:1056: System.exit(1);
src/soot/jimple/toolkits/thread/mhp/PegChain.java:234: System.exit(1);
src/soot/jimple/toolkits/thread/mhp/PegChain.java:297: System.exit(1);
src/soot/jimple/toolkits/thread/mhp/PegChain.java:473: System.exit(1); //
What SHOULD be done is that all possible targets are inlined
src/soot/jimple/toolkits/thread/mhp/PegGraph.java:314: System.exit(1);
src/soot/jimple/toolkits/thread/mhp/PegGraph.java:626: System.exit(1);
src/soot/jimple/toolkits/thread/mhp/PegGraph.java:653: System.exit(1);
src/soot/jimple/toolkits/thread/mhp/PegGraph.java:706: System.exit(1);
src/soot/jimple/toolkits/thread/mhp/PegGraph.java:736: System.exit(1);
src/soot/jimple/toolkits/thread/mhp/PegGraph.java:753: System.exit(1);
src/soot/jimple/toolkits/thread/mhp/PegGraph.java:757: System.exit(1);
src/soot/jimple/toolkits/thread/mhp/PegGraph.java:877: System.exit(1);
src/soot/jimple/toolkits/thread/mhp/PegGraph.java:943: System.exit(1);
src/soot/jimple/toolkits/thread/mhp/PegGraph.java:952: System.exit(1);
src/soot/jimple/toolkits/thread/mhp/PegGraph.java:958: System.exit(1);
src/soot/jimple/toolkits/thread/mhp/PegGraph.java:976:  System.exit(1);
src/soot/jimple/toolkits/thread/mhp/PegGraph.java:983:  System.exit(1);
src/soot/jimple/toolkits/thread/mhp/PegGraph.java:991:   System.exit(1);
src/soot/jimple/toolkits/thread/mhp/pegcallgraph/CheckRecursiveCalls.java:62:
System.exit(1);
src/soot/jimple/toolkits/typing/fast/UseChecker.java:125: System.exit(1);
src/soot/toolkits/astmetrics/DataHandlingApplication/ProcessData.java:81:
System.exit(1);
src/soot/toolkits/astmetrics/DataHandlingApplication/ProcessData.java:86:
System.exit(1);
src/soot/toolkits/astmetrics/DataHandlingApplication/ProcessData.java:128:
System.exit(1);
src/soot/toolkits/astmetrics/DataHandlingApplication/ProcessData.java:141:
System.exit(1);
src/soot/toolkits/astmetrics/DataHandlingApplication/ProcessData.java:151:
System.exit(1);
src/soot/toolkits/astmetrics/DataHandlingApplication/ProcessData.java:162:
System.exit(1);
src/soot/toolkits/astmetrics/DataHandlingApplication/ProcessData.java:199:
System.exit(1);
src/soot/toolkits/astmetrics/DataHandlingApplication/ProcessData.java:342:
System.exit(1);
src/soot/toolkits/astmetrics/DataHandlingApplication/ProcessData.java:368:
System.exit(1);
src/soot/toolkits/astmetrics/DataHandlingApplication/ProcessData.java:587:
System.exit(1);
src/soot/toolkits/astmetrics/DataHandlingApplication/ProcessData.java:595:
System.exit(1);
src/soot/toolkits/astmetrics/DataHandlingApplication/ProcessData.java:604:
System.exit(1);
src/soot/toolkits/astmetrics/DataHandlingApplication/ProcessData.java:615:
System.exit(1);
src/soot/toolkits/astmetrics/DataHandlingApplication/ProcessData.java:625:
System.exit(1);
src/soot/toolkits/astmetrics/DataHandlingApplication/ProcessData.java:662:
System.exit(1);
src/soot/toolkits/astmetrics/DataHandlingApplication/ProcessData.java:676:
System.exit(1);
src/soot/toolkits/astmetrics/DataHandlingApplication/ProcessData.java:691:
System.exit(1);
src/soot/toolkits/astmetrics/DataHandlingApplication/ProcessData.java:706:
System.exit(1);
src/soot/toolkits/astmetrics/DataHandlingApplication/ProcessData.java:716:
System.exit(1);
src/soot/toolkits/astmetrics/DataHandlingApplication/ProcessData.java:751:
System.exit(1);
src/soot/toolkits/astmetrics/DataHandlingApplication/ProcessData.java:765:
System.exit(1);
src/soot/toolkits/astmetrics/DataHandlingApplication/ProcessData.java:780:
System.exit(1);
src/soot/toolkits/astmetrics/DataHandlingApplication/ProcessData.java:795:
System.exit(1);
src/soot/toolkits/astmetrics/DataHandlingApplication/ProcessData.java:805:
System.exit(1);
src/soot/toolkits/astmetrics/DataHandlingApplication/ProcessData.java:817:
System.exit(1);
src/soot/toolkits/astmetrics/DataHandlingApplication/ProcessData.java:874:
System.exit(1);

Wei.

Wei Peng
Department of Computer and Information Science
Indiana University-Purdue University, Indianapolis (IUPUI)
pengw at iupui.edu  |  www.cs.iupui.edu/~pengw/
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://mailman.CS.McGill.CA/pipermail/soot-list/attachments/20141230/0e1d2f5e/attachment.html 


More information about the Soot-list mailing list