Commit eaf52bd
authored
Reject array insert(pos, first, last) iterators not pointing into an array
The array-range insert() overload checked that pos fits the current
value and that first/last share the same owning value, but never
verified that value is itself an array. Passing iterators from an
object, a primitive, or null handed value-initialized (singular)
std::vector iterators straight to array_t::insert(), which is
undefined behavior. Add the missing is_array() check, mirroring the
equivalent check already present in the object-range insert()
overload.
Signed-off-by: Niels Lohmann <mail@nlohmann.me>1 parent 8e3cdd0 commit eaf52bd
4 files changed
Lines changed: 28 additions & 0 deletions
File tree
- docs/mkdocs/docs/api/basic_json
- include/nlohmann
- single_include/nlohmann
- tests/src
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
88 | 88 | | |
89 | 89 | | |
90 | 90 | | |
| 91 | + | |
| 92 | + | |
91 | 93 | | |
92 | 94 | | |
93 | 95 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
3425 | 3425 | | |
3426 | 3426 | | |
3427 | 3427 | | |
| 3428 | + | |
| 3429 | + | |
| 3430 | + | |
| 3431 | + | |
| 3432 | + | |
| 3433 | + | |
3428 | 3434 | | |
3429 | 3435 | | |
3430 | 3436 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
24932 | 24932 | | |
24933 | 24933 | | |
24934 | 24934 | | |
| 24935 | + | |
| 24936 | + | |
| 24937 | + | |
| 24938 | + | |
| 24939 | + | |
| 24940 | + | |
24935 | 24941 | | |
24936 | 24942 | | |
24937 | 24943 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
641 | 641 | | |
642 | 642 | | |
643 | 643 | | |
| 644 | + | |
| 645 | + | |
| 646 | + | |
| 647 | + | |
| 648 | + | |
| 649 | + | |
| 650 | + | |
| 651 | + | |
| 652 | + | |
| 653 | + | |
| 654 | + | |
| 655 | + | |
| 656 | + | |
| 657 | + | |
644 | 658 | | |
645 | 659 | | |
646 | 660 | | |
| |||
0 commit comments