xmlBuildQName
接頭辞とローカル名からprefix:nameの形の名前(QName)を組み立てる、libxml2のAPIの関数。呼び出し側が渡したバッファに収まればそこへ書き、収まらなければ新しい領域を確保する。
- 概念URI
https://comcomponent.com/knowledge/xmlbuildqname/
- 最終確認日
- 2026-08-01
- 機械可読データ
- JSON-LD
この概念が関わる関係
- libxml2はxmlBuildQNameの実装を担います。xmlBuildQNameはlibxml2のtree.cにある関数で、接頭辞とローカル名からprefix:nameの形の名前を組み立てる。 / 確度: 確立した関係 / 確認日: 2026-11-13 出典
- CVE-2025-6021はxmlBuildQNameを前提とします。呼び出し側のバッファの外へ書き込むには、NULLではない接頭辞とローカル名、書き込み先のバッファを渡してxmlBuildQNameが呼ばれ、2つの長さの合計が2,147,483,646バイト以上であることが必要。合計の値はこの記事で修正前のコードから導いた。libxml2のパーサーは名前の長さを制限しているので、保守担当者はパーサーは影響を受けないはずだと述べている。記事の実測では、ツリーを作るAPIで作った要素を検証の関数の1つ(xmlValidNormalizeAttributeValue)に渡した場合にも、libxml2 2.14.3で同じ大きさの範囲外への書き込みが検出された。 / 確度: 確立した関係 / 確認日: 2026-11-13 出典 出典 出典 出典
- libxml3はxmlBuildQNameの実装を担います。libxml3はlibxml2に似たCのAPIの一部としてxmlBuildQNameを提供する。必要なバイト数が上限を超える入力にはNULLを返し、この点は新しい領域を確保して返すlibxml2 2.14.4と違う。ポインターが指す領域の実際の大きさとバイトの読み書きは証明の外にある。 / 確度: 条件付きの関係 / 確認日: 2026-11-13 出典 出典
- xmlBuildQNameは-Wconversion(GCC)で確認できます。修正前のlibxml2 2.14.3のxmlBuildQNameでstrlenの結果をintに入れる2行(tree.cの183行と184行)は、GCC 13.3.0に-Wconversionを足すと警告される。-Wallと-Wextraでは警告されない。libxml2 2.14.3全体では953件の警告が出て、うち341件が-Wconversionの警告だった。修正後の2.14.4では、この2行は警告されない。 / 確度: 条件付きの関係 / 確認日: 2026-11-14 出典 出典
- xmlBuildQNameは-Wshorten-64-to-32で確認できます。同じ2行は、clang 18.1.3に-Wshorten-64-to-32を足すと警告される。libxml2 2.14.3全体では251件の警告が出て、修正後の2.14.4ではこの2行の分の2件が減った。 / 確度: 条件付きの関係 / 確認日: 2026-11-14 出典 出典
- CVE-2025-6021はxmlBuildQNameを前提とします。CVE-2025-6021は、修正前のxmlBuildQNameがstrlenの結果をintに入れ、その合計で容量を確かめていたことが原因だった。報告の値では、代入ではなく足し算でintの上限を超える。 / 確度: 確立した関係 / 確認日: 2026-11-14 出典 出典
- libxml2はxmlBuildQNameの実装を担います。xmlBuildQNameはlibxml2のtree.cにある関数。libxml2 2.14.3のCMakeの設定は-Wallと-Wextraなどを渡すが、-Wconversionと-Wshorten-64-to-32は入っていない。 / 確度: 確立した関係 / 確認日: 2026-11-14 出典 出典
この概念を扱う記事
一次資料
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。