Explorar o código

libobs: Fix stack buffer overflow in build_current_order_info

liu.haibin %!s(int64=4) %!d(string=hai) anos
pai
achega
d6c77964c0
Modificáronse 1 ficheiros con 6 adicións e 2 borrados
  1. 6 2
      libobs/obs-scene.c

+ 6 - 2
libobs/obs-scene.c

@@ -3211,7 +3211,9 @@ build_current_order_info(obs_scene_t *scene,
 
 
 	obs_sceneitem_t *item = scene->first_item;
 	obs_sceneitem_t *item = scene->first_item;
 	while (item) {
 	while (item) {
-		da_push_back(items, &item);
+		struct obs_sceneitem_order_info info = {0};
+		info.item = item;
+		da_push_back(items, &info);
 
 
 		if (item->is_group) {
 		if (item->is_group) {
 			obs_scene_t *sub_scene = item->source->context.data;
 			obs_scene_t *sub_scene = item->source->context.data;
@@ -3221,7 +3223,9 @@ build_current_order_info(obs_scene_t *scene,
 			obs_sceneitem_t *sub_item = sub_scene->first_item;
 			obs_sceneitem_t *sub_item = sub_scene->first_item;
 
 
 			while (sub_item) {
 			while (sub_item) {
-				da_push_back(items, &item);
+				info.group = item;
+				info.item = sub_item;
+				da_push_back(items, &info);
 
 
 				sub_item = sub_item->next;
 				sub_item = sub_item->next;
 			}
 			}