
C-Bibliothek zum Parsen von XML, gepatcht für CVE-2022-25315, bietet streamorientiertes XML-Parsing mit Handlern für effiziente Dokumentverarbeitung.
Dies ist Expat, eine C-Bibliothek zum Parsen von XML, die 1997 von James Clark gestartet wurde. Expat ist ein stromorientierter XML-Parser. Das bedeutet, dass Sie vor dem Start des Parsens Handler beim Parser registrieren. Diese Handler werden aufgerufen, wenn der Parser die zugehörigen Strukturen im geparsten Dokument entdeckt. Ein Start-Tag ist ein Beispiel für die Art von Strukturen, für die Sie Handler registrieren können.
Windows-Benutzer sollten das
expat_win32-Paket verwenden,
das sowohl vorkompilierte Bibliotheken und ausführbare Dateien als auch Quellcode für Entwickler enthält.
Expat ist freie Software.
Sie dürfen es unter den Bedingungen der Lizenz in der Datei
COPYING
kopieren, verbreiten und modifizieren, die mit diesem Paket verteilt wird.
Diese Lizenz ist identisch mit der MIT/X Consortium-Lizenz.
Wenn Sie Expat aus einem Checkout aus dem Git-Repository erstellen, müssen Sie ein Skript ausführen, das das configure-Skript mit den GNU-Autoconf- und libtool-Tools erstellt. Dazu benötigen Sie autoconf 2.58 oder neuer. Führen Sie das Skript wie folgt aus:
./buildconf.sh
Sobald dies erledigt ist, befolgen Sie die gleichen Anweisungen wie für den Build aus einer Quellverteilung.
Um Expat aus einer Quellverteilung zu erstellen, führen Sie zuerst das Konfigurations-Shell-Skript im obersten Verzeichnis der Verteilung aus:
./configure
Es gibt viele Optionen, die Sie configure übergeben können (die Sie durch Ausführen von configure mit der Option --help herausfinden können). Die interessanteste ist jedoch die, die das Installationsverzeichnis festlegt. Standardmäßig richtet das configure-Skript die Dinge so ein, dass
libexpat in /usr/local/lib, expat.h in /usr/local/include und
xmlwf in /usr/local/bin installiert werden. Wenn Sie zum Beispiel
lieber in /home/me/mystuff/lib, /home/me/mystuff/include und
/home/me/mystuff/bin installieren möchten, können Sie configure dies mitteilen durch:
./configure --prefix=/home/me/mystuff
Eine weitere interessante Option ist die Aktivierung der 64-Bit-Ganzzahlunterstützung für Zeilen- und Spaltennummern sowie den gesamten Byte-Index:
./configure CPPFLAGS=-DXML_LARGE_SIZE
Eine solche Änderung wäre jedoch eine inkompatible Änderung der ABI und wird daher nicht für den allgemeinen Gebrauch empfohlen – z. B. als Teil einer Linux-Distribution – sondern eher für Builds mit besonderen Anforderungen.
Nachdem Sie das configure-Skript ausgeführt haben, erstellt der Befehl make die Dinge und make install installiert sie an den richtigen Ort. Werfen Sie einen Blick auf das Makefile, um weitere make-Optionen zu erfahren. Beachten Sie, dass Sie Schreibberechtigung in den Verzeichnissen benötigen, in die installiert wird.
Wenn Sie daran interessiert sind, Expat so zu bauen, dass Dokumentinformationen
in UTF-16-Kodierung statt der standardmäßigen UTF-8 bereitgestellt werden, befolgen Sie
diese Anweisungen (nachdem Sie make distclean ausgeführt haben).
Bitte beachten Sie: Wir konfigurieren mit --without-xmlwf, da xmlwf diesen Kompilierungsmodus (noch) nicht unterstützt:
Massenweise Makefile.am-Dateien patchen, um libexpatw.la als Bibliotheksnamen zu verwenden:
find -name Makefile.am -exec sed -e 's,libexpat\.la,libexpatw.la,' -e 's,libexpat_la,libexpatw_la,' -i {} +
automake ausführen, um Makefile.in-Dateien neu zu schreiben:
automake
Für UTF-16-Ausgabe als unsigned short (und Versions-/Fehlerstrings als char) ausführen:
./configure CPPFLAGS=-DXML_UNICODE --without-xmlwf
Für UTF-16-Ausgabe als wchar_t (einschließlich Versions-/Fehlerstrings) ausführen:
./configure CFLAGS="-g -O2 -fshort-wchar" CPPFLAGS=-DXML_UNICODE_WCHAR_T --without-xmlwf
Hinweis: Letzteres erfordert eine mit -fshort-wchar kompilierte libc.
make ausführen (was xmlwf ausschließt).
make install ausführen (wiederum ohne xmlwf).
Die Verwendung von DESTDIR wird unterstützt. Es funktioniert wie folgt:
make install DESTDIR=/path/to/image
überschreibt das im Makefile gesetzte DESTDIR, da die Variablen-Prioritätsreihenfolge lautet:
Hinweis: Dies gilt nur für die Expat-Bibliothek selbst; der Bau von UTF-16-Versionen von xmlwf und der Tests wird derzeit nicht unterstützt.
Wenn Sie Expat mit einem Projekt verwenden, das autoconf zur Konfiguration einsetzt, können Sie das Makro in conftools/expat.m4 verwenden, um zu ermitteln, wie Expat eingebunden wird. Weitere Informationen finden Sie in den Kommentaren am Anfang dieser Datei.
Ein Referenzhandbuch ist in der Datei doc/reference.html in dieser Distribution verfügbar.