poppler/Error.cc | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-)
New commits: commit 71bad47ed6a36d825b0d08992c8db56845c71e40 Author: Marek Kasik <[email protected]> Date: Sun Dec 9 20:20:00 2012 +0100 Filter stuff that might end up in the shell Since it seems shells don't know how to filter stuff and might causing bad things to happen diff --git a/poppler/Error.cc b/poppler/Error.cc index 9d044bc..ce71820 100644 --- a/poppler/Error.cc +++ b/poppler/Error.cc @@ -16,6 +16,7 @@ // Copyright (C) 2005, 2007 Jeff Muizelaar <[email protected]> // Copyright (C) 2005 Albert Astals Cid <[email protected]> // Copyright (C) 2007 Krzysztof Kowalczyk <[email protected]> +// Copyright (C) 2012 Marek Kasik <[email protected]> // // To see a description of the changes please see the Changelog file that // came with your tarball or type make ChangeLog if you are building from git @@ -59,7 +60,7 @@ void setErrorCallback(void (*cbk)(void *data, ErrorCategory category, void CDECL error(ErrorCategory category, int pos, const char *msg, ...) { va_list args; - GooString *s; + GooString *s, *sanitized; // NB: this can be called before the globalParams object is created if (!errorCbk && globalParams && globalParams->getErrQuiet()) { @@ -68,17 +69,29 @@ void CDECL error(ErrorCategory category, int pos, const char *msg, ...) { va_start(args, msg); s = GooString::formatv(msg, args); va_end(args); + + sanitized = new GooString (); + for (int i = 0; i < s->getLength(); ++i) { + const char c = s->getChar(i); + if (c < (char)0x20 || c >= (char)0x7f) { + sanitized->appendf("<{0:02x}>", c & 0xff); + } else { + sanitized->append(c); + } + } + if (errorCbk) { - (*errorCbk)(errorCbkData, category, pos, s->getCString()); + (*errorCbk)(errorCbkData, category, pos, sanitized->getCString()); } else { if (pos >= 0) { fprintf(stderr, "%s (%d): %s\n", - errorCategoryNames[category], pos, s->getCString()); + errorCategoryNames[category], pos, sanitized->getCString()); } else { fprintf(stderr, "%s: %s\n", - errorCategoryNames[category], s->getCString()); + errorCategoryNames[category], sanitized->getCString()); } fflush(stderr); } delete s; + delete sanitized; } _______________________________________________ poppler mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/poppler
