Суть поиска различий

Команда diff присутствует во многих современных операционных системах семейства UNIX и им подобных. Впервые она появилась в дистрибутиве UNIX компании AT&T, и в настоящее время эксплуатируются различные ее версии. Слово diff – сокращение от английского слова difference (различие) – означает составление списка различий двух файлов.

Таким образом, слово диффинг может быть определено как применение команды diff (или подобной программы) для сравнения двух файлов. Сравнивая файлы, можно выявить внесенные изменения в новую версию программы по сравнению с предыдущей, определить различия двоичных файлов, претендующих на эквивалентность, или отследить влияние изменений файла данных на работу программы.

Изучите исходный текст программы, приведенный на рис. 5.1.

Рис. 5.1. Исходный текст scpybufo.c

Уже говорилось о сопутствующей этой программе ошибке переполнения буфера. (Эта программа была рассмотрена в главе 4 в секции, посвященной переполнению буфера.) Просмотрите исходный текст программы, представленный на рис. 5.2.

Рис. 5.2. Исходный текст sncpyfix.c

Применяя команду diff операционной системы UNIX, можно точно определить место и суть различий между двумя программами (см. рис. 5.3).

Рис. 5.3. Результаты сравнения файлов scpybufo.c и sncpyfix.c командой diff

Из протокола работы команды видно, что относящиеся к файлу scpybufo.c данные отмечены символом <, а к файлу sncpyfix.c – символом >. Команда нашла первое отличие в заголовке этих файлов.

Со строки номер 25a24 начинаются различия в исходных текстах программ. Переменная Size_t есть в файле sncpyfix.c, но отсутствует в scpybufo.c. А в строке под номером 27c26 видна замена функции strcpy на strncpy. Хотя сравнить столь небольшие файлы можно и вручную, целесообразность применения команды diff для cравнения больших файлов более очевидна. Далее будут обсуждены причины поиска различий.

Больше книг — больше знаний!

Заберите 30% скидку новым пользователям на все книги Литрес с нашим промокодом

ПОЛУЧИТЬ СКИДКУ

Данный текст является ознакомительным фрагментом.