Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

dlt: fix warning in source and prepare for v2.19.x #732

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

minminlittleshrimp
Copy link
Collaborator

This refactoring work is a preparation for v2.19.x

  • Replace strncpy and strncat with snprintf
  • Increase integrity by bounding and checking
  • Handle strings for file names and paths as null-terminated strings.

@@ -14,13 +14,10 @@
#######

# Set minimum Cmake version and setup policy behavior
cmake_minimum_required(VERSION 3.3)
cmake_minimum_required(VERSION 3.10)
Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note for beta release

@minminlittleshrimp
Copy link
Collaborator Author

Example for truncate technique, any better idea?

str_ret = snprintf(ctdesc, 255, "Test Context %d", i + 1);
if (str_ret < 0 || str_ret > DLT_ID_SIZE) {
        fprintf(stderr, "Error: String truncated or snprintf failed.\n");
        return -1;
}

@minminlittleshrimp minminlittleshrimp force-pushed the dlt_devel_v2.19.beta branch 2 times, most recently from 4294a38 to 45ca61d Compare February 20, 2025 21:14
@minminlittleshrimp
Copy link
Collaborator Author

minminlittleshrimp commented Feb 20, 2025

Hello @Le-Tin @Bichdao021195

Utests also need reworking, anyone takes responsibility?
We will refactor slowly through all, reducing the timing of utest: <1/10s for each.

  • Test schemes: utest, regression test, integration test???
  • Test plans?
  • Frameworks? Still Gtest?
  • Unit tests following standard/concepts will be much better, any idea?

Thanks
Refs: https://www.amazon.sg/Working-Effectively-Legacy-Michael-Feathers/dp/0131177052

This refactoring work is a preparation for v2.19.x

+ Replace strncpy and strncat with snprintf
+ Increase integrity by bounding and checking
+ Handle strings for file names and paths as null-terminated strings.
+ Git workflow: upload-artifact v3 -> v4
+ Utests disabled, will be handled in next commits

Signed-off-by: minminlittleshrimp <[email protected]>
@minminlittleshrimp
Copy link
Collaborator Author

minminlittleshrimp commented Feb 20, 2025

Conf:

