cJSON through 1.7.19 contains an inefficient algorithmic complexity flaw in cJSON_Compare(). When comparing objects, the function recurses into each shared subtree twice, once in each direction, with no depth guard, making the running time exponential in nesting depth. A small, deeply nested document of a few hundred bytes (depth around 40) compared for equality consumes hours of CPU, and the cost roughly doubles with each additional level of nesting. An application that calls cJSON_Compare() on attacker-influenced JSON that is structurally equal to a reference document is exposed to a denial-of-service condition.
{
"binaries": [
{
"binary_name": "libapache2-mod-mapcache",
"binary_version": "1.4.0-4"
},
{
"binary_name": "libmapcache1",
"binary_version": "1.4.0-4"
},
{
"binary_name": "mapcache-cgi",
"binary_version": "1.4.0-4"
},
{
"binary_name": "mapcache-tools",
"binary_version": "1.4.0-4"
}
]
}{
"binaries": [
{
"binary_name": "libapache2-mod-mapcache",
"binary_version": "1.6.1-1"
},
{
"binary_name": "libmapcache1",
"binary_version": "1.6.1-1"
},
{
"binary_name": "mapcache-cgi",
"binary_version": "1.6.1-1"
},
{
"binary_name": "mapcache-tools",
"binary_version": "1.6.1-1"
}
]
}{
"binaries": [
{
"binary_name": "libapache2-mod-mapcache",
"binary_version": "1.10.0-1"
},
{
"binary_name": "libmapcache1",
"binary_version": "1.10.0-1"
},
{
"binary_name": "mapcache-cgi",
"binary_version": "1.10.0-1"
},
{
"binary_name": "mapcache-tools",
"binary_version": "1.10.0-1"
}
]
}{
"binaries": [
{
"binary_name": "libapache2-mod-mapcache",
"binary_version": "1.12.0-1"
},
{
"binary_name": "libmapcache1",
"binary_version": "1.12.0-1"
},
{
"binary_name": "mapcache-cgi",
"binary_version": "1.12.0-1"
},
{
"binary_name": "mapcache-tools",
"binary_version": "1.12.0-1"
}
]
}{
"binaries": [
{
"binary_name": "libapache2-mod-mapcache",
"binary_version": "1.14.0-4build2"
},
{
"binary_name": "libmapcache1t64",
"binary_version": "1.14.0-4build2"
},
{
"binary_name": "mapcache-cgi",
"binary_version": "1.14.0-4build2"
},
{
"binary_name": "mapcache-tools",
"binary_version": "1.14.0-4build2"
}
]
}{
"binaries": [
{
"binary_name": "libapache2-mod-mapcache",
"binary_version": "1.14.1-3build2"
},
{
"binary_name": "libmapcache1t64",
"binary_version": "1.14.1-3build2"
},
{
"binary_name": "mapcache-cgi",
"binary_version": "1.14.1-3build2"
},
{
"binary_name": "mapcache-tools",
"binary_version": "1.14.1-3build2"
}
]
}