
Gepatchte Version der Expat-XML-Parser-Bibliothek, die mehrere CVEs (CVE-2022-22822 bis CVE-2022-22827) für AOSP 10 r33 adressiert und streamorientiertes XML-Parsing mit Sicherheitsfixes bietet.
Dies ist Expat, eine C-Bibliothek zum Parsen von XML, begonnen von James Clark im Jahr 1997. Expat ist ein stromorientierter XML-Parser. Das bedeutet, dass Sie Handler beim Parser registrieren, bevor Sie das Parsen starten. 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 der 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 in der Datei
COPYING
enthaltenen Lizenz kopieren, verbreiten und verändern;
diese Lizenz wird mit diesem Paket verteilt.
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 Konfigurationsskript mit den GNU-autoconf- und libtool-Werkzeugen erzeugt. Dazu benötigen Sie autoconf 2.58 oder neuer. Führen Sie das Skript wie folgt aus:
./buildconf.sh
Sobald dies geschehen ist, befolgen Sie die gleichen Anweisungen wie für das Erstellen aus einer Quellcode-Distribution.
Um Expat aus einer Quellcode-Distribution zu erstellen, führen Sie zuerst das Konfigurations-Shellskript im obersten Verzeichnis der Distribution aus:
./configure
Es gibt viele Optionen, die Sie an configure übergeben können (die Sie
entdecken können, indem Sie configure mit der Option --help ausführen). Aber die
interessanteste ist diejenige, die das Installationsverzeichnis festlegt.
Standardmäßig richtet das Konfigurationsskript die Installation 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
in /home/me/mystuff/lib, /home/me/mystuff/include und
/home/me/mystuff/bin installieren möchten, können Sie configure das wie folgt mitteilen:
./configure --prefix=/home/me/mystuff
Eine weitere interessante Option ist die Aktivierung der 64-Bit-Ganzzahlunterstützung für Zeilen- und Spaltennummern sowie den Gesamtbyteindex:
./configure CPPFLAGS=-DXML_LARGE_SIZE
Eine solche Änderung wäre jedoch ein ABI-Bruch 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 Konfigurationsskript ausgeführt haben, erstellt der Befehl make
die Programme, und make install installiert sie an den richtigen
Ort. Werfen Sie einen Blick in die Makefile, um weitere
make-Optionen zu erfahren. Beachten Sie, dass Sie Schreibberechtigung in
den Verzeichnissen benötigen, in die die Programme installiert werden.
Wenn Sie Expat so erstellen möchten, dass Dokumentinformationen
in UTF-16-Kodierung statt der standardmäßigen UTF-8-Kodierung bereitgestellt werden, befolgen Sie
diese Anweisungen (nachdem Sie make distclean ausgeführt haben).
Beachten Sie bitte, dass wir mit --without-xmlwf konfigurieren, da xmlwf diesen
Kompiliermodus (noch) nicht unterstützt:
Führen Sie einen Massen-Patch an den 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 die Makefile.in-Dateien neu zu schreiben:
automake
Für UTF-16-Ausgabe als unsigned short (und Versions-/Fehlerzeichenketten als char),
führen Sie aus:
./configure CPPFLAGS=-DXML_UNICODE --without-xmlwf
Für UTF-16-Ausgabe als wchar_t (einschließlich Versions-/Fehlerzeichenketten), führen Sie aus:
./configure CFLAGS="-g -O2 -fshort-wchar" CPPFLAGS=-DXML_UNICODE_WCHAR_T --without-xmlwf
Hinweis: Letzteres erfordert eine mit -fshort-wchar kompilierte libc.
Führen Sie make aus (wodurch xmlwf ausgeschlossen wird).
Führen Sie make install aus (schließt ebenfalls xmlwf aus).
Die Verwendung von DESTDIR wird unterstützt. Das funktioniert wie folgt:
make install DESTDIR=/path/to/image
überschreibt das in der Makefile gesetzte DESTDIR, da die Priorität beim Setzen von Variablen wie folgt 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 mit einem Projekt verwenden, das autoconf zur Konfiguration einsetzt,
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
Distribution verfügbar.