Skip to content
Closed
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
10 changes: 8 additions & 2 deletions src/lib/dlt_user.c
Original file line number Diff line number Diff line change
Expand Up @@ -4673,7 +4673,12 @@ DltReturnValue dlt_with_filename_and_line_number(const char *fina, const int lin

/* Set filename and line number */
dlt_user.with_filename_and_line_number = 1;
dlt_user.filenamelen = (uint8_t)strlen(fina);

/* filenamelen is uint8_t (matching the V2 wire-format field width).
* Clamp to UINT8_MAX so the cast cannot overflow and the heap
* allocation cannot be undersized when strlen(fina) > 255. */
dlt_user.filenamelen = (strlen(fina) > UINT8_MAX) ? (uint8_t)UINT8_MAX : (uint8_t)strlen(fina);

if (dlt_user.filename != NULL) {
free(dlt_user.filename);
dlt_user.filename = NULL;
Expand All @@ -4684,7 +4689,8 @@ DltReturnValue dlt_with_filename_and_line_number(const char *fina, const int lin
dlt_vlog(LOG_ERR, "%s Could not allocate memory for filename", __func__);
return DLT_RETURN_ERROR;
}
strcpy(dlt_user.filename, fina);
strncpy(dlt_user.filename, fina, (size_t)dlt_user.filenamelen);
dlt_user.filename[(size_t)dlt_user.filenamelen] = '\0';

dlt_user.linenumber = (uint32_t)linr;
return DLT_RETURN_OK;
Expand Down
Loading