Browse Source

presence: segfault on presentity replace

Viktor Litvinov 1 tháng trước cách đây
mục cha
commit
ada2d37e04
1 tập tin đã thay đổi với 5 bổ sung1 xóa
  1. 5 1
      src/modules/presence/hash.c

+ 5 - 1
src/modules/presence/hash.c

@@ -1058,6 +1058,7 @@ int ps_ptable_replace(ps_presentity_t *ptm, ps_presentity_t *pt)
 	ps_presentity_t ptc;
 	ps_presentity_t ptv;
 	ps_presentity_t *ptn = NULL;
+	ps_presentity_t *ptnx = NULL;
 	uint32_t idx = 0;
 
 	/* copy struct to fill in missing fields */
@@ -1088,9 +1089,12 @@ int ps_ptable_replace(ps_presentity_t *ptm, ps_presentity_t *pt)
 			} else {
 				_ps_ptable->slots[idx].plist = ptn->next;
 			}
+			ptnx = ptn->next;
 			ps_presentity_free(ptn, 0);
+			ptn = ptnx;
+		} else {
+			ptn = ptn->next;
 		}
-		ptn = ptn->next;
 	}
 
 	ptn = ps_presentity_new(&ptv, 0);