
C-Bibliothek zum Parsen von XML, gepatcht für CVE-2022-23852, 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 begonnen 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 zu parsenden 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, die in der mitgelieferten Datei
COPYING
enthalten ist, kopieren, verbreiten und modifizieren.
Diese Lizenz entspricht der MIT/X Consortium-Lizenz.
Wenn Sie Expat aus einem Checkout des Git-Repositorys erstellen, müssen Sie ein Skript ausführen, das das configure-Skript mit den GNU Autoconf- und Libtool-Werkzeugen generiert. Dazu benötigen Sie autoconf 2.58 oder neuer. Führen Sie das Skript wie folgt aus:
./buildconf.sh
Sobald dies erledigt ist, folgen Sie den gleichen Anweisungen wie für die Erstellung aus einer Quellverteilung.
Um Expat aus einer Quellverteilung zu erstellen, führen Sie zunächst das Konfigurations-Shellskript im obersten Verteilungsverzeichnis aus:
./configure
Es gibt viele Optionen, die Sie an configure übergeben können (die Sie durch
Ausführen von configure mit der Option --help entdecken können). Die
interessanteste ist jedoch die, die das Installationsverzeichnis festlegt.
Standardmäßig wird das configure-Skript so eingerichtet, dass libexpat in
/usr/local/lib, expat.h in /usr/local/include und xmlwf in
/usr/local/bin installiert werden. Wenn Sie beispielsweise in
/home/me/mystuff/lib, /home/me/mystuff/include und /home/me/mystuff/bin
installieren möchten, können Sie configure dies wie folgt mitteilen:
./configure --prefix=/home/me/mystuff
Eine weitere interessante Option ist die Aktivierung der 64-Bit-Integer-Unterstützung für Zeilen- und Spaltennummern und den gesamten Byte-Index:
./configure CPPFLAGS=-DXML_LARGE_SIZE
Eine solche Änderung wäre jedoch eine breaking change für das ABI und wird daher nicht für den allgemeinen Gebrauch empfohlen — z.B. als Teil einer Linux-Distribution — sondern eher für Builds mit speziellen Anforderungen.
Nachdem Sie das configure-Skript ausgeführt haben, wird der Befehl make die
Dinge erstellen und make install wird die Dinge an ihrem richtigen Ort
installieren. Werfen Sie einen Blick auf das Makefile, um mehr über
zusätzliche make-Optionen zu erfahren. Beachten Sie, dass Sie
Schreibberechtigung für die Verzeichnisse benötigen, in die die Dinge
installiert werden.
Wenn Sie daran interessiert sind, Expat so zu erstellen, dass
Dokumentinformationen in UTF-16-Kodierung anstelle der Standard-UTF-8
bereitgestellt werden, befolgen Sie diese Anweisungen (nachdem Sie
make distclean ausgeführt haben).
Bitte beachten Sie, dass wir mit --without-xmlwf konfigurieren, da xmlwf
diesen Kompilierungsmodus (noch) nicht unterstützt:
Führen Sie einen Massenpatch an Makefile.am-Dateien durch, 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 {} +
Führen Sie automake aus, um Makefile.in-Dateien neu zu schreiben:
automake
Für UTF-16-Ausgabe als unsigned short (und Versions-/Fehlerstrings als char),
führen Sie aus:
./configure CPPFLAGS=-DXML_UNICODE --without-xmlwf
Für UTF-16-Ausgabe als wchar_t (einschließlich Versions-/Fehlerstrings),
führen Sie aus:
./configure CFLAGS="-g -O2 -fshort-wchar" CPPFLAGS=-DXML_UNICODE_WCHAR_T --without-xmlwf
Hinweis: Letzteres erfordert libc, das ebenfalls mit -fshort-wchar
kompiliert wurde.
Führen Sie make aus (dies schließt xmlwf aus).
Führen Sie make install aus (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 Priorität der
Variablensetzung ist
Hinweis: Dies gilt nur für die Expat-Bibliothek selbst; das Erstellen von UTF-16-Versionen von xmlwf und der Tests wird derzeit nicht unterstützt.
Wenn Sie Expat in einem Projekt verwenden, das autoconf zur Konfiguration
verwendet, können Sie das Prüf-Makro in conftools/expat.m4 verwenden, um
zu bestimmen, wie Expat eingebunden werden soll. Weitere Informationen
finden Sie in den Kommentaren am Anfang dieser Datei.
Ein Referenzhandbuch ist in der Datei doc/reference.html in dieser
Verteilung verfügbar.