Skip to content

Commit 835256c

Browse files
committed
fix: [stix2 import] Fixed STIX 2.0 multiple Observable objects fetching from Observed Data objects
- Avoiding infinite recursive calls
1 parent a27f5a1 commit 835256c

File tree

1 file changed

+13
-13
lines changed

1 file changed

+13
-13
lines changed

misp_stix_converter/stix2misp/converters/stix2_observed_data_converter.py

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -251,18 +251,19 @@ def _extract_referenced_ids_from_observable_objects(
251251

252252
def _fetch_multiple_observable_ids(
253253
self, observed_data: _OBSERVED_DATA_TYPING,
254-
object_id: str) -> Generator:
255-
yield object_id
254+
identifiers: set, object_id: str) -> Generator:
255+
identifiers.add(object_id)
256256
for key, value in observed_data.objects[object_id].items():
257-
if key.endswith('_ref'):
258-
yield from self._fetch_multiple_observable_ids(
259-
observed_data, value
257+
if key.endswith('_ref') and value not in identifiers:
258+
self._fetch_multiple_observable_ids(
259+
observed_data, identifiers, value
260260
)
261261
if key.endswith('_refs'):
262262
for reference in value:
263-
yield from self._fetch_multiple_observable_ids(
264-
observed_data, reference
265-
)
263+
if reference not in identifiers:
264+
self._fetch_multiple_observable_ids(
265+
observed_data, identifiers, reference
266+
)
266267

267268
def _parse_multiple_observable_object_refs(
268269
self, observed_data: ObservedData_v21,
@@ -304,13 +305,12 @@ def _parse_multiple_observable_objects(
304305
for object_id in observable_objects.keys():
305306
if observable_objects[object_id]['used']:
306307
continue
308+
self._fetch_multiple_observable_ids(
309+
observed_data, identifiers := set(), object_id
310+
)
307311
observables = {
308312
identifier: observable_objects[identifier]
309-
for identifier in set(
310-
self._fetch_multiple_observable_ids(
311-
observed_data, object_id
312-
)
313-
)
313+
for identifier in identifiers
314314
}
315315
if object_id in referenced_ids:
316316
for reference in referenced_ids[object_id]:

0 commit comments

Comments
 (0)