From 9702c54802b074b2bfd5150afd18d58f377478db Mon Sep 17 00:00:00 2001 From: Ianos Gnatiuc Date: Mon, 3 Jul 2006 04:05:16 +0000 Subject: [PATCH] Fixed buffer overrun in template parsing. --- docs/notework.rus | 1 + docs/notework.txt | 2 ++ golded3/gemsgs.cpp | 3 ++- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/notework.rus b/docs/notework.rus index 5e38bfc..48b90df 100644 --- a/docs/notework.rus +++ b/docs/notework.rus @@ -10,6 +10,7 @@ _____________________________________________________________________________ Заметки для GoldED+ 1.1.5, /snapshot/ _____________________________________________________________________________ +- Golded+ мог упасть во время парсинга темплейта из-за выхода за границу буфера. + Поддержка кейворда 'set' в fidoconfig-е. - Golded+ мог упасть во время парсинга fidoconfig-а. - Исправлен баг в стеке отката редактора, при котором голдед пробовал прочесть по diff --git a/docs/notework.txt b/docs/notework.txt index 2288d89..0b08a95 100644 --- a/docs/notework.txt +++ b/docs/notework.txt @@ -10,6 +10,8 @@ ______________________________________________________________________ Notes for GoldED+ 1.1.5, /snapshot/ ______________________________________________________________________ +- Fixed buffer overrun in template parsing. + + Support for keyword 'set' in fidoconfig. - Golded+ can crash when parsing fidoconfig. diff --git a/golded3/gemsgs.cpp b/golded3/gemsgs.cpp index 41cf643..ad12f89 100644 --- a/golded3/gemsgs.cpp +++ b/golded3/gemsgs.cpp @@ -62,7 +62,8 @@ static bool tokenxchg(std::string &input, std::string::iterator &pos, for (int i = 0; i < cnt; i++) { std::string::iterator beg = tokend; - if (*beg++ != '{') break; + if ((beg == input.end()) || (*beg++ != '{')) + break; std::string::iterator end; for (end = beg; end != input.end(); end++)