TinyXML does not compile on Yocto toolchain with -Werror=format-truncation
Nessuno ha ancora preso questa issue.
Valutazione
Questa issue non è ancora stata valutata.
Descrizione
Using the following build flags, compilation fails due to unchecked null for format in the int TIXML_VSCPRINTF(const char*, va_list) inlined the parent 'virtual void tinyxml2::XMLPrinter::Print(const char*, ...)' call.
Build command:
cmake -DCMAKE_BUILD_TYPE=Debug \
-Dtinyxml2_BUILD_TESTING=OFF \
-DCMAKE_CXX_FLAGS="-D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security -fvisibility-inlines-hidden -Wno-deprecated-declarations -fno-var-tracking -Wno-psabi -fsanitize=address,undefined -fno-omit-frame-pointer -O2 -g -DNDEBUG -fPIC -fno-exceptions -std=c++11 -Wall -pedantic -Wextra -Werror -Wno-missing-field-initializers -Werror=format-truncation" \ \
.. && \
Error logs:
2.350 In file included from /usr/include/stdio.h:980,
2.350 from /usr/include/c++/13/cstdio:42,
2.350 from /tinyxml2/tinyxml2.h:39,
2.350 from /tinyxml2/tinyxml2.cpp:24:
2.350 In function 'int vsnprintf(char*, size_t, const char*, __gnuc_va_list)',
2.350 inlined from 'int TIXML_VSCPRINTF(const char*, va_list)' at /tinyxml2/tinyxml2.cpp:117:22,
2.350 inlined from 'virtual void tinyxml2::XMLPrinter::Print(const char*, ...)' at /tinyxml2/tinyxml2.cpp:2640:40:
2.350 /usr/include/aarch64-linux-gnu/bits/stdio2.h:68:36: error: null format string [-Werror=format-truncation=]
2.350 68 | return __builtin___vsnprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1,
2.350 | ~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2.350 69 | __glibc_objsize (__s), __fmt, __ap);
2.350 | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2.845 cc1plus: all warnings being treated as errors
2.846 make[2]: *** [CMakeFiles/tinyxml2.dir/build.make:76: CMakeFiles/tinyxml2.dir/tinyxml2.cpp.o] Error 1
2.846 make[1]: *** [CMakeFiles/Makefile2:839: CMakeFiles/tinyxml2.dir/all] Error 2
2.846 make: *** [Makefile:146: all] Error 2
For reproduction, here is a dockerfile which consistently reproduces this compilation error:
FROM ubuntu:24.04
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update && apt-get install -y \
libcurl4-openssl-dev \
libssl-dev \
ninja-build \
libassuan-dev \
build-essential \
zlib1g-dev \
cmake \
git \
&& rm -rf /var/lib/apt/lists/*
RUN git clone --recurse-submodules https://github.com/leethomason/tinyxml2
RUN cd tinyxml2 &&\
mkdir build && \
cd build && \
cmake -DCMAKE_BUILD_TYPE=Debug \
-Dtinyxml2_BUILD_TESTING=OFF \
-DCMAKE_CXX_FLAGS="-D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security -fvisibility-inlines-hidden -Wno-deprecated-declarations -fno-var-tracking -Wno-psabi -fsanitize=address,undefined -fno-omit-frame-pointer -O2 -g -DNDEBUG -fPIC -fno-exceptions -std=c++11 -Wall -pedantic -Wextra -Werror -Wno-missing-field-initializers -Werror=format-truncation" \ \
.. && \
make -j
Solution:
a quick check in the int TIXML_VSCPRINTF(const char*, va_list) function for null format string:
if (!format) {
return 0;
}
- Lingua principale
- C++
- Stelle
- 5.8k
- Fork
- 2k
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Preparare l'ambiente
Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di leethomason/tinyxml2
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 70/100
leethomason/tinyxml2#1097 ·
-
New release requestAperta
leethomason/tinyxml2#1087 · 4 commenti ·
-
leethomason/tinyxml2#1085 · 1 commento ·
-
New relase requestAperta
leethomason/tinyxml2#1084 ·
-
leethomason/tinyxml2#1083 ·
Tutte le issue di leethomason/tinyxml2
Issue simili
-
Status: Awaiting triage
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
espressif/arduino-esp32#12984 ·
I maintainer di solito rispondono entro 1 giorno
-
torch_ops/logprob.cu does not compile with the serving container's nvcc (13.3.73); check_torch_ops.py cannot run as shippedForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 Meno di un'ora Idoneità per principianti 72/100
ashhart/TensorFold#535 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 66/100
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 Meno di un'ora Idoneità per principianti 78/100
sudoevolve/EUI-NEO#95 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
I maintainer di solito rispondono entro 1 giorno