
Librería C para analizar XML, parcheada para CVE-2022-25315, que proporciona análisis XML orientado a flujo con manejadores para el procesamiento eficiente de documentos.
Esto es Expat, una librería C para analizar XML, iniciada por James Clark en 1997. Expat es un analizador XML orientado a flujo. Esto significa que registras manejadores con el analizador antes de iniciar el análisis. Estos manejadores son llamados cuando el analizador descubre las estructuras asociadas en el documento que se está analizando. Una etiqueta de apertura es un ejemplo del tipo de estructuras para las que puedes registrar manejadores.
Los usuarios de Windows deberían usar el
expat_win32 package,
que incluye tanto bibliotecas precompiladas y ejecutables, como código fuente para
desarrolladores.
Expat es software libre.
Puedes copiar, distribuir y modificarlo bajo los términos de la Licencia
contenida en el archivo
COPYING
distribuido con este paquete.
Esta licencia es la misma que la licencia MIT/X Consortium.
Si estás construyendo Expat a partir de un checkout del repositorio Git, necesitas ejecutar un script que genera el script configure usando las herramientas GNU autoconf y libtool. Para hacer esto, necesitas tener autoconf 2.58 o más reciente. Ejecuta el script así:
./buildconf.sh
Una vez hecho esto, sigue las mismas instrucciones que para construir a partir de una distribución de fuentes.
Para construir Expat a partir de una distribución de fuentes, primero ejecuta el script de configuración de shell en el directorio de distribución de nivel superior:
./configure
Hay muchas opciones que puedes proporcionar a configure (las cuales
puedes descubrir ejecutando configure con la opción --help). Pero la
más interesante es la que establece el directorio de instalación.
Por defecto, el script configure configurará las cosas para instalar
libexpat en /usr/local/lib, expat.h en /usr/local/include, y
xmlwf en /usr/local/bin. Si, por ejemplo, prefieres instalar
en /home/me/mystuff/lib, /home/me/mystuff/include, y
/home/me/mystuff/bin, puedes informar a configure de ello con:
./configure --prefix=/home/me/mystuff
Otra opción interesante es habilitar el soporte de enteros de 64 bits para números de línea y columna y el índice de bytes general:
./configure CPPFLAGS=-DXML_LARGE_SIZE
Sin embargo, dicha modificación sería un cambio incompatible con la ABI y por lo tanto no se recomienda para uso general — p.ej., como parte de una distribución de Linux — sino más bien para compilaciones con requisitos especiales.
Después de ejecutar el script configure, el comando make construirá
las cosas y make install las instalará en su ubicación adecuada.
Echa un vistazo al Makefile para conocer opciones adicionales
de make. Ten en cuenta que necesitas tener permiso de escritura en
los directorios donde se instalarán las cosas.
Si estás interesado en construir Expat para proporcionar información
de documentos en codificación UTF-16 en lugar del UTF-8 predeterminado, sigue
estas instrucciones (después de haber ejecutado make distclean).
Ten en cuenta que configuramos con --without-xmlwf ya que xmlwf no
soporta este modo de compilación (aún):
Parchea en masa los archivos Makefile.am para usar libexpatw.la como
nombre de biblioteca:
find -name Makefile.am -exec sed -e 's,libexpat\.la,libexpatw.la,' -e 's,libexpat_la,libexpatw_la,' -i {} +
Ejecuta automake para reescribir los archivos Makefile.in:
automake
Para salida UTF-16 como unsigned short (y cadenas de versión/error como char),
ejecuta:
./configure CPPFLAGS=-DXML_UNICODE --without-xmlwf
Para salida UTF-16 como wchar_t (incl. cadenas de versión/error), ejecuta:
./configure CFLAGS="-g -O2 -fshort-wchar" CPPFLAGS=-DXML_UNICODE_WCHAR_T --without-xmlwf
Nota: Esto último requiere libc compilada con -fshort-wchar, también.
Ejecuta make (que excluye xmlwf).
Ejecuta make install (de nuevo, excluye xmlwf).
Se soporta el uso de DESTDIR. Funciona de la siguiente manera:
make install DESTDIR=/path/to/image
anula el DESTDIR establecido en el makefile, porque la prioridad de
establecimiento de variables es
Nota: Esto solo aplica a la propia biblioteca Expat; actualmente no se soporta la construcción de versiones UTF-16 de xmlwf y las pruebas.
Cuando se usa Expat con un proyecto que utiliza autoconf para la
configuración, puedes usar la macro de sondeo en conftools/expat.m4 para
determinar cómo incluir Expat. Consulta los comentarios al inicio de ese
archivo para más información.
Hay un manual de referencia disponible en el archivo doc/reference.html en
esta distribución.