Run cmake -B /home/runner/work/dlt-daemon/dlt-daemon/build -DCMAKE_BUILD_TYPE=Release \
-- The C compiler identification is GNU 13.3.0
-- The CXX compiler identification is GNU 13.3.0
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working C compiler: /usr/bin/cc - skipped
-- Detecting C compile features
-- Detecting C compile features - done
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++ - skipped
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD
-- Performing Test CMAKE_HAVE_LIBC_PTHREAD - Success
-- Found Threads: TRUE
-- Looking for include file arpa/inet.h
-- Looking for include file arpa/inet.h - found
-- Looking for include file fcntl.h
-- Looking for include file fcntl.h - found
-- Looking for include file float.h
-- Looking for include file float.h - found
-- Looking for include file limits.h
-- Looking for include file limits.h - found
-- Looking for include file netdb.h
-- Looking for include file netdb.h - found
-- Looking for include file netinet/in.h
-- Looking for include file netinet/in.h - found
-- Looking for include file stddef.h
-- Looking for include file stddef.h - found
-- Looking for include file stdint.h
-- Looking for include file stdint.h - found
-- Looking for include file stdlib.h
-- Looking for include file stdlib.h - found
-- Looking for include file string.h
-- Looking for include file string.h - found
-- Looking for include file sys/ioctl.h
-- Looking for include file sys/ioctl.h - found
-- Looking for include file sys/socket.h
-- Looking for include file sys/socket.h - found
-- Looking for include file sys/time.h
-- Looking for include file sys/time.h - found
-- Looking for include file unistd.h
-- Looking for include file unistd.h - found
-- Looking for include file sys/ipc.h
-- Looking for include file sys/ipc.h - found
-- Looking for include file ctype.h
-- Looking for include file ctype.h - found
-- Looking for include file signal.h
-- Looking for include file signal.h - found
-- Looking for include file syslog.h
-- Looking for include file syslog.h - found
-- Looking for include file sys/stat.h
-- Looking for include file sys/stat.h - found
-- Looking for include file linux/stat.h
-- Looking for include file linux/stat.h - found
-- Looking for include file sys/uio.h
-- Looking for include file sys/uio.h - found
-- Looking for include file termios.h
-- Looking for include file termios.h - found
-- Looking for include file mqueue.h
-- Looking for include file mqueue.h - found
-- Looking for clock_gettime
-- Looking for clock_gettime - found
-- Looking for floor
-- Looking for floor - not found
-- Looking for fork
-- Looking for fork - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for gettimeofday
-- Looking for gettimeofday - found
-- Looking for inet_ntoa
-- Looking for inet_ntoa - found
-- Looking for malloc
-- Looking for malloc - found
-- Looking for memmove
-- Looking for memmove - found
-- Looking for memset
-- Looking for memset - found
-- Looking for mkfifo
-- Looking for mkfifo - found
-- Looking for select
-- Looking for select - found
-- Looking for socket
-- Looking for socket - found
-- Looking for strchr
-- Looking for strchr - found
-- Looking for strerror
-- Looking for strerror - found
-- Looking for strstr
-- Looking for strstr - found
-- Looking for strtol
-- Looking for strtol - found
-- Looking for mq_open in /usr/lib/x86_64-linux-gnu/librt.a
-- Looking for mq_open in /usr/lib/x86_64-linux-gnu/librt.a - found
-- Looking for mq_close in /usr/lib/x86_64-linux-gnu/librt.a
-- Looking for mq_close in /usr/lib/x86_64-linux-gnu/librt.a - found
-- Looking for mq_unlink in /usr/lib/x86_64-linux-gnu/librt.a
-- Looking for mq_unlink in /usr/lib/x86_64-linux-gnu/librt.a - found
-- Looking for mq_send in /usr/lib/x86_64-linux-gnu/librt.a
-- Looking for mq_send in /usr/lib/x86_64-linux-gnu/librt.a - found
-- Looking for mq_receive in /usr/lib/x86_64-linux-gnu/librt.a
-- Looking for mq_receive in /usr/lib/x86_64-linux-gnu/librt.a - found
-- Looking for pthread_setname_np
-- Looking for pthread_setname_np - found
-- Using pthread_setname_np API to set thread name
-- 
-- -------------------------------------------------------------------------------
-- Build for Version 2.18.10 build  version state STABLE
-- WITH_SYSTEMD = OFF
-- WITH_SYSTEMD_WATCHDOG = OFF
-- WITH_SYSTEMD_JOURNAL = OFF
-- WITH_DOC = OFF
-- WITH_MAN = OFF
-- WITH_DLT_ADAPTOR = OFF
-- WITH_DLT_ADAPTOR_UDP = OFF
-- WITH_DLT_CONSOLE = ON
-- WITH_DLT_CONSOLE_WO_CTRL = OFF
-- WITH_DLT_CONSOLE_WO_SBTM = OFF
-- WITH_DLT_EXAMPLES = ON
-- WITH_DLT_SYSTEM = OFF
-- WITH_DLT_FILETRANSFER = OFF
-- WITH_DLT_DBUS = OFF
-- WITH_DLT_TESTS = ON
-- WITH_DLT_UNIT_TESTS = OFF
-- WITH_DLT_COVERAGE = OFF
-- WITH_DLT_SHM_ENABLE = OFF
-- WITH_DLTTEST = OFF
-- BUILD_GMOCK = OFF
-- WITH_GIT_SUBMODULE = OFF
-- WITH_DLT_PKGCONFIG = ON
-- WITH_DLT_CXX11_EXT = OFF
-- WITH_DLT_COREDUMPHANDLER = OFF
-- WITH_DLT_KPI = OFF
-- WITH_DLT_FATAL_LOG_TRAP = OFF
-- WITH_CHECK_CONFIG_FILE = OFF
-- WITH_TESTSCRIPTS = OFF
-- WITH_GPROF = OFF
-- WITH_DLT_USE_IPv6 = ON
-- DLT_USER = covesa
-- BUILD_SHARED_LIBS = ON
-- TARGET_CPU_NAME = 
-- CMAKE_INSTALL_PREFIX = /usr/local
-- CMAKE_BUILD_TYPE = Release
-- CMAKE_HOST_SYSTEM_PROCESSOR = x86_64
-- CMAKE_SYSTEM_PROCESSOR = x86_64
-- WITH_DLT_LOGSTORAGE_CTRL_UDEV = OFF
-- WITH_DLT_LOGSTORAGE_GZIP = OFF
-- DLT_IPC = FIFO(Path: /tmp)
-- WITH_DLT_DAEMON_VSOCK_IPC = OFF
-- WITH_DLT_LIB_VSOCK_IPC = OFF
-- DLT_VSOCK_PORT = 13490
-- WITH_UDP_CONNECTION = OFF
-- WITH_DLT_QNX_SYSTEM = OFF
-- WITH_DLT_NETWORK_TRACE = ON
-- WITH_LIB_NO_VERSION = 
-- WITH_LIB_SHORT_VERSION = OFF
-- WITH_LEGACY_INCLUDE_PATH = ON
-- WITH_EXTENDED_FILTERING = OFF
-- WITH_DLT_DISABLE_MACRO = OFF
-- WITH_DLT_FILE_LOGGING_SYSLOG_FALLBACK = OFF
-- WITH_DLT_LOG_LEVEL_APP_CONFIG = OFF
-- WITH_DLT_TRACE_LOAD_CTRL = OFF
-- Change a value with: cmake -D<Variable>=<Value>
-- -------------------------------------------------------------------------------
-- 
-- Configuring done (5.5s)
-- Generating done (0.1s)
-- Build files have been written to: /home/runner/work/dlt-daemon/dlt-daemon/build

