瀏覽代碼

pike: init head list and safety check

- related to GH #1822
Daniel-Constantin Mierla 6 年之前
父節點
當前提交
a055214404
共有 1 個文件被更改,包括 2 次插入1 次删除
  1. 2 1
      src/modules/pike/pike_funcs.c

+ 2 - 1
src/modules/pike/pike_funcs.c

@@ -178,6 +178,7 @@ void clean_routine(unsigned int ticks , void *param)
 	 * be at least one element removed */
 	 * be at least one element removed */
 	if (timer==0 || is_list_empty( timer )) return; /* quick exit */
 	if (timer==0 || is_list_empty( timer )) return; /* quick exit */
 
 
+	memset(&head, 0, sizeof(struct list_link));
 	/* get the expired elements */
 	/* get the expired elements */
 	lock_get( timer_lock );
 	lock_get( timer_lock );
 	/* check again for empty list */
 	/* check again for empty list */
@@ -201,7 +202,7 @@ void clean_routine(unsigned int ticks , void *param)
 			continue;
 			continue;
 
 
 		lock_tree_branch( i );
 		lock_tree_branch( i );
-		for( ll=head.next ; ll!=&head ; ) {
+		for( ll=head.next; ll!=&head && ll!=NULL; ) {
 			node = ll2ipnode( ll );
 			node = ll2ipnode( ll );
 			ll = ll->next;
 			ll = ll->next;
 			/* skip nodes from a different branch */
 			/* skip nodes from a different branch */