Вопрос

Как выполнить приятный анализ с помощью шины?

Я установил шин на мою Ubuntu 12.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;
}
.

также создал файл splint.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 @*/ ;
.

также создал файл splint.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
.

Затем, наконец, запустите инструмент Sprint с командой:

    splint -mts splint prg001.c
.

Если PRG001.c - это ввод образца, «Splint» относится к файлу splint.mts и sprint.xh. Все файлы в текущем каталоге.

Выходная запись, которую я получил:

splint 3.1.2 --- 21 авг 2012

prg001.c: (в основной функции) prg001.c: 6: 1: Параметр форматирования String для printf не является постоянной времени компиляции: а. Параметр формата не известен при компиляционном времени. Это может привести к безопасности Уязвимости, потому что аргументы не могут быть проверены в типе. (Использовать -форматконтростота для ингибирования предупреждения) prg001.c: 3: 14: параметр ARGC не используется Параметр функции не используется в теле функции. Если аргумент нужен для совместимости типа или планов на будущее, использование / @unused @ / в Декларация аргумента. (Используйте «параму », чтобы ингибировать предупреждение)

Законченная проверка --- 2 Кодовые предупреждения

Нет намека на любой анализ на выходе. Может кто-нибудь, пожалуйста, помогите мне о том, как получить приятный анализ, сделанный с помощью шины.

Спасибо

Это было полезно?

Решение

Проблема была с файлом splint.xh.

Я изменил printf на printfxxx, и он работал нормально.

Это подразумевает, что стандартное определение перезаписывало мой файл .xh.Это решило мою проблему, и теперь разбиение выводы испорченные переменные и поток Taint.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top