Software Engineering Research Group Graduate School of Engineering
- Slides: 21
オブジェクト指向言語における セキュリティ解析アルゴリズムの提案と実現 横森 励士 井上研究室 修士論文発表会 Software Engineering Research Group, Graduate School of Engineering Science, Osaka University
情報フロー (Information Flow) プログラム中の変数間に存在するデータ授受関係 explicit flow 変数の定義・参照間に存在 implicit flow 分岐(繰り返し)命令の条件節と内部の文の間に存在 1: 2: 3: 4: 5: b = 5; c = 5; if ( c > 0 ) { a = b; } 6 修士論文発表会 Software Engineering Research Group, Graduate School of Engineering Science, Osaka University
情報フロー解析の例 情報フローを元に、プログラムの各地点における SC を 求める 1: void method(int a , int b, int c) { 2: int d = a + b + c; 3: if ( c > 0 ) { 4: a = b; 5: } 6: printf(“%sn”, a); 7: } 8 修士論文発表会 Software Engineering Research Group, Graduate School of Engineering Science, Osaka University
解析例 メソッドSample. Test()内の解析 解析前にクラスのメンバ変数、仮 実行順に従い解析 呼び出し先のメソッドを解析 引数からSCsetを構築 出力文では参照している変数の SCを求める SCset =={ (Y, high) } SCset { (Y, high), SCset = { (Y, high) } (X, SCset { (value, })} = { low) (Y, high), SCset = { (Y, high), (X, { (value, high) } (value, } ) } low) } SCset(X, = {{ (v, high), low) (value, (文Base X(文X. m. A(); 解析前) = new Base(); 解析後) 文System. out. println(X. value); のSCはhigh class Base { public String value; public void m. A(String v) { v = value; } } class Sample { Y ← high public static void Test(String Y) { Base X = new Base(); X. m. A(Y); System. out. println(X. value); } } 11 修士論文発表会 Software Engineering Research Group, Graduate School of Engineering Science, Osaka University
オーバーライドへの対応 メソッド呼び出し文単体では、 呼び出すメソッドを特定できない X. m. A(Y) を正しく解析するため には、Base クラスの派生クラス のメソッドについても考慮する必 要がある X. m. A() の実体は? Base クラスの m. A() Derived クラスの m. A() class Base { protected String value; public void m. A(String v) { System. out. println(v); } } class Derived extends Base { public void m. A(String v) { value = v; System. out. println(v); } } class Sample { public static void Test() { String Y = “high”; ← high Base X = new Derived(); X. m. A(Y); } } 13 修士論文発表会 Software Engineering Research Group, Graduate School of Engineering Science, Osaka University
オーバーライドへの対応 参照変数の指すインスタンスの型を 特定する 参照変数ごとに、それが指すイ ンスタンスが取りうる型について の情報を保持する X は Derived クラスのイン スタンスを指している X. m. A() の実体は Derived クラスの m. A() メソッド呼び出し文の解析対象 となるメソッドを限定可能 class Base { protected String value; public void m. A(String v) { System. out. println(v); } } class Derived extends Base { public void m. A(String v) { value = v; System. out. println(v); } } class Sample { public static void Test() { String Y = “high”; ← high Base X = new Derived(); X. m. A(Y); } } 14 修士論文発表会 Software Engineering Research Group, Graduate School of Engineering Science, Osaka University
- Graduate school of engineering science osaka university
- Graduate institute of electronics engineering
- Ntu
- Graduate institute of electronics engineering
- Graduate institute of electronics engineering
- Graduate institute of electronics engineering
- Lsu graduate school thesis guidelines
- Upm sgs
- Kupid portal
- Georgia high school requirements
- Jesus seminary
- Uaf graduate school
- University of florida graduate school
- Nau graduate admissions
- Wesley horng
- Uf editorial office
- Ajou university graduate school
- Time management in graduate school
- Keller graduate school of mgmt
- Kisses of death for the graduate school application
- Nau graduate housing
- Tgs utwente