diff options
-rw-r--r-- | include/osmocom/core/utils.h | 3 | ||||
-rw-r--r-- | src/logging_gsmtap.c | 7 |
2 files changed, 6 insertions, 4 deletions
diff --git a/include/osmocom/core/utils.h b/include/osmocom/core/utils.h index 72266ae6..f1e011fe 100644 --- a/include/osmocom/core/utils.h +++ b/include/osmocom/core/utils.h @@ -26,6 +26,9 @@ /*! Number of bytes necessary to store given BITS */ #define OSMO_BYTES_FOR_BITS(BITS) ((BITS + 8 - 1) / 8) +/*! Copy a C-string into a sized buffer using sizeof to detect buffer's size */ +#define OSMO_STRLCPY_ARRAY(array, src) osmo_strlcpy(array, src, sizeof(array)) + #include <stdbool.h> #include <stdint.h> #include <stdio.h> diff --git a/src/logging_gsmtap.c b/src/logging_gsmtap.c index 82535adc..cb379b07 100644 --- a/src/logging_gsmtap.c +++ b/src/logging_gsmtap.c @@ -81,17 +81,16 @@ static void _gsmtap_raw_output(struct log_target *target, int subsys, /* Logging header */ golh = (struct gsmtap_osmocore_log_hdr *) msgb_put(msg, sizeof(*golh)); - osmo_strlcpy(golh->proc_name, target->tgt_gsmtap.ident, - sizeof(golh->proc_name)); + OSMO_STRLCPY_ARRAY(golh->proc_name, target->tgt_gsmtap.ident); if (subsys_name) - osmo_strlcpy(golh->subsys, subsys_name+1, sizeof(golh->subsys)); + OSMO_STRLCPY_ARRAY(golh->subsys, subsys_name + 1); else golh->subsys[0] = '\0'; /* strip all leading path elements from file, if any. */ file_basename = strrchr(file, '/'); file = (file_basename && file_basename[1])? file_basename + 1 : file; - osmo_strlcpy(golh->src_file.name, file, sizeof(golh->src_file.name)); + OSMO_STRLCPY_ARRAY(golh->src_file.name, file); golh->src_file.line_nr = osmo_htonl(line); golh->level = level; /* we always store the timestamp in the message, irrespective |