dlt-daemon: upgrade 2.18.8 -> 2.18.9 (commit: 9a2312d3512a27620d41b9a325338b6e7b3d42de)

Drop patches now part of new upstream release:
- 0001-Fix-memory-leak.patch
- 0001-cmake-Link-with-libatomic-on-rv32-rv64.patch
- 0001-dlt-system-Fix-buffer-overflow-detection-on-32bit-ta.patch

Cherry-pick and propose upstream two patches to fix build failures with security hardening flags enabled
and with some systemd configuration (underlink)
- 481.patch
- 482.patch

Add new dlt-adaptor-stdin cmake optional flag
Drop PV variable, not needed anymore
Drop latomic manual added flag, upstream code changed to avoid its need
See: https://github.com/COVESA/dlt-daemon/pull/433 and 2224cddf14
(changed from atomic_bool to atomic_int, the latter doesn't require manual atomic library link since
it can be optimized properly by the compiler on riscv platforms)

What's Changed:

    dlt-system: fix a libc buffer overflow detection on 32bit targets by @mtitinger in #337
    dlt-daemon: create sockets using "android way" by @sebastienraillet in #333
    fixes compilation issue with clang by @sebastienraillet in #339
    dlt-daemon: Only create directories if they do not exist yet by @alexmohr in #340
    dlt-system : fix invalid free with ConfigurationFileName by @mtitinger in #342
    fix for the issue #341 by @rvalovyi in #347
    Forcibly the severity level set by @dhnatiuk1 in #346
    fix -Wformat issues reported by clang by @sebastienraillet in #349
    dlt-system: fix invalid free by removing unused TempDir by @andreirusu96 in #350
    Support for Cygwin toolchain. by @DoctorNoobingstoneIPresume in #351
    filetransfer: Return error if no free space by @ssugiura in #354
    lib: Correct VARI usage in dlt_user_log_write_uint by @ssugiura in #356
    Fix DLT User/Client tests by @andreirusu96 in #357
    tests: Deplicate unused files and variables by @ssugiura in #359
    Fix the target name in documentation by @mawillers in #372
    cmake: Add option to enable each adaptor by itself by @alexmohr in #364
    cmake: Add options to enable/disable each dlt console tool by @alexmohr in #363
    filetransfer: Fix getFileCreationDate2 stat check by @andreirusu96 in #361
    dlt_config_file_parser.c:Fix a pointer release bug in the file。 by @Leslie-bcy in #376
    Update workflow by @thanhbnq in #389
    README: Update link to github actions by @ssugiura in #392
    Fix handle returned value by @thanhbnq in #384
    systemd: install adaptor-udp service for adaptor=on by @danielweber2018 in #393
    automotive-dlt.pc: add the path to find the static library by @zeerd in #387
    enforce-trace-limit: ContextLogLevel is now enforced in the daemon by @alexmohr in #382
    dlt-daemon-connection: Start up even if not all bindings are valid by @alexmohr in #380
    dlt_common.c: Change default logging_mode by @wusto in #406
    logstorage: Truncate ECUid in Logstorage filter to prevent crash by @andreirusu96 in #402
    Update dlt_for_developers.md by @marques-bruno in #405
    dlt-gateway: Fix crash on invalid ip by @alexmohr in #381
    dlt_client:Block in connect() by @thanhbnq in #409
    dlt_daemon_client: Fix change loglevel of application by @lti9hc in #408
    Update maintainer by @thanhbnq in #410
    systemd: add support for socket activation via systemd by @alexmohr in #401
    internal-logging: Fix issues with file logging by @alexmohr in #378
    dlt_common: change output of message for log initialization by @lti9hc in #412
    Avoid memory corruption behind buffer wp in function dlt_getloginfo_conv_ascii_to_id by @michael-methner in #411
    dlt_daemon_client: Fix Control Msg ECUId comparison with active Gateway by @andreirusu96 in #414
    Fix for Resource and Memory Leak by @lti9hc in #418
    dlt-receive: set host interface and allow multiple udp multicast addresses by @thanhbnq in #420
    dlt-system: Fix buffer overflow detection on 32bit targets by @sandy-lcq in #398
    cmake: network trace enable toggle by @danielweber2018 in #424
    client: Fix Get Log Info response conversion method by @andreirusu96 in #422
    filetransfer: fix filesize divisible by blocksize case by @danielweber2018 in #383
    Updates for Coding Styles by @thanhbnq in #425
    gateway: Fix Node handling and ECUid checks by @andreirusu96 in #429
    Update contacts and removed mailing lists by @michael-methner in #431
    dlt-user: Fix crashes in dlt_free during dlt_init by @alexmohr in #362
    dlt-convert: Fix memory leak by calling dlt_file_free by @lvklevankhanh in #434
    dlt-user: fix potential non closed socket in init/free by @alexmohr in #435
    Check for negative index in dlt_file_message by @michael-methner in #437
    Fix memory leak by @lvklevankhanh in #441
    dlt-connection: add socket timeout by @alexmohr in #439
    Installs dlt.conf on android by @sebastienraillet in #446
    This changes a mispatch from fcb676a to install udp binary correctly by @smooge in #449
    logfile: exhance internal dlt logging by introducing size limits by @danielweber2018 in #369
    dlt-logd-converter: fixes android 12 compilation by @sebastienraillet in #445
    dlt-logd-converter: Fix getting log level from log msg by @RobinChenJP in #456
    house-keeper: remove infinite wait by @alexmohr in #438
    cmake: remove duplicated option message by @minminlittleshrimp in #454
    Android: Add new feature in Android bp by @minminlittleshrimp in #461
    dlt_multiple_files: remove superfluous mode bits and add header file to header list by @minminlittleshrimp in #462
    dlt-user: fix crash with certain strings by @alexmohr in #463

