[PATCH] avoid buffer underflow in errfinish()
| От | Xi Wang |
|---|---|
| Тема | [PATCH] avoid buffer underflow in errfinish() |
| Дата | |
| Msg-id | 1364078281-11998-1-git-send-email-xi.wang@gmail.com обсуждение исходный текст |
| Ответы |
Re: [PATCH] avoid buffer underflow in errfinish()
Re: [PATCH] avoid buffer underflow in errfinish() |
| Список | pgsql-hackers |
CHECK_STACK_DEPTH checks if errordata_stack_depth is negative.
Move the dereference of &errordata[errordata_stack_depth] after
the check to avoid out-of-bounds read.
---src/backend/utils/error/elog.c | 4 +++-1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/src/backend/utils/error/elog.c b/src/backend/utils/error/elog.c
index 3a211bf..47a0a8b 100644
--- a/src/backend/utils/error/elog.c
+++ b/src/backend/utils/error/elog.c
@@ -393,13 +393,15 @@ voiderrfinish(int dummy,...){ ErrorData *edata = &errordata[errordata_stack_depth];
- int elevel = edata->elevel;
+ int elevel; MemoryContext oldcontext; ErrorContextCallback *econtext; recursion_depth++;
CHECK_STACK_DEPTH();
+ elevel = edata->elevel;
+ /* * Do processing in ErrorContext, which we hope has enough reserved space * to report an error.
--
1.7.10.4
В списке pgsql-hackers по дате отправления: