erusev / parsedown

Better Markdown Parser in PHP
https://parsedown.org
MIT License
14.69k stars 1.12k forks source link

php7.4 gets "Uninitialized string offset: 1" from unescaped ampersand in bold: **&** #748

Open fraserredmond opened 4 years ago

fraserredmond commented 4 years ago

I recently upgraded to php7.4, and got a php error on one of our pages. I tracked it down to the following...

Reproduce using:

$inStr = "a **&** b"; // Has error.
$outStr = \ParsedownExtra::instance()->parse($inStr);
$inStr = "a **&** b"; // No error.
$outStr = \ParsedownExtra::instance()->parse($inStr);

Error backtrace:

Uninitialized string offset: 1

- vendor/erusev/parsedown/Parsedown.php:1493
- vendor/erusev/parsedown/Parsedown.php:1162
- vendor/erusev/parsedown/Parsedown.php:1610
- vendor/erusev/parsedown/Parsedown.php:1693
- vendor/erusev/parsedown/Parsedown.php:1788
- vendor/erusev/parsedown/Parsedown.php:1741
- vendor/erusev/parsedown/Parsedown.php:1788
- vendor/erusev/parsedown-extra/ParsedownExtra.php:49
- vendor/erusev/parsedown/Parsedown.php:1852

Might be similar to: https://github.com/erusev/parsedown/issues/674

I'm using 1.8.0-beta-7