@minminlittleshrimp
Copy link
Collaborator Author

Build:

Run cmake --build /home/runner/work/dlt-daemon/dlt-daemon/build --config Release
[  1%] Building C object src/lib/CMakeFiles/dlt.dir/dlt_user.c.o
[  2%] Building C object src/lib/CMakeFiles/dlt.dir/dlt_client.c.o
[  3%] Building C object src/lib/CMakeFiles/dlt.dir/dlt_filetransfer.c.o
[  5%] Building C object src/lib/CMakeFiles/dlt.dir/dlt_env_ll.c.o
[  6%] Building C object src/lib/CMakeFiles/dlt.dir/__/shared/dlt_common.c.o
[  7%] Building C object src/lib/CMakeFiles/dlt.dir/__/shared/dlt_log.c.o
[  8%] Building C object src/lib/CMakeFiles/dlt.dir/__/shared/dlt_multiple_files.c.o
[ 10%] Building C object src/lib/CMakeFiles/dlt.dir/__/shared/dlt_protocol.c.o
[ 11%] Building C object src/lib/CMakeFiles/dlt.dir/__/shared/dlt_user_shared.c.o
[ 12%] Linking C shared library libdlt.so
[ 12%] Built target dlt
[ 13%] Building C object src/daemon/CMakeFiles/dlt-daemon.dir/dlt-daemon.c.o
[ 15%] Building C object src/daemon/CMakeFiles/dlt-daemon.dir/dlt_daemon_client.c.o
[ 16%] Building C object src/daemon/CMakeFiles/dlt-daemon.dir/dlt_daemon_common.c.o
[ 17%] Building C object src/daemon/CMakeFiles/dlt-daemon.dir/dlt_daemon_connection.c.o
[ 18%] Building C object src/daemon/CMakeFiles/dlt-daemon.dir/dlt_daemon_event_handler.c.o
[ 20%] Building C object src/daemon/CMakeFiles/dlt-daemon.dir/dlt_daemon_offline_logstorage.c.o
[ 21%] Building C object src/daemon/CMakeFiles/dlt-daemon.dir/dlt_daemon_serial.c.o
[ 22%] Building C object src/daemon/CMakeFiles/dlt-daemon.dir/dlt_daemon_socket.c.o
[ 23%] Building C object src/daemon/CMakeFiles/dlt-daemon.dir/dlt_daemon_unix_socket.c.o
[ 25%] Building C object src/daemon/CMakeFiles/dlt-daemon.dir/__/gateway/dlt_gateway.c.o
[ 26%] Building C object src/daemon/CMakeFiles/dlt-daemon.dir/__/lib/dlt_client.c.o
[ 27%] Building C object src/daemon/CMakeFiles/dlt-daemon.dir/__/shared/dlt_common.c.o
[ 28%] Building C object src/daemon/CMakeFiles/dlt-daemon.dir/__/shared/dlt_config_file_parser.c.o
[ 30%] Building C object src/daemon/CMakeFiles/dlt-daemon.dir/__/shared/dlt_log.c.o
[ 31%] Building C object src/daemon/CMakeFiles/dlt-daemon.dir/__/shared/dlt_multiple_files.c.o
[ 32%] Building C object src/daemon/CMakeFiles/dlt-daemon.dir/__/shared/dlt_offline_trace.c.o
[ 33%] Building C object src/daemon/CMakeFiles/dlt-daemon.dir/__/shared/dlt_protocol.c.o
[ 35%] Building C object src/daemon/CMakeFiles/dlt-daemon.dir/__/shared/dlt_user_shared.c.o
[ 36%] Building C object src/daemon/CMakeFiles/dlt-daemon.dir/__/offlinelogstorage/dlt_offline_logstorage.c.o
[ 37%] Building C object src/daemon/CMakeFiles/dlt-daemon.dir/__/offlinelogstorage/dlt_offline_logstorage_behavior.c.o
[ 38%] Linking C executable dlt-daemon
[ 38%] Built target dlt-daemon
[ 40%] Building C object src/console/CMakeFiles/dlt_control_common_lib.dir/dlt-control-common.c.o
[ 41%] Linking C static library libdlt_control_common_lib.a
[ 41%] Built target dlt_control_common_lib
[ 42%] Building C object src/console/CMakeFiles/dlt-receive.dir/dlt-receive.c.o
[ 43%] Linking C executable dlt-receive
[ 43%] Built target dlt-receive
[ 45%] Building C object src/console/CMakeFiles/dlt-convert.dir/dlt-convert.c.o
[ 46%] Linking C executable dlt-convert
[ 46%] Built target dlt-convert
[ 47%] Building C object src/console/CMakeFiles/dlt-control.dir/dlt-control.c.o
[ 48%] Linking C executable dlt-control
[ 48%] Built target dlt-control
[ 50%] Building C object src/console/CMakeFiles/dlt-passive-node-ctrl.dir/dlt-passive-node-ctrl.c.o
[ 51%] Linking C executable dlt-passive-node-ctrl
[ 51%] Built target dlt-passive-node-ctrl
[ 52%] Building C object src/console/CMakeFiles/dlt-sortbytimestamp.dir/dlt-sortbytimestamp.c.o
[ 53%] Linking C executable dlt-sortbytimestamp
[ 53%] Built target dlt-sortbytimestamp
[ 55%] Building C object src/console/logstorage/CMakeFiles/dlt-logstorage-ctrl.dir/dlt-logstorage-ctrl.c.o
[ 56%] Building C object src/console/logstorage/CMakeFiles/dlt-logstorage-ctrl.dir/dlt-logstorage-common.c.o
[ 57%] Building C object src/console/logstorage/CMakeFiles/dlt-logstorage-ctrl.dir/dlt-logstorage-list.c.o
[ 58%] Building C object src/console/logstorage/CMakeFiles/dlt-logstorage-ctrl.dir/__/dlt-control-common.c.o
[ 60%] Linking C executable dlt-logstorage-ctrl
[ 60%] Built target dlt-logstorage-ctrl
[ 61%] Building C object src/examples/CMakeFiles/dlt-example-user-func.dir/dlt-example-user-func.c.o
[ 62%] Linking C executable dlt-example-user-func
[ 62%] Built target dlt-example-user-func
[ 63%] Building C object src/examples/CMakeFiles/dlt-example-filetransfer.dir/dlt-example-filetransfer.c.o
[ 65%] Linking C executable dlt-example-filetransfer
[ 65%] Built target dlt-example-filetransfer
[ 66%] Building C object src/examples/CMakeFiles/dlt-example-user.dir/dlt-example-user.c.o
[ 67%] Linking C executable dlt-example-user
[ 67%] Built target dlt-example-user
[ 68%] Building C object src/examples/CMakeFiles/dlt-example-user-common-api.dir/dlt-example-user-common-api.c.o
[ 70%] Linking C executable dlt-example-user-common-api
[ 70%] Built target dlt-example-user-common-api
[ 71%] Building C object src/tests/CMakeFiles/dlt-test-multi-process.dir/dlt-test-multi-process.c.o
[ 72%] Linking C executable dlt-test-multi-process
[ 72%] Built target dlt-test-multi-process
[ 73%] Building C object src/tests/CMakeFiles/dlt-test-multi-process-client.dir/dlt-test-multi-process-client.c.o
[ 75%] Linking C executable dlt-test-multi-process-client
[ 75%] Built target dlt-test-multi-process-client
[ 76%] Building C object src/tests/CMakeFiles/dlt-test-user.dir/dlt-test-user.c.o
[ 77%] Linking C executable dlt-test-user
[ 77%] Built target dlt-test-user
[ 78%] Building C object src/tests/CMakeFiles/dlt-test-client.dir/dlt-test-client.c.o
[ 80%] Linking C executable dlt-test-client
[ 80%] Built target dlt-test-client
[ 81%] Building C object src/tests/CMakeFiles/dlt-test-stress-user.dir/dlt-test-stress-user.c.o
[ 82%] Linking C executable dlt-test-stress-user
[ 82%] Built target dlt-test-stress-user
[ 83%] Building C object src/tests/CMakeFiles/dlt-test-stress-client.dir/dlt-test-stress-client.c.o
[ 85%] Linking C executable dlt-test-stress-client
[ 85%] Built target dlt-test-stress-client
[ 86%] Building C object src/tests/CMakeFiles/dlt-test-stress.dir/dlt-test-stress.c.o
[ 87%] Linking C executable dlt-test-stress
[ 87%] Built target dlt-test-stress
[ 88%] Building C object src/tests/CMakeFiles/dlt-test-fork-handler.dir/dlt-test-fork-handler.c.o
[ 90%] Linking C executable dlt-test-fork-handler
[ 90%] Built target dlt-test-fork-handler
[ 91%] Building C object src/tests/CMakeFiles/dlt-test-init-free.dir/dlt-test-init-free.c.o
[ 92%] Linking C executable dlt-test-init-free
[ 92%] Built target dlt-test-init-free
[ 93%] Building C object src/tests/CMakeFiles/dlt-test-preregister-context.dir/dlt-test-preregister-context.c.o
[ 95%] Linking C executable dlt-test-preregister-context
[ 95%] Built target dlt-test-preregister-context
[ 96%] Building C object src/tests/CMakeFiles/dlt-test-filetransfer.dir/dlt-test-filetransfer.c.o
[ 97%] Linking C executable dlt-test-filetransfer
[ 97%] Built target dlt-test-filetransfer
[ 98%] Building C object src/tests/CMakeFiles/dlt-test-non-verbose.dir/dlt-test-non-verbose.c.o
[100%] Linking C executable dlt-test-non-verbose
[100%] Built target dlt-test-non-verbose

@minminlittleshrimp minminlittleshrimp changed the title dlt: Fix warning in source dlt: fix warning in source and prepare for v2.19.x Feb 20, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant