build: Fix build when sanitizer are enabled
authorLuiz Augusto von Dentz <luiz.von.dentz@intel.com>
Mon, 20 Dec 2021 23:51:49 +0000 (15:51 -0800)
committerAyush Garg <ayush.garg@samsung.com>
Fri, 11 Mar 2022 13:38:38 +0000 (19:08 +0530)
This fixes various issues found when sanitizers are enabled.

Signed-off-by: Anuj Jain <anuj01.jain@samsung.com>
Signed-off-by: Ayush Garg <ayush.garg@samsung.com>
monitor/packet.c
peripheral/main.c
profiles/audio/a2dp.c
profiles/audio/avctp.c
profiles/network/bnep.c
src/shared/gatt-server.c
tools/mesh-gatt/util.c
tools/test-runner.c

index 04a4b2f..1cafadd 100755 (executable)
@@ -329,7 +329,8 @@ static void print_packet(struct timeval *tv, struct ucred *cred, char ident,
        if ((filter_mask & PACKET_FILTER_SHOW_INDEX) &&
                                        index != HCI_DEV_NONE) {
                if (use_color()) {
-                       n = sprintf(ts_str + ts_pos, "%s", COLOR_INDEX_LABEL);
+                       n = snprintf(ts_str + ts_pos, sizeof(ts_str) - ts_pos,
+                                    "%s", COLOR_INDEX_LABEL);
                        if (n > 0)
                                ts_pos += n;
                }
index b20006e..b4063d6 100755 (executable)
@@ -72,7 +72,7 @@ static void prepare_filesystem(void)
        if (!is_init)
                return;
 
-       for (i = 0; mount_table[i].fstype; i++) {
+       for (i = 0; mount_table[i].fstype && mount_table[i].target; i++) {
                struct stat st;
 
                if (lstat(mount_table[i].target, &st) < 0) {
index 2c2e0c2..4cd4dde 100644 (file)
@@ -1415,9 +1415,12 @@ static gboolean a2dp_reconfigure(gpointer data)
        if (setup->rsep) {
                cap = avdtp_get_codec(setup->rsep->sep);
                rsep_codec = (struct avdtp_media_codec_capability *) cap->data;
+               /* Check that codec really match after closing */
+               if (sep->codec != rsep_codec->media_codec_type)
+                       setup->rsep = NULL;
        }
 
-       if (!setup->rsep || sep->codec != rsep_codec->media_codec_type)
+       if (!setup->rsep)
                setup->rsep = find_remote_sep(setup->chan, sep);
 
        if (!setup->rsep) {
index fc43e95..e51485b 100644 (file)
@@ -1239,7 +1239,7 @@ static int uinput_create(struct btd_device *device, const char *name,
        memset(&dev, 0, sizeof(dev));
 
        if (name) {
-               strncpy(dev.name, name, UINPUT_MAX_NAME_SIZE);
+               strncpy(dev.name, name, UINPUT_MAX_NAME_SIZE - 1);
                dev.name[UINPUT_MAX_NAME_SIZE - 1] = '\0';
        }
 
index 5a83fc8..da71d6a 100755 (executable)
@@ -143,7 +143,7 @@ static int bnep_connadd(int sk, uint16_t role, char *dev)
        struct bnep_connadd_req req;
 
        memset(&req, 0, sizeof(req));
-       strncpy(req.device, dev, 16);
+       strncpy(req.device, dev, 15);
        req.device[15] = '\0';
 
        req.sock = sk;
@@ -385,7 +385,7 @@ struct bnep *bnep_new(int sk, uint16_t local_role, uint16_t remote_role,
        session->io = g_io_channel_unix_new(dup_fd);
        session->src = local_role;
        session->dst = remote_role;
-       strncpy(session->iface, iface, 16);
+       strncpy(session->iface, iface, 15);
        session->iface[15] = '\0';
 
        g_io_channel_set_close_on_unref(session->io, TRUE);
index 0135b5c..dd7b001 100644 (file)
@@ -1145,8 +1145,6 @@ static void read_multiple_cb(struct bt_att_chan *chan, uint8_t opcode,
        }
 
        data = read_mult_data_new(server, chan, opcode, length / 2);
-       if (!data)
-               goto error;
 
        for (i = 0; i < data->num_handles; i++)
                data->handles[i] = get_le16(pdu + i * 2);
index e845c41..eb8b8eb 100644 (file)
@@ -41,9 +41,14 @@ void print_byte_array(const char *prefix, const void *ptr, int len)
        char *line, *bytes;
        int i;
 
-       line = g_malloc(strlen(prefix) + (16 * 3) + 2);
-       sprintf(line, "%s ", prefix);
-       bytes = line + strlen(prefix) + 1;
+       if (prefix) {
+               line = g_malloc(strlen(prefix) + (16 * 3) + 2);
+               sprintf(line, "%s ", prefix);
+               bytes = line + strlen(prefix) + 1;
+       } else {
+               line = g_malloc((16 * 3) + 2);
+               bytes = line + 1;
+       }
 
        for (i = 0; i < len; ++i) {
                sprintf(bytes, "%2.2x ", data[i]);
index 45b66df..80d9104 100755 (executable)
@@ -135,7 +135,7 @@ static void prepare_sandbox(void)
 {
        int i;
 
-       for (i = 0; mount_table[i].fstype; i++) {
+       for (i = 0; mount_table[i].fstype && mount_table[i].target; i++) {
                struct stat st;
 
                if (lstat(mount_table[i].target, &st) < 0) {