Инструментальные средства обеспечения безопасности


         

Компилирование исходного файла


Вы должны скомпилировать утилиту datapipe для своей платформы. Полезно иметь предварительно скомпилированные бинарные файлы для нескольких типов операционных систем Unix: Solaris, AIX, Linux, FreeBSD и др. Используйте команду gcc для компилирования под Linux и семейство BSD.

$ gcc -o datapipe datapipe.c datapipe.c: In function 'main': datapipe.c:86: warning: passing arg 1 of 'gethostbyaddr' from incompatible pointer type datapipe.c:98: warning: passing arg 2 of 'bind' from incompatible pointer type datapipe.c:113: warning: passing arg 2 of 'accept' from incompatible pointer type datapipe.c:136: warning: passing arg 2 of 'connect' from incompatible pointer type

В приведенном выше примере двоичный код скомпилировался успешно. Предупреждений, связанных с функциями bind, accept и connect, можно избежать, преобразуя тип второго аргумента к типу (struct sockaddr *), однако программа работает и без этого преобразования.

if (bind(lsock, (struct sockaddr *) &laddr, sizeof(laddr))) {

В зависимости от библиотек совместимости вашей системы, вам, возможно, придется также удалить строку 48.

#include <linux/time.h>

Спокойно удалите эту строку, не ожидая никаких неприятных последствий.

Утилита datapipe компилируется также под Cygwin, но вы должны изменить еще одну строку (строка 96 в оригинальном исходном файле).

laddr.sin_family = htons (AF_INET);

Удалите вызов функции htons.

laddr.sin_family = AF_INET;

Помните, что файл cygwin1.dll необходим, чтобы утилита datapipe выполнялась в системе Windows, однако вам не нужно регистрировать файл DLL. Обратите внимание, что Windows не требует, чтобы вы являлись привилегированным пользователем (т. е. имели права администратора) для открытия портов, имеющих номера ниже, чем 1024.

Другие опции компилирования. При компилировании утилиты datapipe для некоторых вариантов системы Unix компонуйте такие версии бинарного кода, которые имеют свойства static и shared (общего доступа). Версия бинарного кода, использующая библиотеки общего доступа, компонуется по умолчанию с опциями компилятора gcc, упомянутыми выше.

Содержание  Назад  Вперед