Commit Graph
38 Commits
Author SHA1 Message Date
b0ba9589d7 Fix findInArray misuse on MappingNodes in equality and contains (#2645)
recurseNodeObjectEqual and containsObject both used findInArray to
locate keys in a MappingNode's Content array. findInArray steps by 1,
so it matches against both keys (even indices) and values (odd indices).

In recurseNodeObjectEqual, when a null key in the LHS matched a null
value in the RHS at the last position, rhs.Content[indexInRHS+1]
accessed an out-of-bounds index, causing a panic.

In containsObject, a %2 guard prevented the panic but introduced false
negatives: when a null value appeared before the actual null key,
findInArray returned the value's odd index, the guard rejected it, and
the function reported the key as missing.

Both functions now use findKeyInMap, which steps by 2 and compares only
key positions. The %2 guard in containsObject is removed.

Reproducer for the panic (recurseNodeObjectEqual):

    echo '? [{~: ~}]
    : v1
    ? [{2: ~}]
    : v2' | yq '. += .'

Reproducer for the false negative (containsObject):

    printf '? 1\n: ~\n? ~\n: x\n' | yq 'contains({~: "x"})'

Found by OSS-Fuzz via the lima project's FuzzEvaluateExpression target.
https://issues.oss-fuzz.com/issues/383860504

Signed-off-by: Jan Dubois <jan@jandubois.com>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-04-06 18:30:44 +10:00
Mike Farah 176873e93a Refining add op 2025-06-12 15:41:27 +10:00
Mike Farah 88bfbec97b Fix add op when there are not matches piped in, #2383, #2384 2025-06-12 14:48:10 +10:00
Mike Farah 20407a07a5 Adding more tests to prevent regression again :sweat 2025-05-09 15:40:29 +10:00
Mike Farah 2c2487c0bd Fixing Regression in #2353, #2359, #2325 2025-05-09 15:29:44 +10:00
Mike Farah 337960a6d1 Fixing add when there is no node match #2325 2025-03-25 15:35:16 +11:00
Mike Farah f654fbf459 Fixed array subtraction update bug #2159 2024-09-29 15:21:11 +10:00
Mike FarahandGitHub 13d1bbb45f Generic ast (#1829)
Remove dependency on yaml.Node for internal AST representation. Yaml decoder is now just another decoder.
2023-10-18 12:11:53 +11:00
Mike Farah 55c0d485ba Fixed string, null concact consistency #1712 2023-08-30 09:46:45 +10:00
Mike FarahandGitHub 62d167c141 Variable loop - Fixes #1566 (#1577)
* Variable loop wip

* Variable loop wip

* Variable loop wip

* Variable loop wip

* Fixed variable operator to work like jq
2023-02-28 16:40:38 +11:00
Mike Farah 00c2be541d Added prepend array example 2023-01-11 12:19:46 +11:00
Mike Farah cf02b90624 Fixed sorting by date #1412 2022-11-04 12:21:12 +11:00
Mike Farah b20477210f Added missing validation for adding sequences to maps #1341 2022-09-16 10:04:48 +10:00
Mike Farah f393cf37c2 Dont clobber anchor when adding nodes - fixes #1269 2022-07-13 11:12:15 +10:00
Mike Farah 60c037f57e Can add string to scalars in any order #1234 2022-06-15 17:09:17 -07:00
Mike Farah 67c79b7cb1 Fixes append map bug when key matches value in existing map #1200 2022-04-28 14:45:45 +10:00
Mike Farah 0ffee92175 Fixed += with multiple matches #1145 2022-03-19 18:42:12 +11:00
Mike FarahandGitHub b35893d783 Date Time Ops (#1110)
* Added datetime operators

* Added date subtract support
2022-02-14 15:37:43 +11:00
Mike Farah d00153de71 Adding to array copies styling of previous elements #722 2022-02-04 09:24:48 +11:00
Mike Farah c3d815998a Auto style when adding to empty maps/arrays 2022-01-27 09:58:13 +11:00
Mike Farah 9b1a7bf451 Added support for adding objects 2022-01-23 11:35:44 +11:00
Mike Farah a6c79f3410 Multiply, substract with custom types 2022-01-22 16:12:59 +11:00
Mike Farah 50df792e49 Auto cast for add 2022-01-22 13:17:16 +11:00
Mike FarahandGitHub df32baedf1 Added XML decoder (#1044) 2021-12-21 15:02:07 +11:00
Mike Farah de90b3e85e gitbook wip 2021-11-03 22:37:07 +11:00
Mike Farah 542efd8928 Update append array docs 2021-07-07 15:36:43 +10:00
Mike Farah ce3e347157 Fixed append array issue https://github.com/mikefarah/yq/issues/874 2021-07-07 15:30:45 +10:00
Mike Farah 179c44aacc Fixing readonly ops not to modify context when paths dont exist 2021-05-16 14:36:13 +10:00
Mike Farah f7b50e9853 Fixed += operator (https://github.com/mikefarah/yq/issues/750) 2021-03-19 12:36:05 +11:00
Mike Farah c77001f969 Can add and merge append to null 2021-02-11 10:58:40 +11:00
Mike Farah f7cfdc29e1 cross function fix wip 2021-02-11 10:58:40 +11:00
Mike Farah 461661112c Better add documentation 2021-02-11 10:58:40 +11:00
Mike Farah 578f2c27f9 Added scalar addition 2021-02-11 10:58:40 +11:00
Mike Farah ca8cd78616 Add now uses crossFunction 2020-12-21 11:54:03 +11:00
Mike Farah 3a030651a3 Added append equals, merge append. Fixed creating numeric arrays 2020-11-28 11:24:16 +11:00
Mike Farah 3f48201a19 wip 2020-11-28 10:46:04 +11:00
Mike Farah 3cecb4e383 wip 2020-11-28 10:41:09 +11:00
Mike Farah 1ce30b25dc Add operator! 2020-11-24 13:07:19 +11:00