Fix: lib-logging: possible buffer not null terminated
[babeltrace.git] / lib / lib-logging.c
index 7e897fa38e457c3ae7ba1321662d6b6028dd965c..98572f161d4a8a5b2d9c1fd574f2d71ac4a8d887 100644 (file)
@@ -75,7 +75,7 @@
 
 #define LIB_LOGGING_BUF_SIZE   (4096 * 4)
 
-static char __thread lib_logging_buf[LIB_LOGGING_BUF_SIZE];
+static __thread char lib_logging_buf[LIB_LOGGING_BUF_SIZE];
 
 #define BUF_APPEND(_fmt, ...)                                          \
        do {                                                            \
@@ -100,10 +100,12 @@ static char __thread lib_logging_buf[LIB_LOGGING_BUF_SIZE];
 
 #define PRFIELD_GSTRING(_expr) PRFIELD((_expr) ? (_expr)->str : NULL)
 
+#define TMP_PREFIX_LEN 64
 #define SET_TMP_PREFIX(_prefix2)                                       \
        do {                                                            \
-               strcpy(tmp_prefix, prefix);                             \
-               strcat(tmp_prefix, (_prefix2));                         \
+               snprintf(tmp_prefix, TMP_PREFIX_LEN - 1, "%s%s",        \
+                       prefix, (_prefix2));                            \
+               tmp_prefix[TMP_PREFIX_LEN - 1] = '\0';                  \
        } while (0)
 
 static inline void format_component(char **buf_ch, bool extended,
@@ -185,7 +187,7 @@ static inline void format_array_field_class(char **buf_ch,
 static inline void format_field_class(char **buf_ch, bool extended,
                const char *prefix, const struct bt_field_class *field_class)
 {
-       char tmp_prefix[64];
+       char tmp_prefix[TMP_PREFIX_LEN];
 
        BUF_APPEND(", %stype=%s",
                PRFIELD(bt_common_field_class_type_string(field_class->type)));
@@ -472,7 +474,7 @@ static inline void format_trace_class(char **buf_ch, bool extended,
 static inline void format_trace(char **buf_ch, bool extended,
                const char *prefix, const struct bt_trace *trace)
 {
-       char tmp_prefix[64];
+       char tmp_prefix[TMP_PREFIX_LEN];
 
        if (trace->name.value) {
                BUF_APPEND(", %sname=\"%s\"", PRFIELD(trace->name.value));
@@ -503,7 +505,7 @@ static inline void format_stream_class(char **buf_ch, bool extended,
                const struct bt_stream_class *stream_class)
 {
        const struct bt_trace_class *trace_class;
-       char tmp_prefix[64];
+       char tmp_prefix[TMP_PREFIX_LEN];
 
        BUF_APPEND(", %sid=%" PRIu64, PRFIELD(stream_class->id));
 
@@ -548,7 +550,7 @@ static inline void format_event_class(char **buf_ch, bool extended,
 {
        const struct bt_stream_class *stream_class;
        const struct bt_trace_class *trace_class;
-       char tmp_prefix[64];
+       char tmp_prefix[TMP_PREFIX_LEN];
 
        BUF_APPEND(", %sid=%" PRIu64, PRFIELD(event_class->id));
 
@@ -605,7 +607,7 @@ static inline void format_stream(char **buf_ch, bool extended,
        const struct bt_stream_class *stream_class;
        const struct bt_trace_class *trace_class = NULL;
        const struct bt_trace *trace = NULL;
-       char tmp_prefix[64];
+       char tmp_prefix[TMP_PREFIX_LEN];
 
        BUF_APPEND(", %sid=%" PRIu64, PRFIELD(stream->id));
 
@@ -647,7 +649,7 @@ static inline void format_packet(char **buf_ch, bool extended,
 {
        const struct bt_stream *stream;
        const struct bt_trace_class *trace_class;
-       char tmp_prefix[64];
+       char tmp_prefix[TMP_PREFIX_LEN];
 
        if (!extended) {
                return;
@@ -681,7 +683,7 @@ static inline void format_event(char **buf_ch, bool extended,
        const struct bt_stream *stream;
        const struct bt_trace_class *trace_class;
        const struct bt_stream_class *stream_class;
-       char tmp_prefix[64];
+       char tmp_prefix[TMP_PREFIX_LEN];
 
        if (!extended) {
                return;
@@ -742,7 +744,7 @@ static inline void format_event(char **buf_ch, bool extended,
 static inline void format_clock_class(char **buf_ch, bool extended,
                const char *prefix, const struct bt_clock_class *clock_class)
 {
-       char tmp_prefix[64];
+       char tmp_prefix[TMP_PREFIX_LEN];
 
        if (clock_class->name.value) {
                BUF_APPEND(", %sname=\"%s\"", PRFIELD(clock_class->name.value));
@@ -781,7 +783,7 @@ static inline void format_clock_class(char **buf_ch, bool extended,
 static inline void format_clock_snapshot(char **buf_ch, bool extended,
                const char *prefix, const struct bt_clock_snapshot *clock_snapshot)
 {
-       char tmp_prefix[64];
+       char tmp_prefix[TMP_PREFIX_LEN];
        BUF_APPEND(", %svalue=%" PRIu64 ", %sns-from-origin=%" PRId64,
                PRFIELD(clock_snapshot->value_cycles),
                PRFIELD(clock_snapshot->ns_from_origin));
@@ -819,11 +821,16 @@ static inline void format_value(char **buf_ch, bool extended,
                BUF_APPEND(", %svalue=%d", PRFIELD(val));
                break;
        }
-       case BT_VALUE_TYPE_INTEGER:
+       case BT_VALUE_TYPE_UNSIGNED_INTEGER:
        {
-               int64_t val = bt_value_integer_get(value);
-
-               BUF_APPEND(", %svalue=%" PRId64, PRFIELD(val));
+               BUF_APPEND(", %svalue=%" PRIu64,
+                       PRFIELD(bt_value_unsigned_integer_get(value)));
+               break;
+       }
+       case BT_VALUE_TYPE_SIGNED_INTEGER:
+       {
+               BUF_APPEND(", %svalue=%" PRId64,
+                       PRFIELD(bt_value_signed_integer_get(value)));
                break;
        }
        case BT_VALUE_TYPE_REAL:
@@ -864,7 +871,7 @@ static inline void format_value(char **buf_ch, bool extended,
 static inline void format_message(char **buf_ch, bool extended,
                const char *prefix, const struct bt_message *msg)
 {
-       char tmp_prefix[64];
+       char tmp_prefix[TMP_PREFIX_LEN];
 
        BUF_APPEND(", %stype=%s",
                PRFIELD(bt_message_type_string(msg->type)));
@@ -1003,7 +1010,7 @@ static inline void format_component_class(char **buf_ch, bool extended,
                const char *prefix,
                const struct bt_component_class *comp_class)
 {
-       char tmp_prefix[64];
+       char tmp_prefix[TMP_PREFIX_LEN];
 
        BUF_APPEND(", %stype=%s, %sname=\"%s\"",
                PRFIELD(bt_component_class_type_string(comp_class->type)),
@@ -1030,7 +1037,7 @@ static inline void format_component_class(char **buf_ch, bool extended,
 static inline void format_component(char **buf_ch, bool extended,
                const char *prefix, const struct bt_component *component)
 {
-       char tmp_prefix[64];
+       char tmp_prefix[TMP_PREFIX_LEN];
 
        BUF_APPEND(", %sname=\"%s\"",
                PRFIELD_GSTRING(component->name));
@@ -1059,7 +1066,7 @@ static inline void format_component(char **buf_ch, bool extended,
 static inline void format_port(char **buf_ch, bool extended,
                const char *prefix, const struct bt_port *port)
 {
-       char tmp_prefix[64];
+       char tmp_prefix[TMP_PREFIX_LEN];
 
        BUF_APPEND(", %stype=%s, %sname=\"%s\"",
                PRFIELD(bt_port_type_string(port->type)),
@@ -1078,7 +1085,7 @@ static inline void format_port(char **buf_ch, bool extended,
 static inline void format_connection(char **buf_ch, bool extended,
                const char *prefix, const struct bt_connection *connection)
 {
-       char tmp_prefix[64];
+       char tmp_prefix[TMP_PREFIX_LEN];
 
        if (!extended) {
                return;
@@ -1100,7 +1107,7 @@ static inline void format_connection(char **buf_ch, bool extended,
 static inline void format_graph(char **buf_ch, bool extended,
                const char *prefix, const struct bt_graph *graph)
 {
-       char tmp_prefix[64];
+       char tmp_prefix[TMP_PREFIX_LEN];
 
        BUF_APPEND(", %sis-canceled=%d, %scan-consume=%d, "
                "%sconfig-state=%s",
@@ -1138,7 +1145,7 @@ static inline void format_message_iterator(char **buf_ch,
                const struct bt_message_iterator *iterator)
 {
        const char *type;
-       char tmp_prefix[64];
+       char tmp_prefix[TMP_PREFIX_LEN];
 
        if (iterator->type == BT_MESSAGE_ITERATOR_TYPE_SELF_COMPONENT_PORT_INPUT) {
                type = "BT_MESSAGE_ITERATOR_TYPE_SELF_COMPONENT_PORT_INPUT";
@@ -1202,7 +1209,7 @@ static inline void format_message_iterator(char **buf_ch,
 static inline void format_plugin(char **buf_ch, bool extended,
                const char *prefix, const struct bt_plugin *plugin)
 {
-       char tmp_prefix[64];
+       char tmp_prefix[TMP_PREFIX_LEN];
 
        BUF_APPEND(", %stype=%s", PRFIELD(bt_plugin_type_string(plugin->type)));
 
This page took 0.026736 seconds and 4 git commands to generate.