Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .clang-format
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ SpaceBeforeRangeBasedForLoopColon: true
SpacesBeforeTrailingComments: 2
SpacesInAngles: false
SpacesInContainerLiterals: false
SpacesInParens: Never
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: c++11
TabWidth: 4
Expand Down
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -33,3 +33,4 @@ debian/files
debian/libdlt-dev
debian/libdlt2
debian/tmp
build-asan/
10 changes: 5 additions & 5 deletions include/dlt/dlt_common.h
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@
/*
* Macros to swap the byte order.
*/
#define DLT_SWAP_64(value) ((((uint64_t)DLT_SWAP_32((value) & 0xffffffffull)) << 32) | (DLT_SWAP_32((value) >> 32)))
#define DLT_SWAP_64(value) ((((uint64_t)DLT_SWAP_32((value)&0xffffffffull)) << 32) | (DLT_SWAP_32((value) >> 32)))
#define DLT_SWAP_16(value) ((uint16_t)((((value) >> 8) & 0xff) | (((value) << 8) & 0xff00)))
#define DLT_SWAP_32(value) \
((((value) >> 24) & 0xff) | (((value) << 8) & 0xff0000) | (((value) >> 8) & 0xff00) \
Expand Down Expand Up @@ -178,9 +178,9 @@
#define DLT_LETOH_64(x) ((x))
#endif

#define DLT_ENDIAN_GET_16(htyp, x) ((uint16_t)((((htyp) & DLT_HTYP_MSBF) > 0) ? DLT_BETOH_16(x) : DLT_LETOH_16(x)))
#define DLT_ENDIAN_GET_32(htyp, x) ((uint32_t)((((htyp) & DLT_HTYP_MSBF) > 0) ? DLT_BETOH_32(x) : DLT_LETOH_32(x)))
#define DLT_ENDIAN_GET_64(htyp, x) ((uint64_t)((((htyp) & DLT_HTYP_MSBF) > 0) ? DLT_BETOH_64(x) : DLT_LETOH_64(x)))
#define DLT_ENDIAN_GET_16(htyp, x) ((uint16_t)((((htyp)&DLT_HTYP_MSBF) > 0) ? DLT_BETOH_16(x) : DLT_LETOH_16(x)))
#define DLT_ENDIAN_GET_32(htyp, x) ((uint32_t)((((htyp)&DLT_HTYP_MSBF) > 0) ? DLT_BETOH_32(x) : DLT_LETOH_32(x)))
#define DLT_ENDIAN_GET_64(htyp, x) ((uint64_t)((((htyp)&DLT_HTYP_MSBF) > 0) ? DLT_BETOH_64(x) : DLT_LETOH_64(x)))

#if defined(__WIN32__) || defined(_MSC_VER)
#define LOG_EMERG 0
Expand Down Expand Up @@ -1581,7 +1581,7 @@ uint32_t dlt_message_get_extendedparameters_size_v2(DltMessageV2* msg);
* @return Value from DltReturnValue enum
*/
DltReturnValue dlt_message_get_extendedparameters_from_recievedbuffer_v2(
DltMessageV2* msg, uint8_t* buffer, DltHtyp2ContentType msgcontent);
DltMessageV2* msg, uint8_t* buffer, unsigned int length, DltHtyp2ContentType msgcontent);

/**
* Initialise the structure used to access a DLT file.
Expand Down
69 changes: 49 additions & 20 deletions src/daemon/dlt-daemon.c
Original file line number Diff line number Diff line change
Expand Up @@ -1250,6 +1250,31 @@ static DltReturnValue dlt_daemon_create_pipes_dir(char* dir)
// This will be defined when unit testing, so functions
// from this file can be tested without defining main twice
#ifndef DLT_DAEMON_UNIT_TESTS_NO_MAIN

/**
* Perform full daemon cleanup on error exit.
*
* Called before returning -1 from any failed initialization step in main().
* Each cleanup function is designed to be safe on partially-initialized state.
*/
static void dlt_daemon_exit_cleanup(DltDaemon* daemon, DltDaemonLocal* daemon_local)
{
dlt_daemon_local_cleanup(daemon, daemon_local, daemon_local->flags.vflag);

#ifdef UDP_CONNECTION_SUPPORT
dlt_daemon_udp_close_connection();
#endif

dlt_gateway_deinit(&daemon_local->pGateway, daemon_local->flags.vflag);

dlt_daemon_free(daemon, daemon_local->flags.vflag);
#ifdef DLT_TRACE_LOAD_CTRL_ENABLE
dlt_trace_load_free(daemon);
#endif

dlt_log_free();
}

