forked frompostgres/postgres
- Notifications
You must be signed in to change notification settings - Fork6
Commit84a9d38
committed
Fix incorrect sentinel byte logic in GenerationRealloc()
This only affects MEMORY_CONTEXT_CHECKING builds.This fixes an off-by-one issue in GenerationRealloc() where thefast-path code which tries to reuse the existing allocation if theexisting chunk is >= the new requested size. The code there thought itwas always ok to use the existing chunk, but when oldsize == size thereisn't enough space to store the sentinel byte. If both sizes matchedexactly set_sentinel() would overwrite the first byte beyond the chunkand then subsequent GenerationRealloc() calls could then fail theAssert(chunk->requested_size < oldsize) check which is trying to ensurethe chunk is large enough to store the sentinel.The same issue does not exist in aset.c as the sentinel checking codeonly adds a sentinel byte if there's enough space in the chunk.Reported-by: Alexander Lakhin <exclusion@gmail.com>Discussion:https://postgr.es/m/49275921-7b39-41af-5eb8-97b50ce3312e@gmail.comBackpatch-through: 16, where the problem was introduced by0e480381 parent9c27367 commit84a9d38
1 file changed
+7
-2
lines changedLines changed: 7 additions & 2 deletions
Original file line number | Diff line number | Diff line change | |
---|---|---|---|
| |||
846 | 846 |
| |
847 | 847 |
| |
848 | 848 |
| |
849 |
| - | |
850 |
| - | |
| 849 | + | |
| 850 | + | |
851 | 851 |
| |
852 | 852 |
| |
853 | 853 |
| |
854 | 854 |
| |
855 | 855 |
| |
856 | 856 |
| |
857 | 857 |
| |
| 858 | + | |
| 859 | + | |
| 860 | + | |
| 861 | + | |
858 | 862 |
| |
| 863 | + | |
859 | 864 |
| |
860 | 865 |
| |
861 | 866 |
| |
|
0 commit comments
Comments
(0)