From 29d5aa8d821255836b9ada8ac2855176259ff4cb Mon Sep 17 00:00:00 2001 From: Georg Baum Date: Wed, 5 Apr 2006 09:13:32 +0000 Subject: [PATCH] fix bug 1235 * src/support/filetools.C (readBB_from_PSFile): sanitize return value git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/branches/BRANCH_1_4_X@13550 a592a061-630c-0410-9148-cb99ea01b6c8 --- src/support/filetools.C | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/src/support/filetools.C b/src/support/filetools.C index 3eaa5e5879..8c2ca46409 100644 --- a/src/support/filetools.C +++ b/src/support/filetools.C @@ -1192,12 +1192,22 @@ string const readBB_from_PSFile(string const & file) return string(); } + static boost::regex bbox_re( + "^%%BoundingBox:\\s*([[:digit:]]+)\\s+([[:digit:]]+)\\s+([[:digit:]]+)\\s+([[:digit:]]+)"); std::ifstream is(file_.c_str()); while (is) { string s; getline(is,s); - if (contains(s,"%%BoundingBox:") && !contains(s,"atend")) { - string const bb = ltrim(s.substr(14)); + boost::smatch what; + if (regex_match(s, what, bbox_re)) { + // Our callers expect the tokens in the string + // separated by single spaces. + // FIXME: change return type from string to something + // sensible + ostringstream os; + os << what.str(1) << ' ' << what.str(2) << ' ' + << what.str(3) << ' ' << what.str(4); + string const bb = os.str(); readBB_lyxerrMessage(file_, zipped, bb); return bb; }