diff --git a/CHANGELOG-Japanese.md b/CHANGELOG-Japanese.md index c92f074bb..f41e53bf5 100644 --- a/CHANGELOG-Japanese.md +++ b/CHANGELOG-Japanese.md @@ -2,24 +2,25 @@ ## 2.13.0 [2024/XX/XX] "XXX Release" -**New Features:** +**新機能:** - XXX -**Enhancements:** +**改善:** - `update-rules`コマンドを実行したときに、検知ルールが変更された場合にルール名を出力するようにした。以前は`modified:`フィールドを更新したルールだけが表示されていた。(#1243) (@hitenkoku) - `json-timeline`コマンドの標準出力でJSONフォーマットを出力するように修正した。 (#1197) (@hitenkoku) +- JSON入力でデータが配列内にある場合に解析できるようにした。 (#1248) (@hitenkoku) -**Bug Fixes:** +**バグ修正:** - XXX -**Other:** +**その他:** - XXX -## 2.12.0 [2023/12/23] "SECCON Christmas Release" +## 2.12.0 [2023/12/24] "SECCON Christmas Release" **改善:** diff --git a/CHANGELOG.md b/CHANGELOG.md index ba66e9232..24baa7799 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ - Any time there is a change in a detection rule, it will be displayed when running the `update-rules` command. Previously, only rules that updated their `modified:` field would be displayed. (#1243) (@hitenkoku) - Modified to Output JSON format in `json-timeline` command for standard output. (#1197) (@hitenkoku) +- Added support for parsing JSON input when the data is inside an array. (#1248) (@hitenkoku) **Bug Fixes:** diff --git a/src/main.rs b/src/main.rs index dfa100784..652860394 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1622,10 +1622,15 @@ impl App { break; } record_cnt += 1; - let mut data = next_rec.unwrap(); // ChannelなどのデータはEvent -> Systemに存在する必要があるが、他処理のことも考え、Event -> EventDataのデータをそのまま投入する形にした。cloneを利用しているのはCopy trait実装がserde_json::Valueにないため - data["Event"]["System"] = data["Event"]["EventData"].clone(); + + if data["Event"]["EventData"].is_object() { + data["Event"]["System"] = data["Event"]["EventData"].clone(); + } else if data["Event"]["EventData"].is_array() { + data["Event"]["System"] = + data["Event"]["EventData"].as_array().unwrap()[0].clone(); + } data["Event"]["System"] .as_object_mut() .unwrap()