문제

를 수행하는 방법 감염 분석을 사용하여 부목?

내가 설치된 부목에서 Ubuntu12.04.만든 작은 테스트를 경우 아래와 같:

#include<stdio.h>
#include<string.h>
int main(int argc, char *argv[]) {
    char a[10];
    strncpy(a,argv[1],10);
    printf(a);
    return 0;
}

도 만들어 부목입니다.xh 파일에 다음과 같은 내용:

int printf  (/*@untainted@*/ char *fmt, ...);
char *fgets (char *s, int n, FILE *stream) /*@ensures tainted s@*/ ;
char *strcat (/*@returned@*/ char *s1,  char *s2) /*@ensures s1:taintedness = s1:taintedness | s2:taintedness @*/ ;
void strncpy (/*@returned@*/ char *s1,  char *s2, size_t num)    /*@ensures s1:taintedness = s1:taintedness | s2:taintedness @*/ ;

도 만들어 부목입니다.mts 파일 아래 내용:

    attribute taintedness
       context reference char *
       oneof untainted, tainted
       annotations
         tainted reference ==> tainted
         untainted reference ==> untainted
                       transfers
         tainted as untainted ==> error "Possibly tainted storage used where untainted required."
       merge
          tainted + untainted ==> tainted
       defaults
          reference ==> tainted
          literal ==> untainted
          null ==> untainted
    end

그런 다음 마지막으로 실행한 부목 도구와 명령줄은 다음과 같습니다:

    splint -mts splint prg001.c

는 prg001.c 샘플 입력,"부목"참조하는 부목입니다.mts 고 부목입니다.xh 파일입니다.모든 파일에 현재 디렉터리입니다.

출력 받았다:

부목 3.1.2 --- 21 Aug2012

prg001.c:(에 주요 기능) prg001.c:6:1:형식 문자열을 매개 변수를 printf 되지 않은 컴파일 시정:a 형식을 매개 변수에 알려지지 않은 컴파일 시간입니다.이어질 수 있는 보안 취약하기 때문에 인수 될 수 없는 유형을 확인합니다.(사용 -formatconst 을 억제하는 경) prg001.c:3:14:매개 변수는 사용하지 않 argc 기능 매개 변수는 사용하지 않습니다 몸의 기능이다.는 경우 인수 필요한 유형에 대한 호환성 또는 미래의 계획,사용/@사용하지 않는@/에 인수를 선언입니다.(사용 paramuse 을 억제하는 경)

검사 완료---2 코드에 경고

이 없 힌트의 모든 더러 분석에서 출력됩니다.누군가가 나를 도와 주시겠습니하는 방법에 대한 감염 분석을 사용하여 수행됩 부목입니다.

감사

도움이 되었습니까?

해결책

문제와 부목입니다.xh 파일입니다.

나는 변경 printf 을 printfxxx 고 있습니다.

이를 암시하는 표준을 정의를 덮어쓰 my.xh 파일입니다.이 내 문제를 해결하고 지금의 부목을 출력한 오염된 변수와의 교류를 더러운.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top