Commit Graph

38 Commits

Author SHA1 Message Date
Jan Dubois
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 Farah
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 Farah
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 Farah
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 Farah
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