1 |
1
프로그램의 소스 코드에 대하여 정적 분석(static analysis)을 통해 상기 소스 코드에 포함된 객체들 각각에 대하여 상기 객체들이 할당된 위치 정보, 상기 객체들을 가리키는 포인터 정보 및 상기 소스 코드의 각 포인트에 대하여 상기 객체들을 해제할 수 있는 해제문들에 대한 정보인 패치 정보를 포함하는 상태 정보를 생성하는 정적 분석부;상기 패치 정보 중에서 패치 후보를 선정하고, 상기 객체들을 각각 한 번씩만 해제할 수 있는 상기 패치 후보의 조합을 결정하는 결정부; 및상기 패치 후보의 조합에 따라 상기 소스 코드를 수정하는 수정부를 포함하고,상기 정적 분석부는 포인터 분석(point-to analysis)을 통해 상기 포인터 정보를 생성하고,상기 포인터 정보는 상기 객체들 중 어느 하나의 객체에 대하여 상기 어느 하나의 객체를 가리킬 수 있는 모든 포인터들을 과도 근사화(over-approximate)하여 구한 포인터에 대한 정보인 제1 포인터 정보, 상기 어느 하나의 객체를 가리키는 포인터에 대한 정보인 제2 포인터 정보 및 상기 어느 하나의 객체를 가리키지 않는 포인터에 대한 정보인 제3 포인터 정보를 포함하는,메모리 해제 오류 자동 수정 장치
|
2 |
2
삭제
|
3 |
3
제1항에 있어서,상기 패치 정보는 상기 객체들을 오류 없이 해제할 수 있음이 보장된 해제문들에 대한 정보인 제1 패치 정보 및 상기 객체들을 오류 없이 해제할 수 있음이 보장되지 않은 해제문들에 대한 정보인 제2 패치 정보를 포함하는 메모리 해제 오류 자동 수정 장치
|
4 |
4
제3항에 있어서,상기 정적 분석부는 상기 소스 코드의 각 포인트에 대하여,상기 각 포인트에서 상기 객체들이 사용될 수 있는 경우 상기 제2 패치 정보에 상기 제1 패치 정보 및 상기 제1 포인터 정보에서 상기 제2 포인터 정보를 제외한 포인터 정보에 대한 해제문들인 제1 해제문들(U)에 대한 정보를 업데이트시키고,상기 각 포인트에서 상기 객체들이 사용될 수 없는 경우 상기 제2 패치 정보에 상기 제1 해제문들(U)에 대한 정보 및 상기 제2 포인터 정보에 대한 해제문들인 제2 해제문들(G)에 대한 정보와 상기 제2 패치 정보에 동시에 포함되는 해제문들에 대한 정보인 제3 해제문들(D)에 대한 정보를 업데이트시키는 메모리 해제 오류 자동 수정 장치
|
5 |
5
제4항에 있어서,상기 정적 분석부는 상기 소스 코드의 각 포인트에 대하여,상기 각 포인트에서 상기 객체들이 사용될 수 있는 경우 상기 제1 패치 정보에서 상기 제1 패치 정보에 포함된 해제문들을 제외하고, 상기 제2 해제문들(G)에 대한 정보를 추가하고, 상기 업데이트된 제2 패치 정보에 포함된 해제문들을 제외하여 상기 제1 패치 정보를 업데이트시키고,상기 각 포인트에서 상기 객체들이 사용될 수 없는 경우 상기 제1 패치 정보에 상기 제2 해제문들(G)에 대한 정보를 추가하고, 상기 업데이트된 제2 패치 정보에 포함된 해제문들을 제외하여 상기 제1 패치 정보를 업데이트시키는 메모리 해제 오류 자동 수정 장치
|
6 |
6
제1항에 있어서,상기 정적 분석부는 상기 소스 코드에 분기문이 포함되어 있는 경우 상기 분기문의 실행 경로에 따라 상기 객체들 각각에 대하여 상기 상태 정보를 생성하는 메모리 해제 오류 자동 수정 장치
|
7 |
7
제1항에 있어서,상기 결정부는 SAT(satisfiability)-솔버를 이용하여 상기 패치 후보의 조합을 결정하는 메모리 해제 오류 자동 수정 장치
|
8 |
8
프로그램의 소스 코드에 대하여 정적 분석(static analysis)을 통해 상기 소스 코드에 포함된 객체들 각각에 대하여 상기 객체들이 할당된 위치 정보, 상기 객체들을 가리키는 포인터 정보 및 상기 소스 코드의 각 포인트에 대하여 상기 객체들을 해제할 수 있는 해제문들에 대한 정보인 패치 정보를 포함하는 상태 정보를 생성하는 단계;상기 패치 정보 중에서 패치 후보를 선정하고, 상기 객체들을 각각 한 번씩만 해제할 수 있는 상기 패치 후보의 조합을 결정하는 단계; 및상기 패치 후보의 조합에 따라 상기 소스 코드를 수정하는 단계를 포함하고,상기 상태 정보를 생성하는 단계는포인터 분석(point-to analysis)을 통해 상기 포인터 정보를 생성하는 단계를 더 포함하고,상기 포인터 정보는 상기 객체들 중 어느 하나의 객체에 대하여 상기 어느 하나의 객체를 가리킬 수 있는 모든 포인터들을 과도 근사화(over-approximate)하여 구한 포인터에 대한 정보인 제1 포인터 정보, 상기 어느 하나의 객체를 가리키는 포인터에 대한 정보인 제2 포인터 정보 및 상기 어느 하나의 객체를 가리키지 않는 포인터에 대한 정보인 제3 포인터 정보를 포함하고,상기 패치 정보는 상기 객체들을 오류 없이 해제할 수 있음이 보장된 해제문들에 대한 정보인 제1 패치 정보 및 상기 객체들을 오류 없이 해제할 수 있음이 보장되지 않은 해제문들에 대한 정보인 제2 패치 정보를 포함하는,메모리 해제 오류 자동 수정 방법
|
9 |
9
삭제
|
10 |
10
제8항에 있어서,상기 상태 정보를 생성하는 단계는 상기 소스 코드의 각 포인트에 대하여,상기 각 포인트에서 상기 객체들이 사용될 수 있는 경우 상기 제2 패치 정보에 상기 제1 패치 정보 및 상기 제1 포인터 정보에서 상기 제2 포인터 정보를 제외한 포인터 정보에 대한 해제문들인 제1 해제문들(U)에 대한 정보를 업데이트시키고,상기 각 포인트에서 상기 객체들이 사용될 수 없는 경우 상기 제2 패치 정보에 상기 제1 해제문들(U)에 대한 정보 및 상기 제2 포인터 정보에 대한 해제문들인 제2 해제문들(G)에 대한 정보와 상기 제2 패치 정보에 동시에 포함되는 해제문들에 대한 정보인 제3 해제문들(D)에 대한 정보를 업데이트시키는 메모리 해제 오류 자동 수정 방법
|
11 |
11
제10항에 있어서,상기 상태 정보를 생성하는 단계는 상기 소스 코드의 각 포인트에 대하여,상기 각 포인트에서 상기 객체들이 사용될 수 있는 경우 상기 제1 패치 정보에서 상기 제1 패치 정보에 포함된 해제문들을 제외하고, 상기 제2 해제문들(G)에 대한 정보를 추가하고, 상기 업데이트된 제2 패치 정보에 포함된 해제문들을 제외하여 상기 제1 패치 정보를 업데이트시키고,상기 각 포인트에서 상기 객체들이 사용될 수 없는 경우 상기 제1 패치 정보에 상기 제2 해제문들(G)에 대한 정보를 추가하고, 상기 업데이트된 제2 패치 정보에 포함된 해제문들을 제외하여 상기 제1 패치 정보를 업데이트시키는 메모리 해제 오류 자동 수정 방법
|