hutool v5.8.21 was discovered to contain a buffer overflow via the component jsonArray.

### 版本情况

JDK版本：    1.8.0_362
hutool版本： 5.8.21

### 问题描述（包括截图）

1. 复现代码

```java
import cn.hutool.json.JSONObject;

public class JSONObjectTest {

    public static void main(String[] args) {
        JSONArray jSONArray = new JSONArray();
        Object element = new Object();
        jSONArray.add(1247626122, element);
    }
}

```

2. 堆栈信息

```
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
	at java.util.Arrays.copyOf(Arrays.java:3210)
	at java.util.Arrays.copyOf(Arrays.java:3181)
	at java.util.ArrayList.grow(ArrayList.java:267)
	at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:241)
	at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:233)
	at java.util.ArrayList.add(ArrayList.java:464)
	at cn.hutool.json.JSONArray.addRaw(JSONArray.java:594)
	at cn.hutool.json.JSONArray.add(JSONArray.java:352)
	at cn.hutool.json.JSONArray.add(JSONArray.java:461)
	at JSONArrayFuzzerTest19.main(JSONArrayFuzzerTest19.java:37)
```

3. 测试涉及到的文件（注意脱密）
见复现代码。

4. 分析

`jsonArray.add(idx, [element)`会在指定索引`idx`添加一个元素`element`。如果`jsonArray`长度小于指定索引，[`jsonArray.add()`就会通过循环不断添加null，直到jsonArray的长度等于指定索引值](https://github.com/dromara/hutool/blob/5889435e0998a4159f4c219ac001a44d50070b8c/hutool-json/src/main/java/cn/hutool/json/JSONArray.java#L461C8-L461C8)。如果这个索引特别大，比如1247626122，就会报告一个OOM异常。

`JSONArray`的`add()`方法抛出OutOfMemory异常
This is a GitHub Issue
repo:hutool
owner:dromara
Title : `JSONArray`的`add()`方法抛出OutOfMemory异常
Issue date:

--- start body ---

### 版本情况

JDK版本：    1.8.0_362
hutool版本： 5.8.21

### 问题描述（包括截图）

1. 复现代码

```java
import cn.hutool.json.JSONObject;

public class JSONObjectTest {

    public static void main(String[] args) {
        JSONArray jSONArray = new JSONArray();
        Object element = new Object();
        jSONArray.add(1247626122, element);
    }
}

```

2. 堆栈信息

```
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
	at java.util.Arrays.copyOf(Arrays.java:3210)
	at java.util.Arrays.copyOf(Arrays.java:3181)
	at java.util.ArrayList.grow(ArrayList.java:267)
	at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:241)
	at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:233)
	at java.util.ArrayList.add(ArrayList.java:464)
	at cn.hutool.json.JSONArray.addRaw(JSONArray.java:594)
	at cn.hutool.json.JSONArray.add(JSONArray.java:352)
	at cn.hutool.json.JSONArray.add(JSONArray.java:461)
	at JSONArrayFuzzerTest19.main(JSONArrayFuzzerTest19.java:37)
```

3. 测试涉及到的文件（注意脱密）
见复现代码。

4. 分析

`jsonArray.add(idx, [element)`会在指定索引`idx`添加一个元素`element`。如果`jsonArray`长度小于指定索引，[`jsonArray.add()`就会通过循环不断添加null，直到jsonArray的长度等于指定索引值](https://github.com/dromara/hutool/blob/5889435e0998a4159f4c219ac001a44d50070b8c/hutool-json/src/main/java/cn/hutool/json/JSONArray.java#L461C8-L461C8)。如果这个索引特别大，比如1247626122，就会报告一个OOM异常。

--- end body ---

The issue in the `JSONArray` class of Hutool v5.8.21 allows for an OutOfMemoryError when attempting to add an element at a very high index (e.g., 1247626122). This occurs because the method `add(idx, element)` attempts to fill the array with null values until it reaches the specified index, leading to excessive memory consumption and ultimately causing the application to run out of heap space.