Signed-off-by: Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
Signed-off-by: Gianfranco Costamagna <locutusofborg@debian.org>
Signed-off-by: Khem Raj <raj.khem@gmail.com>
This commit is contained in:
Gianfranco Costamagna 2023-04-29 09:30:16 +02:00 committed by Khem Raj
parent c5f330bc9a
commit be3bd0a8fd
6 changed files with 90 additions and 128 deletions

View File

@ -1,34 +0,0 @@
From b6149e203f919c899fefc702a17fbb78bdec3700 Mon Sep 17 00:00:00 2001
From: Le Van Khanh <Khanh.LeVan@vn.bosch.com>
Date: Thu, 9 Feb 2023 03:17:13 -0500
Subject: [PATCH] Fix memory leak
Free the ecuid_conf in case of memory alllocated
CVE: CVE-2023-26257
Upstream-Status: Backport
[https://github.com/COVESA/dlt-daemon/pull/441/commits/b6149e203f919c899fefc702a17fbb78bdec3700]
Signed-off-by: Le Van Khanh <Khanh.LeVan@vn.bosch.com>
Signed-off-by: Yogita Urade <yogita.urade@windriver.com>
---
src/console/dlt-control-common.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/console/dlt-control-common.c b/src/console/dlt-control-common.c
index abcaf92..64951c1 100644
--- a/src/console/dlt-control-common.c
+++ b/src/console/dlt-control-common.c
@@ -124,6 +124,8 @@ void set_ecuid(char *ecuid)
if (dlt_parse_config_param("ECUId", &ecuid_conf) == 0) {
memset(local_ecuid, 0, DLT_CTRL_ECUID_LEN);
strncpy(local_ecuid, ecuid_conf, DLT_CTRL_ECUID_LEN);
+ if (ecuid_conf !=NULL)
+ free(ecuid_conf);
local_ecuid[DLT_CTRL_ECUID_LEN - 1] = '\0';
}
else {
--
2.34.1

View File

@ -1,45 +0,0 @@
From dd2d42a7f877d292f86e421dd9651f4b7c2abf18 Mon Sep 17 00:00:00 2001
From: Khem Raj <raj.khem@gmail.com>
Date: Tue, 19 Apr 2022 14:57:58 -0700
Subject: [PATCH] cmake: Link with libatomic on rv32/rv64
Use of <atomic> needs to link in libatomic on riscv
Fixes
undefined reference to `__atomic_exchange_1'
Upstream-Status: Pending
Signed-off-by: Khem Raj <raj.khem@gmail.com>
---
src/lib/CMakeLists.txt | 8 +++++++-
1 file changed, 7 insertions(+), 1 deletion(-)
diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt
index 3293376..65018be 100644
--- a/src/lib/CMakeLists.txt
+++ b/src/lib/CMakeLists.txt
@@ -37,6 +37,12 @@ else()
set(SOCKET_LIBRARY socket)
endif()
+if(CMAKE_SYSTEM_PROCESSOR STREQUAL "riscv64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "riscv32")
+ set(ATOMIC_LIBRARY atomic)
+else()
+ set(ATOMIC_LIBRARY "")
+endif()
+
if(HAVE_FUNC_PTHREAD_SETNAME_NP)
add_definitions(-DDLT_USE_PTHREAD_SETNAME_NP)
message(STATUS "Using pthread_setname_np API to set thread name")
@@ -44,7 +50,7 @@ else()
message(STATUS "pthread_setname_np API not available on this platform")
endif()
-target_link_libraries(dlt ${RT_LIBRARY} ${SOCKET_LIBRARY} Threads::Threads)
+target_link_libraries(dlt ${RT_LIBRARY} ${SOCKET_LIBRARY} ${ATOMIC_LIBRARY} Threads::Threads)
target_include_directories(dlt
PUBLIC
--
2.36.0

View File

@ -1,40 +0,0 @@
From 94378458d653b1edca86435026909592cbe5e793 Mon Sep 17 00:00:00 2001
From: Changqing Li <changqing.li@windriver.com>
Date: Fri, 19 Aug 2022 11:12:17 +0800
Subject: [PATCH] dlt-system: Fix buffer overflow detection on 32bit targets
On 32bit target, dlt-system will termiated with error:
dlt-system: *** buffer overflow detected ***: terminated
Upstream-Status: Submitted [https://github.com/COVESA/dlt-daemon/pull/398]
Signed-off-by: Changqing Li <changqing.li@windriver.com>
---
src/system/dlt-system-watchdog.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/src/system/dlt-system-watchdog.c b/src/system/dlt-system-watchdog.c
index a2b01de..c0eaa12 100644
--- a/src/system/dlt-system-watchdog.c
+++ b/src/system/dlt-system-watchdog.c
@@ -109,8 +109,8 @@ int register_watchdog_fd(struct pollfd *pollfd, int fdcnt)
void watchdog_fd_handler(int fd)
{
- long int timersElapsed = 0;
- int r = read(fd, &timersElapsed, 8); // only needed to reset fd event
+ uint64_t timersElapsed = 0ULL;
+ int r = read(fd, &timersElapsed, 8U); // only needed to reset fd event
if(r < 0)
DLT_LOG(watchdogContext, DLT_LOG_ERROR, DLT_STRING("Could not reset systemd watchdog. Exit with: "),
DLT_STRING(strerror(r)));
@@ -120,4 +120,4 @@ void watchdog_fd_handler(int fd)
DLT_LOG(watchdogContext, DLT_LOG_DEBUG, DLT_STRING("systemd watchdog waited periodic\n"));
}
-#endif
\ No newline at end of file
+#endif
--
2.25.1

View File

@ -0,0 +1,47 @@
From 95476de802585629c6d89707a9247bbb0c70f6c9 Mon Sep 17 00:00:00 2001
From: Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
Date: Fri, 28 Apr 2023 22:39:57 +0200
Subject: [PATCH] Update gtest_dlt_daemon_multiple_files_logging.cpp
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Fix build error due to dlt_vlog not having the correct format string with security build flags enabled
[ 88%] Building CXX object tests/CMakeFiles/gtest_dlt_daemon_multiple_files_logging.dir/gtest_dlt_daemon_multiple_files_logging.cpp.o
cd dlt-daemon-2.18.9/obj-x86_64-linux-gnu/tests && /usr/bin/c++ -DCONFIGURATION_FILES_DIR=\"/etc\" -DDLT_DAEMON_USE_FIFO_IPC -DDLT_LIB_USE_FIFO_IPC -DDLT_NETWORK_TRACE_ENABLE -DDLT_SYSTEMD_ENABLE -DDLT_SYSTEMD_JOURNAL_ENABLE -DDLT_UNIT_TESTS -DDLT_USER_IPC_PATH=\"/tmp\" -DDLT_USE_IPv6 -DEXTENDED_FILTERING -D_GNU_SOURCE -Idlt-daemon-2.18.9 -Idlt-daemon-2.18.9/obj-x86_64-linux-gnu/include/dlt -Idlt-daemon-2.18.9/include/dlt -Idlt-daemon-2.18.9/src/shared -Idlt-daemon-2.18.9/src/core_dump_handler -Idlt-daemon-2.18.9/src/offlinelogstorage -Idlt-daemon-2.18.9/src/lib -Idlt-daemon-2.18.9/src/daemon -Idlt-daemon-2.18.9/src/console -Idlt-daemon-2.18.9/src/gateway -Idlt-daemon-2.18.9/systemd/3rdparty -g -O2 -ffile-prefix-map=dlt-daemon-2.18.9=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -isystem /include -std=gnu++0x -std=gnu++11 -Wall -Wextra -Wno-variadic-macros -Wno-strict-aliasing -DGTEST_HAS_PTHREAD=1 -MD -MT tests/CMakeFiles/gtest_dlt_daemon_multiple_files_logging.dir/gtest_dlt_daemon_multiple_files_logging.cpp.o -MF CMakeFiles/gtest_dlt_daemon_multiple_files_logging.dir/gtest_dlt_daemon_multiple_files_logging.cpp.o.d -o CMakeFiles/gtest_dlt_daemon_multiple_files_logging.dir/gtest_dlt_daemon_multiple_files_logging.cpp.o -c dlt-daemon-2.18.9/tests/gtest_dlt_daemon_multiple_files_logging.cpp
dlt-daemon-2.18.9/tests/gtest_dlt_daemon_multiple_files_logging.cpp: In member function virtual void t_dlt_logging_multiple_files_append_reinit_normal_Test::TestBody():
dlt-daemon-2.18.9/tests/gtest_dlt_daemon_multiple_files_logging.cpp:106:13: error: format not a string literal and no format arguments [-Werror=format-security]
106 | dlt_vlog(LOG_INFO, log1);
| ~~~~~~~~^~~~~~~~~~~~~~~~
dlt-daemon-2.18.9/tests/gtest_dlt_daemon_multiple_files_logging.cpp:110:13: error: format not a string literal and no format arguments [-Werror=format-security]
110 | dlt_vlog(LOG_INFO, log2);
| ~~~~~~~~^~~~~~~~~~~~~~~~
In file included from /usr/include/string.h:535,
from /usr/include/gtest/internal/gtest-port.h:264,
from /usr/include/gtest/internal/gtest-internal.h:40,
from /usr/include/gtest/gtest.h:62,
from dlt-daemon-2.18.9/tests/gtest_dlt_daemon_multiple_files_logging.cpp:27:
In function strncpy,
---
tests/gtest_dlt_daemon_multiple_files_logging.cpp | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/tests/gtest_dlt_daemon_multiple_files_logging.cpp b/tests/gtest_dlt_daemon_multiple_files_logging.cpp
index 2da512e1..05b58f2c 100644
--- a/tests/gtest_dlt_daemon_multiple_files_logging.cpp
+++ b/tests/gtest_dlt_daemon_multiple_files_logging.cpp
@@ -103,11 +103,11 @@ TEST(t_dlt_logging_multiple_files_append_reinit, normal)
const char* log2 = "TWO\n";
configure(path, file_name, true, file_size, max_file_size);
- dlt_vlog(LOG_INFO, log1);
+ dlt_vlog(LOG_INFO, "%s", log1);
EXPECT_NO_THROW(dlt_log_free());
configure(path, file_name, true, file_size, max_file_size);
- dlt_vlog(LOG_INFO, log2);
+ dlt_vlog(LOG_INFO, "%s", log2);
EXPECT_NO_THROW(dlt_log_free());
verify_in_one_file(path, file_name, log1, log2);
}

View File

@ -0,0 +1,38 @@
From b38761831670e980a58acb33d611f65255d678ac Mon Sep 17 00:00:00 2001
From: Gianfranco Costamagna <costamagnagianfranco@yahoo.it>
Date: Fri, 28 Apr 2023 22:46:36 +0200
Subject: [PATCH] Update CMakeLists.txt
Link systemd libraries, to avoid underlinking of tests with
-DWITH_SYSTEMD_SOCKET_ACTIVATION=ON
[ 82%] Linking CXX executable gtest_dlt_daemon_gateway
cd dlt-daemon-2.18.9/obj-x86_64-linux-gnu/tests && /usr/bin/cmake -E cmake_link_script CMakeFiles/gtest_dlt_daemon_gateway.dir/link.txt --verbose=1
/usr/bin/c++ -g -O2 -ffile-prefix-map=dlt-daemon-2.18.9=. -flto=auto -ffat-lto-objects -flto=auto -ffat-lto-objects -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -isystem /include -std=gnu++0x -Wl,-Bsymbolic-functions -flto=auto -ffat-lto-objects -flto=auto -Wl,-z,relro -rdynamic CMakeFiles/gtest_dlt_daemon_gateway.dir/gtest_dlt_daemon_gateway.cpp.o CMakeFiles/gtest_dlt_daemon_gateway.dir/__/systemd/3rdparty/sd-daemon.c.o -o gtest_dlt_daemon_gateway -Wl,-rpath,dlt-daemon-2.18.9/obj-x86_64-linux-gnu/src/daemon ../src/daemon/libdlt_daemon.so /usr/lib/x86_64-linux-gnu/libgtest.a /usr/lib/x86_64-linux-gnu/libgtest_main.a -lrt /usr/lib/x86_64-linux-gnu/libgtest.a
/usr/bin/ld: ../src/daemon/libdlt_daemon.so: undefined reference to `sd_listen_fds_with_names'
---
tests/CMakeLists.txt | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt
index 579d7308..3155ca9a 100644
--- a/tests/CMakeLists.txt
+++ b/tests/CMakeLists.txt
@@ -21,8 +21,16 @@ else()
set(LIBRARIES socket)
endif()
+if(WITH_SYSTEMD_JOURNAL)
+ if(SYSTEMD_VERSION LESS 209)
+ set(SYSTEMD_LIBS systemd-journal systemd-id128)
+ else(SYSTEMD_VERSION LESS 209)
+ set(SYSTEMD_LIBS systemd)
+ endif(SYSTEMD_VERSION LESS 209)
+endif(WITH_SYSTEMD_JOURNAL)
+
set(DLT_LIBRARIES dlt ${GTEST_LIBS} ${LIBRARIES})
-set(DLT_DAEMON_LIBRARIES dlt_daemon ${GTEST_LIBS} ${LIBRARIES})
+set(DLT_DAEMON_LIBRARIES dlt_daemon ${GTEST_LIBS} ${LIBRARIES} ${SYSTEMD_LIBS})
set(DLT_CONTROL_LIBRARIES dlt dlt_control_common_lib ${GTEST_LIBS})
#Receiver used for QTs. add_test() is not required

View File

@ -17,19 +17,14 @@ DEPENDS = "zlib gzip-native json-c"
SRC_URI = "git://github.com/GENIVI/${BPN}.git;protocol=https;branch=master \
file://0002-Don-t-execute-processes-as-a-specific-user.patch \
file://0004-Modify-systemd-config-directory.patch \
file://0001-cmake-Link-with-libatomic-on-rv32-rv64.patch \
file://0001-dlt-system-Fix-buffer-overflow-detection-on-32bit-ta.patch \
file://0001-Fix-memory-leak.patch \
file://481.patch \
file://482.patch \
"
SRCREV = "6a3bd901d825c7206797e36ea98e10a218f5aad2"
PV .= "+2.18.9git${SRCPV}"
SRCREV = "9a2312d3512a27620d41b9a325338b6e7b3d42de"
S = "${WORKDIR}/git"
LDFLAGS:append:riscv64 = " -latomic"
PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', ' systemd systemd-watchdog systemd-journal dlt-examples dlt-adaptor dlt-adaptor-udp dlt-console ', '', d)} \
PACKAGECONFIG ?= "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', ' systemd systemd-watchdog systemd-journal dlt-examples dlt-adaptor dlt-adaptor-stdin dlt-adaptor-udp dlt-console ', '', d)} \
udp-connection dlt-system dlt-filetransfer "
# dlt-dbus
@ -46,6 +41,7 @@ PACKAGECONFIG[udp-connection] = "-DWITH_UDP_CONNECTION=ON,-DWITH_UDP_CONNECTION=
# Command line options
PACKAGECONFIG[dlt-system] = "-DWITH_DLT_SYSTEM=ON,-DWITH_DLT_SYSTEM=OFF"
PACKAGECONFIG[dlt-adaptor] = "-DWITH_DLT_ADAPTOR=ON,-DWITH_DLT_ADAPTOR=OFF,,dlt-daemon-systemd"
PACKAGECONFIG[dlt-adaptor-stdin] = "-DWITH_DLT_ADAPTOR_STDIN=ON,-DWITH_DLT_ADAPTOR_STDIN=OFF,,dlt-daemon-systemd"
PACKAGECONFIG[dlt-adaptor-udp] = "-DWITH_DLT_ADAPTOR_UDP=ON,-DWITH_DLT_ADAPTOR_UDP=OFF,,dlt-daemon-systemd"
PACKAGECONFIG[dlt-filetransfer] = "-DWITH_DLT_FILETRANSFER=ON,-DWITH_DLT_FILETRANSFER=OFF"
PACKAGECONFIG[dlt-console] = "-DWITH_DLT_CONSOLE=ON,-DWITH_DLT_CONSOLE=OFF,,dlt-daemon-systemd"