<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 14 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
pre
        {mso-style-priority:99;
        mso-style-link:"HTML Vorformatiert Zchn";
        margin:0cm;
        margin-bottom:.0001pt;
        font-size:10.0pt;
        font-family:"Courier New";}
span.HTMLVorformatiertZchn
        {mso-style-name:"HTML Vorformatiert Zchn";
        mso-style-priority:99;
        mso-style-link:"HTML Vorformatiert";
        font-family:Consolas;
        mso-fareast-language:DE;}
span.E-MailFormatvorlage19
        {mso-style-type:personal-reply;
        font-family:"Calibri","sans-serif";
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=DE link=blue vlink=purple><div class=WordSection1><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Hi Denis,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>This code is implemented in a very defensive way. We might already have a class java.lang.Thread in our Soot scene. In that case, we only want to extend that class to provide the minimum functionality we need. Since we cannot make any assumptions on how a private field is named in the various implementations of the JDK (Oracle, OpenJDK, Android, etc.), we just take a name that’s still free and use that to implement the behavior we want.<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'>Best regards,<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'> Steven <o:p></o:p></span></p><p class=MsoNormal><span lang=EN-US style='font-size:11.0pt;font-family:"Calibri","sans-serif";color:#1F497D'><o:p> </o:p></span></p><p class=MsoNormal><b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'>Von:</span></b><span style='font-size:10.0pt;font-family:"Tahoma","sans-serif"'> soot-list-bounces@CS.McGill.CA [mailto:soot-list-bounces@CS.McGill.CA] <b>Im Auftrag von </b>Denis Bogdanas<br><b>Gesendet:</b> Sonntag, 27. März 2016 23:58<br><b>An:</b> soot-list@cs.mcgill.ca; Steven Arzt<br><b>Betreff:</b> [Soot-list] FlowDroid: patching of class Thread<o:p></o:p></span></p><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal style='margin-bottom:12.0pt'>Hi Steven,<o:p></o:p></p></div><p class=MsoNormal style='margin-bottom:12.0pt'>In LibraryCalssPatcher.patchThreadImplementation() you have the following code:<o:p></o:p></p><pre style='background:white'><span style='font-size:9.5pt;color:black'>SootClass sc = Scene.<i>v</i>().getSootClassUnsafe(</span><b><span style='font-size:9.5pt;color:green'>"java.lang.Thread"</span></b><span style='font-size:9.5pt;color:black'>);<o:p></o:p></span></pre><p class=MsoNormal>...<o:p></o:p></p><pre style='background:white'><b><span style='font-size:9.5pt;color:navy'>while </span></b><span style='font-size:9.5pt;color:black'>((fldTarget = sc.getFieldByNameUnsafe(</span><b><span style='font-size:9.5pt;color:green'>"target" </span></b><span style='font-size:9.5pt;color:black'>+ fieldIdx)) != </span><b><span style='font-size:9.5pt;color:navy'>null</span></b><span style='font-size:9.5pt;color:black'>)<br> fieldIdx++;<br>fldTarget = </span><b><span style='font-size:9.5pt;color:navy'>new </span></b><span style='font-size:9.5pt;color:black'>SootField(</span><b><span style='font-size:9.5pt;color:green'>"target" </span></b><span style='font-size:9.5pt;color:black'>+ fieldIdx, runnable.getType());<o:p></o:p></span></pre><div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal style='margin-bottom:12.0pt'>Here you create a field with name "thread+<some number>" inside Thread. Why don't you name it simply "thread", as it is in JDK?<o:p></o:p></p></div><div><p class=MsoNormal>thanks,<o:p></o:p></p></div><div><p class=MsoNormal>-- <o:p></o:p></p><div><div><p class=MsoNormal style='margin-bottom:12.0pt'>Denis<o:p></o:p></p></div></div></div></div></div></div></body></html>