pdfviewer: more simple fixed to prevent crashes
Review URL: https://codereview.chromium.org/19625008
git-svn-id: http://skia.googlecode.com/svn/trunk@10294 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.cpp b/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.cpp
index cc5788b..7d8bcb6 100644
--- a/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.cpp
+++ b/experimental/PdfViewer/pdfparser/native/SkPdfNativeTokenizer.cpp
@@ -125,6 +125,11 @@
// last elem has to be ]
static const unsigned char* readArray(int level, const unsigned char* start, const unsigned char* end, SkPdfObject* array, SkPdfAllocator* allocator, SkNativeParsedPDF* doc) {
+ if (allocator == NULL) {
+ // TODO(edisonn): report/warning error
+ return end;
+ }
+
TRACE_INDENT(level, "Array");
while (start < end) {
// skip white spaces
@@ -208,7 +213,7 @@
break;
case 'f':
- *out = kFF_PdfWhiteSpace;
+ if (hasOut) { *out = kFF_PdfWhiteSpace; }
out++;
in += 2;
break;
@@ -693,6 +698,10 @@
}
static const unsigned char* readDictionary(int level, const unsigned char* start, const unsigned char* end, SkPdfObject* dict, SkPdfAllocator* allocator, SkNativeParsedPDF* doc) {
+ if (allocator == NULL) {
+ // TODO(edisonn): report/warning error
+ return end;
+ }
TRACE_INDENT(level, "Dictionary");
SkPdfObject::makeEmptyDictionary(dict);