
C-библиотека для потоко-ориентированного разбора XML с акцентом на анализ уязвимостей и эксплуатацию CVE-2022-43680, позволяющая проводить фаззинг и тестирование безопасности на бинарном уровне.
Expat, Release 2.1.0
Это Expat, библиотека на C для разбора XML, написанная Джеймсом Кларком. Expat — это потоковый XML-парсер. Это означает, что вы регистрируете обработчики в парсере перед началом разбора. Эти обработчики вызываются, когда парсер обнаруживает соответствующие структуры в разбираемом документе. Примером таких структур, для которых вы можете зарегистрировать обработчики, является открывающий тег.
Пользователи Windows должны использовать пакет expat_win32bin, который включает как предварительно скомпилированные библиотеки и исполняемые файлы, так и исходный код для разработчиков.
Expat — это свободное программное обеспечение. Вы можете копировать, распространять и модифицировать его в соответствии с условиями лицензии, содержащейся в файле COPYING, распространяемом вместе с этим пакетом. Эта лицензия идентична лицензии MIT/X Consortium.
Версии Expat с нечётным минорным номером (среднее число в релизе выше) являются разработочными версиями и должны рассматриваться как бета-программное обеспечение. Релизы с чётными минорными номерами предназначены для промышленного использования.
Если вы собираете Expat из выгрузки из репозитория CVS, вам нужно запустить скрипт, который генерирует configure-скрипт с помощью инструментов GNU autoconf и libtool. Для этого вам необходимо иметь autoconf версии 2.58 или новее. Выполните скрипт следующим образом:
./buildconf.sh
После этого следуйте тем же инструкциям, что и для сборки из дистрибутива исходного кода.
Чтобы собрать Expat из дистрибутива исходного кода, сначала запустите конфигурационный shell-скрипт в корневом каталоге дистрибутива:
./configure
Существует множество опций, которые вы можете передать configure (вы можете узнать о них, запустив configure с опцией --help). Но наиболее интересующей является та, которая устанавливает каталог установки. По умолчанию configure-скрипт настроит установку libexpat в /usr/local/lib, expat.h в /usr/local/include, а xmlwf в /usr/local/bin. Если, например, вы предпочитаете устанавливать в /home/me/mystuff/lib, /home/me/mystuff/include и /home/me/mystuff/bin, вы можете сообщить об этом configure с помощью:
./configure --prefix=/home/me/mystuff
Ещё одна интересная опция — включение поддержки 64-битных целых чисел для номеров строк и столбцов, а также общего байтового индекса:
./configure CPPFLAGS=-DXML_LARGE_SIZE
Однако такая модификация будет нарушающим изменением ABI и поэтому не рекомендуется для общего использования — например, в составе дистрибутива Linux — а скорее для сборок со специальными требованиями.
После запуска configure-скрипта команда "make" соберёт проект, а "make install" установит всё в нужные места. Ознакомьтесь с "Makefile", чтобы узнать о дополнительных опциях "make". Обратите внимание, что вам нужно иметь права на запись в каталоги, куда будут устанавливаться файлы.
Если вы заинтересованы в сборке Expat для предоставления информации о документе в кодировке UTF-16 вместо UTF-8 по умолчанию, следуйте этим инструкциям (после выполнения "make distclean"):
1. Для вывода UTF-16 в виде unsigned short (и строк версии/ошибок
в виде char) выполните:
./configure CPPFLAGS=-DXML_UNICODE
Для вывода UTF-16 в виде wchar_t (включая строки версии/ошибок)
выполните:
./configure CFLAGS="-g -O2 -fshort-wchar" \
CPPFLAGS=-DXML_UNICODE_WCHAR_T
2. Отредактируйте MakeFile, изменив:
LIBRARY = libexpat.la
на:
LIBRARY = libexpatw.la
(Обратите внимание на дополнительную "w" в имени библиотеки.)
3. Выполните "make buildlib" (собирает только библиотеку).
Или, чтобы пропустить шаг 2, выполните "make buildlib LIBRARY=libexpatw.la".
4. Выполните "make installlib" (устанавливает только библиотеку).
Или, если шаг 2 был пропущен, выполните "make installlib LIBRARY=libexpatw.la".
Использование DESTDIR или INSTALL_ROOT поддерживается, при этом INSTALL_ROOT является значением по умолчанию для DESTDIR, а остальная часть make-файла использует только DESTDIR. Это работает следующим образом: $ make install DESTDIR=/path/to/image переопределяет DESTDIR, заданный в make-файле, в то время как оба варианта $ INSTALL_ROOT=/path/to/image make install $ make install INSTALL_ROOT=/path/to/image используют DESTDIR=$(INSTALL_ROOT), даже если DESTDIR в конечном итоге определён в окружении, потому что приоритет присваивания переменных:
Примечание: это относится только к самой библиотеке Expat; сборка UTF-16 версий xmlwf и тестов в настоящее время не поддерживается.
Примечание для пользователей Solaris: Команда "ar" обычно находится в "/usr/ccs/bin", который отсутствует в стандартном PATH. Вам нужно будет добавить его в ваш путь для команды "make", а также, вероятно, переключиться на GNU make ("make" из /usr/ccs/bin, похоже, не работает должным образом — по-видимому, он не понимает директивы .PHONY). Если вы используете ksh или bash, используйте эту команду для сборки:
PATH=/usr/ccs/bin:$PATH make
При использовании Expat в проекте, использующем autoconf для настройки, вы можете использовать макрос из conftools/expat.m4 для определения способа включения Expat. Смотрите комментарии в начале этого файла для получения дополнительной информации.
Справочное руководство доступно в файле doc/reference.html в этом дистрибутиве.
Домашняя страница этого проекта — http://www.libexpat.org/. Там есть ссылки, которые приведут вас на страницу отчётов об ошибках. Если вам нужно сообщить об ошибке, когда у вас нет доступа к браузеру, вы также можете отправить отчёт об ошибке по электронной почте на [email protected].
Обсуждение, касающееся направления будущего развития expat, проходит на [email protected]. Архивы этого списка и других списков, связанных с Expat, можно найти по адресу:
http://mail.libexpat.org/mailman/listinfo/