
Biblioteca C para análise de XML, corrigida para CVE-2022-23852, fornecendo análise de XML orientada a fluxo com manipuladores para processamento eficiente de documentos.
Este é o Expat, uma biblioteca em C para análise de XML, iniciada por James Clark em 1997. O Expat é um analisador de XML orientado a fluxo. Isso significa que você registra manipuladores com o analisador antes de iniciar a análise. Esses manipuladores são chamados quando o analisador encontra as estruturas associadas no documento que está sendo analisado. Uma tag de abertura é um exemplo do tipo de estrutura para a qual você pode registrar manipuladores.
Usuários do Windows devem usar o
pacote expat_win32,
que inclui tanto bibliotecas pré-compiladas quanto executáveis, e código-fonte para
desenvolvedores.
O Expat é software livre.
Você pode copiar, distribuir e modificá-lo sob os termos da Licença
contida no arquivo
COPYING
distribuído com este pacote.
Esta licença é a mesma da licença MIT/X Consortium.
Se você estiver compilando o Expat a partir de um checkout do repositório Git, você precisa executar um script que gera o script configure usando as ferramentas GNU autoconf e libtool. Para isso, você precisa ter autoconf 2.58 ou mais recente. Execute o script assim:
./buildconf.sh
Depois que isso for feito, siga as mesmas instruções de compilação a partir de uma distribuição de código-fonte.
Para compilar o Expat a partir de uma distribuição de código-fonte, primeiro execute o script de configuração shell no diretório raiz da distribuição:
./configure
Há muitas opções que você pode fornecer ao configure (as quais você
pode descobrir executando o configure com a opção --help). Mas a
de maior interesse é a que define o diretório de instalação.
Por padrão, o script configure configurará tudo para instalar
libexpat em /usr/local/lib, expat.h em /usr/local/include, e
xmlwf em /usr/local/bin. Se, por exemplo, você preferir instalar
em /home/me/mystuff/lib, /home/me/mystuff/include, e
/home/me/mystuff/bin, você pode informar isso ao configure com:
./configure --prefix=/home/me/mystuff
Outra opção interessante é habilitar o suporte a inteiros de 64 bits para números de linha e coluna e o índice geral de bytes:
./configure CPPFLAGS=-DXML_LARGE_SIZE
No entanto, essa modificação seria uma mudança que quebra a ABI e, portanto, não é recomendada para uso geral — por exemplo, como parte de uma distribuição Linux — mas sim para compilações com requisitos especiais.
Após executar o script configure, o comando make compilará os componentes
e make install os instalará em seus devidos locais. Dê uma olhada no
Makefile para aprender sobre opções adicionais do make. Observe que você
precisa ter permissão de escrita nos diretórios onde os componentes serão
instalados.
Se você estiver interessado em compilar o Expat para fornecer informações
do documento em codificação UTF-16 em vez do UTF-8 padrão, siga
estas instruções (após ter executado make distclean).
Observe que configuramos com --without-xmlwf, pois o xmlwf não
suporta (ainda) este modo de compilação:
Aplique patches em massa nos arquivos Makefile.am para usar libexpatw.la como nome da biblioteca:
find -name Makefile.am -exec sed -e 's,libexpat\.la,libexpatw.la,' -e 's,libexpat_la,libexpatw_la,' -i {} +
Execute automake para reescrever os arquivos Makefile.in:
automake
Para saída UTF-16 como unsigned short (e strings de versão/erro como char),
execute:
./configure CPPFLAGS=-DXML_UNICODE --without-xmlwf
Para saída UTF-16 como wchar_t (incluindo strings de versão/erro), execute:
./configure CFLAGS="-g -O2 -fshort-wchar" CPPFLAGS=-DXML_UNICODE_WCHAR_T --without-xmlwf
Observação: O último requer libc compilada com -fshort-wchar, também.
Execute make (que exclui o xmlwf).
Execute make install (novamente, exclui o xmlwf).
O uso de DESTDIR é suportado. Funciona da seguinte forma:
make install DESTDIR=/path/to/image
substitui o DESTDIR definido no makefile, pois a prioridade de definição de variáveis é
Observação: Isso se aplica apenas à própria biblioteca Expat; a compilação de versões UTF-16 do xmlwf e dos testes atualmente não é suportada.
Ao usar o Expat com um projeto que utiliza autoconf para configuração, você
pode usar a macro de sondagem em conftools/expat.m4 para determinar como
incluir o Expat. Consulte os comentários no topo desse arquivo para mais
informações.
Um manual de referência está disponível no arquivo doc/reference.html nesta
distribuição.