瀏覽代碼

Ticket 49380 - Crash when adding invalid replication agreement

    Bug Description:  If you add a replication agreement with an invalid "replicaEnabled" value
                      the server crashes when freeing the replica schedule.  This is because the
                      schedule never gets allocated before the rror conidtion is hit, and then
                      it get dereferenced.

    Fix Description:  Check for a NULL schedule before trying to destroy it.

    https://pagure.io/389-ds-base/issue/49380

    Reviewed by: tbordaz(Thanks!)
Mark Reynolds 8 年之前
父節點
當前提交
610db4727e
共有 1 個文件被更改,包括 8 次插入1 次删除
  1. 8 1
      ldap/servers/plugins/replication/repl5_schedule.c

+ 8 - 1
ldap/servers/plugins/replication/repl5_schedule.c

@@ -130,6 +130,9 @@ schedule_destroy(Schedule *s)
 {
     int i;
 
+    if (s == NULL) {
+        return;
+    }
     /* unschedule update window event if exists */
     unschedule_window_state_change_event(s);
 
@@ -172,11 +175,15 @@ free_schedule_list(schedule_item **schedule_list)
 int
 schedule_set(Schedule *sch, Slapi_Attr *attr)
 {
-    int return_value;
+    int return_value = -1;
     schedule_item *si = NULL;
     schedule_item *new_schedule_list = NULL;
     int valid = 1;
 
+    if (sch == NULL) {
+        return return_value;
+    }
+
     if (NULL != attr) {
         int ind;
         Slapi_Value *sval;