... | ... | @@ -76,4 +76,67 @@ |
|
|
|
|
|
В случае если импорт с указанием бранча с помощью `svacer import` выполняется без первоначального создания бранча в GUI svacer, клонирование и создание бранча произойдет автоматически на момент загрузки (svacer upload) от последнего снэпшота на master-бранче. Снэпшоты в промежуточном хранилище (svacer-dir) упорядочиваются и обрабатываются по времени.
|
|
|
|
|
|
Рекомендуется **создать конфигурацию бранчей заранее**, и указывать именно их в параметрах `svacer import`. |
|
|
\ No newline at end of file |
|
|
Рекомендуется **создать конфигурацию бранчей заранее**, и указывать именно их в параметрах `svacer import`.
|
|
|
|
|
|
|
|
|
#### Добавление спецификации на функцию-источник помеченных данных, для которой в svace по умолчанию отсутствует спецификация
|
|
|
|
|
|
1. по умолчанию в svace отсутствует спецификация для функции-источника помеченных данных *GetWindowTextA*
|
|
|
|
|
|
2. необходимо определить точный прототип функции:
|
|
|
|
|
|
```
|
|
|
int GetWindowTextA(
|
|
|
HWND hWnd,
|
|
|
LPSTR lpString,
|
|
|
int nMaxCount
|
|
|
);
|
|
|
```
|
|
|
|
|
|
3. необходимо создать файл на метаязыке спецификаций svace, описывающий параметры функции-источника:
|
|
|
|
|
|
```
|
|
|
//winuser.c
|
|
|
|
|
|
typedef void *HWND;
|
|
|
typedef char TCHAR;
|
|
|
typedef TCHAR *LPSTR;
|
|
|
|
|
|
int GetWindowTextA(HWND hWnd, LPSTR lpString, int nMaxCount) {
|
|
|
sf_bitinit(lpString);
|
|
|
|
|
|
sf_overwrite(lpString);
|
|
|
sf_set_tainted(lpString);
|
|
|
sf_buf_size_limit(lpString, nMaxCount);
|
|
|
|
|
|
ssize_t x;
|
|
|
sf_overwrite(&x);
|
|
|
sf_set_possible_negative(x);
|
|
|
sf_uncontrolled_value(x);
|
|
|
sf_set_possible_equals(x, nMaxCount);
|
|
|
|
|
|
sf_assert_cond(x, "<=", nMaxCount);
|
|
|
sf_buf_fill(x, lpString);
|
|
|
return x;
|
|
|
}
|
|
|
```
|
|
|
|
|
|
Выше приведен пример шаблонного кода прототипа.
|
|
|
|
|
|
4. необходимо обновить список спецификаций svace
|
|
|
|
|
|
` svace spec add winuser.c`
|
|
|
|
|
|
5. необходимо повторно выполнить анализ проекта
|
|
|
|
|
|
`svace analyze`
|
|
|
|
|
|
6. просмотр всех текущих спецификаций выполняется командой
|
|
|
|
|
|
` svace spec list`
|
|
|
|
|
|
7. удаление спецификации выполняется командой
|
|
|
|
|
|
` svace spec remove winuser.c.bc`
|
|
|
|
|
|
*В svace/docs есть файл svace_spec_manual.pdf, в котором достаточно подробно описаны доступные спецификации svace* |
|
|
\ No newline at end of file |