/**
* Main function of tool.
*/
Expand Down Expand Up @@ -1340,27 +1365,29 @@ int main(int argc, char* argv[])
/* --- Daemon init phase 1 begin --- */
if (dlt_daemon_local_init_p1(&daemon, &daemon_local, daemon_local.flags.vflag) == -1) {
dlt_log(LOG_CRIT, "Initialization of phase 1 failed!\n");
dlt_daemon_exit_cleanup(&daemon, &daemon_local);
return -1;
}

/* --- Daemon init phase 1 end --- */

if (dlt_daemon_prepare_event_handling(&daemon_local.pEvent)) {
/* TODO: Perform clean-up */
dlt_log(LOG_CRIT, "Initialization of event handling failed!\n");
dlt_daemon_exit_cleanup(&daemon, &daemon_local);
return -1;
}

/* --- Daemon connection init begin */
if (dlt_daemon_local_connection_init(&daemon, &daemon_local, daemon_local.flags.vflag) == -1) {
dlt_log(LOG_CRIT, "Initialization of local connections failed!\n");
dlt_daemon_exit_cleanup(&daemon, &daemon_local);
return -1;
}

/* --- Daemon connection init end */

if (dlt_daemon_init_runtime_configuration(&daemon, daemon_local.flags.ivalue, daemon_local.flags.vflag) == -1) {
dlt_log(LOG_ERR, "Could not load runtime config\n");
dlt_daemon_exit_cleanup(&daemon, &daemon_local);
return -1;
}

Expand All @@ -1373,6 +1400,7 @@ int main(int argc, char* argv[])
/* --- Daemon init phase 2 begin --- */
if (dlt_daemon_local_init_p2(&daemon, &daemon_local, daemon_local.flags.vflag) == -1) {
dlt_log(LOG_CRIT, "Initialization of phase 2 failed!\n");
dlt_daemon_exit_cleanup(&daemon, &daemon_local);
return -1;
}

