[phodav: 1/2] server: don't overwrite error in delete enumeration




commit 223e2f5c9019007ba4c622670de3bd4a533231ae
Author: Jakub Janků <jjanku redhat com>
Date:   Sat Aug 22 14:27:05 2020 +0200

    server: don't overwrite error in delete enumeration
    
    If g_file_enumerator_next_file() returns NULL and sets error,
    the error variable must be cleared before it can be used
    with g_file_delete() beneath the while loop.
    
    Otherwise, if g_file_delete() fails as well, the error is
    overwritten and GLib complains:
    
    "GError set over the top of a previous GError or uninitialized memory.
    This indicates a bug in someone's code.
    You must ensure an error is NULL before it's set.
    The overwriting error message was: %s"
    
    Signed-off-by: Jakub Janků <jjanku redhat com>

 libphodav/phodav-method-delete.c | 6 ++++++
 1 file changed, 6 insertions(+)
---
diff --git a/libphodav/phodav-method-delete.c b/libphodav/phodav-method-delete.c
index fd7f88c..3a0a114 100644
--- a/libphodav/phodav-method-delete.c
+++ b/libphodav/phodav-method-delete.c
@@ -61,6 +61,12 @@ phodav_delete_file (const gchar *path, GFile *file,
       g_clear_object (&e);
     }
 
+  if (error)
+    {
+      g_warning ("DELETE: enumeration error: %s", error->message);
+      g_clear_error (&error);
+    }
+
   if (!g_file_delete (file, cancellable, &error) && mstatus)
     {
       status = error_to_status (error);


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