[evolution-data-server] Address some issues reported by Undefined Behavior Sanitizer



commit 036b0edc9013451896add51168ac9d7827ca754c
Author: Milan Crha <mcrha redhat com>
Date:   Thu Jan 25 11:33:03 2018 +0100

    Address some issues reported by Undefined Behavior Sanitizer
    
    The runtime warning was:
    - null pointer passed as argument NNN, which is declared to never be null

 src/calendar/libecal/e-cal-recur.c             |   14 ++++++++------
 src/camel/camel-provider.c                     |    3 ++-
 src/camel/camel-store.c                        |    3 ++-
 src/camel/camel-vee-store.c                    |    3 ++-
 src/camel/providers/imapx/camel-imapx-logger.c |    3 ++-
 5 files changed, 16 insertions(+), 10 deletions(-)
---
diff --git a/src/calendar/libecal/e-cal-recur.c b/src/calendar/libecal/e-cal-recur.c
index fc14fb1..691496c 100644
--- a/src/calendar/libecal/e-cal-recur.c
+++ b/src/calendar/libecal/e-cal-recur.c
@@ -2020,9 +2020,10 @@ generate_instances_for_chunk (ECalComponent *comp,
        cal_obj_sort_occurrences (occs);
        cal_obj_sort_occurrences (ex_occs);
 
-       qsort (
-               rdate_periods->data, rdate_periods->len,
-               sizeof (CalObjRecurrenceDate), cal_obj_time_compare_func);
+       if (rdate_periods->data && rdate_periods->len) {
+               qsort (rdate_periods->data, rdate_periods->len,
+                       sizeof (CalObjRecurrenceDate), cal_obj_time_compare_func);
+       }
 
        /* Create the final array, by removing the exceptions from the
         * occurrences, and removing any duplicates. */
@@ -2677,9 +2678,10 @@ cal_obj_initialize_recur_data (RecurData *recur_data,
 static void
 cal_obj_sort_occurrences (GArray *occs)
 {
-       qsort (
-               occs->data, occs->len, sizeof (CalObjTime),
-               cal_obj_time_compare_func);
+       if (occs->data && occs->len) {
+               qsort (occs->data, occs->len, sizeof (CalObjTime),
+                       cal_obj_time_compare_func);
+       }
 }
 
 static void
diff --git a/src/camel/camel-provider.c b/src/camel/camel-provider.c
index cd13f46..ba7a87d 100644
--- a/src/camel/camel-provider.c
+++ b/src/camel/camel-provider.c
@@ -129,7 +129,8 @@ provider_register_internal (CamelProvider *provider)
 #define P_(string) dgettext (provider->translation_domain, string)
 
        provider->name = P_(provider->name);
-       provider->description = P_(provider->description);
+       if (provider->description)
+               provider->description = P_(provider->description);
 
        conf = provider->extra_conf;
        if (conf != NULL) {
diff --git a/src/camel/camel-store.c b/src/camel/camel-store.c
index 577b6bb..8b3b97d 100644
--- a/src/camel/camel-store.c
+++ b/src/camel/camel-store.c
@@ -1174,7 +1174,8 @@ camel_folder_info_build (GPtrArray *folders,
                namespace_ = "";
        nlen = strlen (namespace_);
 
-       qsort (folders->pdata, folders->len, sizeof (folders->pdata[0]), folder_info_cmp);
+       if (folders->pdata && folders->len)
+               qsort (folders->pdata, folders->len, sizeof (folders->pdata[0]), folder_info_cmp);
 
        /* Hash the folders. */
        hash = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, NULL);
diff --git a/src/camel/camel-vee-store.c b/src/camel/camel-vee-store.c
index c6836fe..122f569 100644
--- a/src/camel/camel-vee-store.c
+++ b/src/camel/camel-vee-store.c
@@ -288,7 +288,8 @@ vee_store_get_folder_info_sync (CamelStore *store,
 
        infos_hash = g_hash_table_new (g_str_hash, g_str_equal);
        folders = camel_store_dup_opened_folders (store);
-       qsort (folders->pdata, folders->len, sizeof (folders->pdata[0]), vee_folder_cmp);
+       if (folders->pdata && folders->len)
+               qsort (folders->pdata, folders->len, sizeof (folders->pdata[0]), vee_folder_cmp);
        for (i = 0; i < folders->len; i++) {
                CamelVeeFolder *folder = folders->pdata[i];
                const gchar *full_name;
diff --git a/src/camel/providers/imapx/camel-imapx-logger.c b/src/camel/providers/imapx/camel-imapx-logger.c
index 084bc27..50819e5 100644
--- a/src/camel/providers/imapx/camel-imapx-logger.c
+++ b/src/camel/providers/imapx/camel-imapx-logger.c
@@ -118,7 +118,8 @@ imapx_logger_convert (GConverter *converter,
 
        min_size = MIN (inbuf_size, outbuf_size);
 
-       memcpy (outbuf, inbuf, min_size);
+       if (inbuf && min_size)
+               memcpy (outbuf, inbuf, min_size);
        *bytes_read = *bytes_written = min_size;
 
        login_start = g_strstr_len (outbuf, min_size, " LOGIN ");


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]