Expand Down Expand Up @@ -1441,6 +1469,7 @@ int main(int argc, char* argv[])
if (daemon_local.flags.gatewayMode == 1) {
if (dlt_gateway_init(&daemon_local, daemon_local.flags.vflag) == -1) {
dlt_log(LOG_CRIT, "Failed to create gateway\n");
dlt_daemon_exit_cleanup(&daemon, &daemon_local);
return -1;
}

Expand Down Expand Up @@ -2381,8 +2410,8 @@ int dlt_daemon_log_internal(
msg.extendedheadersizev2 =
(uint32_t)(1 + strlen(DLT_DAEMON_ECU_ID) + 1 + strlen(app_id) + 1 + strlen(ctx_id) + sizeof(uint32_t));

msg.headersizev2 = (int32_t)(msg.storageheadersizev2 + msg.baseheadersizev2 + msg.baseheaderextrasizev2
+ msg.extendedheadersizev2);
msg.headersizev2 =
(int32_t)(msg.storageheadersizev2 + msg.baseheadersizev2 + msg.baseheaderextrasizev2 + msg.extendedheadersizev2);

msg.headerbufferv2 = (uint8_t*)malloc((size_t)msg.headersizev2);

Expand All @@ -2404,8 +2433,8 @@ int dlt_daemon_log_internal(
msg.baseheaderv2->mcnt = uiMsgCount++;

/* Fill base header conditional parameters */
msg.headerextrav2.msin = (uint8_t)(DLT_MSIN_VERB | (DLT_TYPE_LOG << DLT_MSIN_MSTP_SHIFT)
| ((level << DLT_MSIN_MTIN_SHIFT) & DLT_MSIN_MTIN));
msg.headerextrav2.msin =
(uint8_t)(DLT_MSIN_VERB | (DLT_TYPE_LOG << DLT_MSIN_MSTP_SHIFT) | ((level << DLT_MSIN_MTIN_SHIFT) & DLT_MSIN_MTIN));
msg.headerextrav2.noar = 1; /* number of arguments */
memset(msg.headerextrav2.seconds, 0, 5);
msg.headerextrav2.nanoseconds = 0;
Expand Down Expand Up @@ -2551,8 +2580,8 @@ int dlt_daemon_log_internal(
DLT_HTYP_UEH | DLT_HTYP_WEID | DLT_HTYP_WSID | DLT_HTYP_WTMS | DLT_HTYP_PROTOCOL_VERSION1;
msg.standardheader->mcnt = uiMsgCount++;

uiExtraSize = (uint32_t)(DLT_STANDARD_HEADER_EXTRA_SIZE(msg.standardheader->htyp)
+ (DLT_IS_HTYP_UEH(msg.standardheader->htyp) ? sizeof(DltExtendedHeader) : 0));
uiExtraSize =
(uint32_t)(DLT_STANDARD_HEADER_EXTRA_SIZE(msg.standardheader->htyp) + (DLT_IS_HTYP_UEH(msg.standardheader->htyp) ? sizeof(DltExtendedHeader) : 0));
msg.headersize =
(int32_t)((size_t)sizeof(DltStorageHeader) + (size_t)sizeof(DltStandardHeader) + (size_t)uiExtraSize);

Expand All @@ -2567,8 +2596,8 @@ int dlt_daemon_log_internal(
msg.extendedheader =
(DltExtendedHeader*)(msg.headerbuffer + sizeof(DltStorageHeader) + sizeof(DltStandardHeader)
+ DLT_STANDARD_HEADER_EXTRA_SIZE(msg.standardheader->htyp));
msg.extendedheader->msin = (uint8_t)(DLT_MSIN_VERB | (DLT_TYPE_LOG << DLT_MSIN_MSTP_SHIFT)
| ((level << DLT_MSIN_MTIN_SHIFT) & DLT_MSIN_MTIN));
msg.extendedheader->msin =
(uint8_t)(DLT_MSIN_VERB | (DLT_TYPE_LOG << DLT_MSIN_MSTP_SHIFT) | ((level << DLT_MSIN_MTIN_SHIFT) & DLT_MSIN_MTIN));
msg.extendedheader->noar = 1;
dlt_set_id(msg.extendedheader->apid, app_id);
dlt_set_id(msg.extendedheader->ctid, ctx_id);
Expand Down Expand Up @@ -2948,8 +2977,8 @@ int dlt_daemon_process_client_messages(
if ((0 < receiver->fd) && DLT_MSG_IS_CONTROL_REQUEST_V2(&(daemon_local->msgv2)))
dlt_daemon_client_process_control_v2(
receiver->fd, daemon, daemon_local, &(daemon_local->msgv2), daemon_local->flags.vflag);
bytes_to_be_removed = (int)(daemon_local->msgv2.headersizev2 + daemon_local->msgv2.datasize
- (int32_t)daemon_local->msgv2.storageheadersizev2);
bytes_to_be_removed =
(int)(daemon_local->msgv2.headersizev2 + daemon_local->msgv2.datasize - (int32_t)daemon_local->msgv2.storageheadersizev2);

if (daemon_local->msg.found_serialheader)
bytes_to_be_removed += (int)sizeof(dltSerialHeader);
Expand All @@ -2973,8 +3002,8 @@ int dlt_daemon_process_client_messages(
dlt_daemon_client_process_control(
receiver->fd, daemon, daemon_local, &(daemon_local->msg), daemon_local->flags.vflag);

bytes_to_be_removed = (int)((size_t)daemon_local->msg.headersize + (size_t)daemon_local->msg.datasize
- (size_t)sizeof(DltStorageHeader));
bytes_to_be_removed =
(int)((size_t)daemon_local->msg.headersize + (size_t)daemon_local->msg.datasize - (size_t)sizeof(DltStorageHeader));

if (daemon_local->msg.found_serialheader)
bytes_to_be_removed += (int)sizeof(dltSerialHeader);
Expand Down Expand Up @@ -3194,8 +3223,8 @@ int dlt_daemon_process_control_messages(
if ((0 < receiver->fd) && DLT_MSG_IS_CONTROL_REQUEST_V2(&(daemon_local->msgv2)))
dlt_daemon_client_process_control_v2(
receiver->fd, daemon, daemon_local, &(daemon_local->msgv2), daemon_local->flags.vflag);
bytes_to_be_removed = (int)(daemon_local->msgv2.headersizev2 + daemon_local->msgv2.datasize
- (int32_t)daemon_local->msgv2.storageheadersizev2);
bytes_to_be_removed =
(int)(daemon_local->msgv2.headersizev2 + daemon_local->msgv2.datasize - (int32_t)daemon_local->msgv2.storageheadersizev2);

if (daemon_local->msg.found_serialheader)
bytes_to_be_removed += (int)sizeof(dltSerialHeader);
Expand Down Expand Up @@ -3229,8 +3258,8 @@ int dlt_daemon_process_control_messages(
}
}

bytes_to_be_removed = (int)((size_t)daemon_local->msg.headersize + (size_t)daemon_local->msg.datasize
- sizeof(DltStorageHeader));
bytes_to_be_removed =
(int)((size_t)daemon_local->msg.headersize + (size_t)daemon_local->msg.datasize - sizeof(DltStorageHeader));

if (daemon_local->msg.found_serialheader)
bytes_to_be_removed += (int)sizeof(dltSerialHeader);
Expand Down Expand Up @@ -4636,8 +4665,8 @@ int dlt_daemon_process_user_message_log(DltDaemon* daemon, DltDaemonLocal* daemo
}

/* keep not read data in buffer */
size = (int)((size_t)daemon_local->msg.headersize + (size_t)daemon_local->msg.datasize
- sizeof(DltStorageHeader) + sizeof(DltUserHeader));
size =
(int)((size_t)daemon_local->msg.headersize + (size_t)daemon_local->msg.datasize - sizeof(DltStorageHeader) + sizeof(DltUserHeader));

if (daemon_local->msg.found_serialheader)
size += (int)sizeof(dltSerialHeader);
Expand Down
23 changes: 12 additions & 11 deletions src/daemon/dlt_daemon_client.c
Original file line number Diff line number Diff line change
Expand Up @@ -561,8 +561,9 @@ int dlt_daemon_client_send_message_to_all_client_v2(DltDaemon* daemon, DltDaemon

/* Re-parse extended parameters from the new buffer to update pointers */
DltHtyp2ContentType msgcontent = daemon_local->msgv2.baseheaderv2->htyp2 & MSGCONTENT_MASK;
unsigned int parse_len = (unsigned int)daemon_local->msgv2.headersizev2 - daemon_local->msgv2.storageheadersizev2;
if (dlt_message_get_extendedparameters_from_recievedbuffer_v2(
&(daemon_local->msgv2), new_headerbufferv2 + daemon_local->msgv2.storageheadersizev2, msgcontent)
&(daemon_local->msgv2), new_headerbufferv2 + daemon_local->msgv2.storageheadersizev2, parse_len, msgcontent)
!= DLT_RETURN_OK) {
dlt_vlog(LOG_WARNING, "%s: failed to get message extended parameters.\n", __func__);
return DLT_DAEMON_ERROR_UNKNOWN;
Expand Down Expand Up @@ -707,8 +708,8 @@ int dlt_daemon_client_send_control_message_v2(
msg->baseheaderextrasizev2 = (int32_t)dlt_message_get_extraparameters_size_v2(DLT_CONTROL_MSG);
msg->extendedheadersizev2 = (uint32_t)((daemon->ecuid2len) + 1 + appidlen + 1 + ctxidlen + 1);

msg->headersizev2 = (int32_t)(msg->storageheadersizev2 + msg->baseheadersizev2 + msg->baseheaderextrasizev2
+ msg->extendedheadersizev2);
msg->headersizev2 =
(int32_t)(msg->storageheadersizev2 + msg->baseheadersizev2 + msg->baseheaderextrasizev2 + msg->extendedheadersizev2);

if (msg->headerbufferv2 != NULL) {
free(msg->headerbufferv2);
Expand Down Expand Up @@ -1499,8 +1500,8 @@ void dlt_daemon_control_get_log_info(
if ((req->options == 5) || (req->options == 6) || (req->options == 7))
sizecont += sizeof(int8_t); /* trace status */

resp.datasize += (int32_t)(((size_t)num_applications * (sizeof(uint32_t) + sizeof(uint16_t)))
+ ((size_t)num_contexts * sizecont));
resp.datasize +=
(int32_t)(((size_t)num_applications * (sizeof(uint32_t) + sizeof(uint16_t))) + ((size_t)num_contexts * sizecont));

resp.datasize += (int32_t)sizeof(uint16_t);

Expand Down Expand Up @@ -1584,8 +1585,8 @@ void dlt_daemon_control_get_log_info(
memcpy(resp.databuffer, &sid, sizeof(uint32_t));
offset += sizeof(uint32_t);

value = (int8_t)(((num_applications != 0) && (num_contexts != 0)) ? req->options :
8); /* 8 = no matching context found */
value = (int8_t)(((num_applications != 0) && (num_contexts != 0)) ? req->options : 8); /* 8 = no matching context
found */

memcpy(resp.databuffer + offset, &value, sizeof(int8_t));
offset += sizeof(int8_t);
Expand Down Expand Up @@ -1965,8 +1966,8 @@ void dlt_daemon_control_get_log_info_v2(
memcpy(resp.databuffer, &sid, sizeof(uint32_t));
offset += sizeof(uint32_t);

value = (int8_t)(((num_applications != 0) && (num_contexts != 0)) ? req->options :
8); /* 8 = no matching context found */
value = (int8_t)(((num_applications != 0) && (num_contexts != 0)) ? req->options : 8); /* 8 = no matching context
found */

memcpy(resp.databuffer + offset, &value, sizeof(int8_t));
offset += sizeof(int8_t);
Expand Down Expand Up @@ -2398,8 +2399,8 @@ int dlt_daemon_control_message_unregister_context_v2(
return -1;

/* prepare payload of data */
contextSize = (uint8_t)(sizeof(uint32_t) + sizeof(uint8_t) + sizeof(uint8_t) + apidlen + sizeof(uint8_t) + ctidlen
+ DLT_ID_SIZE);
contextSize =
(uint8_t)(sizeof(uint32_t) + sizeof(uint8_t) + sizeof(uint8_t) + apidlen + sizeof(uint8_t) + ctidlen + DLT_ID_SIZE);

msg.datasize = contextSize;

Expand Down
2 changes: 1 addition & 1 deletion src/daemon/dlt_daemon_event_handler.c
Original file line number Diff line number Diff line change
Expand Up @@ -112,7 +112,7 @@ static void dlt_event_handler_enable_fd(DltEventHandler* ev, int fd, int mask)
{
if (ev->max_nfds <= ev->nfds) {
nfds_t i = ev->nfds;
nfds_t max = 2 * ev->max_nfds;
nfds_t max = ev->max_nfds ? 2 * ev->max_nfds : 1;
struct pollfd* tmp = realloc(ev->pfd, (size_t)max * sizeof(*ev->pfd));

if (!tmp) {
Expand Down
4 changes: 2 additions & 2 deletions src/lib/dlt_client.c
Original file line number Diff line number Diff line change
Expand Up @@ -856,8 +856,8 @@ DltReturnValue dlt_client_send_ctrl_msg_v2(DltClient* client, char* apid, char*
msg.baseheaderextrasizev2 = (int32_t)dlt_message_get_extraparameters_size_v2(DLT_CONTROL_MSG);
msg.extendedheadersizev2 = (uint32_t)(client->ecuid2len) + 1 + appidlen + 1 + ctxidlen + 1;

msg.headersizev2 = (int32_t)(msg.storageheadersizev2 + msg.baseheadersizev2 + msg.baseheaderextrasizev2
+ msg.extendedheadersizev2);
msg.headersizev2 =
(int32_t)(msg.storageheadersizev2 + msg.baseheadersizev2 + msg.baseheaderextrasizev2 + msg.extendedheadersizev2);

if (msg.headerbufferv2 != NULL) {
free(msg.headerbufferv2);
Expand Down
Loading
Loading