| /google/src/cloud/gfalcon/hunspell_copybara//patches/05.leakfix.patch - empty, assuming text. |
| Change 501585639 by mghiware@mghiware:fuzzer-5701496409030656:5968:citc on 2023/01/12 09:24:36 |
| |
| Release memory allocated during parsing on early returns due to errors |
| |
| PRESUBMIT=passed |
| BUG=259670020 |
| FIXED=259670020 |
| R=bkuang |
| CC=jiho |
| REQUIRED_REVIEW=1 |
| DELTA=7 (7 added, 0 deleted, 0 changed) |
| DELTA_BY_EXTENSION=cxx=7 |
| OCL=501403365 |
| |
| Affected files ... |
| |
| ... //depot//src/hunspell/affixmgr.cxx#8 edit |
| |
| ==== //depot//src/hunspell/affixmgr.cxx#7 - /google/src/files/501585639/depot//src/hunspell/affixmgr.cxx ==== |
| --- /google/src/files/501584981/depot//src/hunspell/affixmgr.cxx 2023-01-12 12:22:06.000000000 -0500 |
| +++ /google/src/files/501585639/depot//src/hunspell/affixmgr.cxx 2023-01-12 12:24:36.000000000 -0500 |
| @@ -3644,6 +3644,13 @@ |
| } |
| if ((!(reptable[j].pattern)) || (!(reptable[j].pattern2))) { |
| HUNSPELL_WARNING(stderr, "error: line %d: table is corrupt\n", af->getlinenum()); |
| + // Free up memory allocated during parsing |
| + for (int k=0; k < j; k++) { |
| + free(reptable[k].pattern); |
| + free(reptable[k].pattern2); |
| + } |
| + if (reptable[j].pattern) free(reptable[j].pattern); |
| + if (reptable[j].pattern2) free(reptable[j].pattern2); |
| numrep = 0; |
| return 1; |
| } |