X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FVCBackend.cpp;h=957c69f585b48890ed38fdcfa1730da82f1dbf4c;hb=0b54650f0e7f1eae39f93444cac6c8525811975b;hp=b395a0d2b210563cabfb2ef518b6d7a168f1688d;hpb=0cb85e920666e8a47cb74ce96711fdcae8168862;p=lyx.git diff --git a/src/VCBackend.cpp b/src/VCBackend.cpp index b395a0d2b2..957c69f585 100644 --- a/src/VCBackend.cpp +++ b/src/VCBackend.cpp @@ -31,6 +31,7 @@ #include "support/TempFile.h" #include +#include #include using namespace std; @@ -170,6 +171,8 @@ void RCS::scanMaster() LYXERR(Debug::LYXVC, "LyXVC::RCS: scanMaster: " << master_); ifstream ifs(master_.toFilesystemEncoding().c_str()); + // limit the size of strings we read to avoid memory problems + ifs >> setw(65636); string token; bool read_enough = false; @@ -389,7 +392,7 @@ void RCS::undoLast() bool RCS::undoLastEnabled() { - return true; + return owner_->hasReadonlyFlag(); } @@ -427,7 +430,8 @@ string RCS::revisionInfo(LyXVC::RevisionInfo const info) return rev_date_cache_; case LyXVC::Time: return rev_time_cache_; - default: ; + default: + break; } return string(); @@ -566,10 +570,10 @@ void CVS::scanMaster() if (contains(line, tmpf)) { // Ok extract the fields. smatch sm; - - // false positive from coverity - // coverity[CHECKED_RETURN] - regex_match(line, sm, reg); + if (!regex_match(line, sm, reg)) { + LYXERR(Debug::LYXVC, "\t Cannot parse line. Skipping."); + continue; + } //sm[0]; // whole matched string //sm[1]; // filename @@ -1099,7 +1103,8 @@ string CVS::revisionInfo(LyXVC::RevisionInfo const info) return rev_date_cache_; case LyXVC::Time: return rev_time_cache_; - default: ; + default: + break; } } return string(); @@ -1663,8 +1668,8 @@ string SVN::revisionInfo(LyXVC::RevisionInfo const info) return rev_date_cache_; case LyXVC::Time: return rev_time_cache_; - default: ; - + default: + break; } return string(); @@ -2132,8 +2137,8 @@ string GIT::revisionInfo(LyXVC::RevisionInfo const info) return rev_date_cache_; case LyXVC::Time: return rev_time_cache_; - default: ; - + default: + break; } return string();