summaryrefslogtreecommitdiff
path: root/external/libetonyek/forcepoint.parsepath.null.deref.patch
blob: 2cdf6a5a34c2cab52c07ff2337d79a6ba4519518 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
diff -ru src/lib/IWAParser.cpp libetonyek/src/lib/IWAParser.cpp
--- src/lib/IWAParser.cpp	2018-12-18 21:02:45.772942197 +0000
+++ src/lib/IWAParser.cpp	2018-12-18 21:05:04.758548097 +0000
@@ -998,7 +998,14 @@
       if (get(type) == 1)
         path->appendMoveTo(get(coords).m_x, get(coords).m_y);
       else
+      {
+        if (path->empty())
+        {
+          ETONYEK_DEBUG_MSG(("IWAParser::parsePath: missing prior MoveTo subsequent LineTo\n", get(type) == 1 ? 'M' : 'L'));
+          return false;
+        }
         path->appendLineTo(get(coords).m_x, get(coords).m_y);
+      }
       break;
     }
     case 4 :
diff -ru src/lib/IWORKPath.cpp libetonyek/src/lib/IWORKPath.cpp
--- src/lib/IWORKPath.cpp	2018-12-18 21:02:45.775942059 +0000
+++ src/lib/IWORKPath.cpp	2018-12-18 21:03:39.289480143 +0000
@@ -594,6 +594,11 @@
   m_impl->m_closed = false;
 }
 
+bool IWORKPath::empty() const
+{
+  return m_impl->m_path.empty();
+}
+
 void IWORKPath::appendMoveTo(const double x, const double y)
 {
   if (!m_impl->m_path.empty() && m_impl->m_path.back().size()<=1)
diff -ru src/lib/IWORKPath.h libetonyek/src/lib/IWORKPath.h
--- src/lib/IWORKPath.h	2018-12-18 21:02:45.772942197 +0000
+++ src/lib/IWORKPath.h	2018-12-18 21:05:48.323543888 +0000
@@ -42,6 +42,7 @@
   void swap(IWORKPath &other);
 
   void clear();
+  bool empty() const;
 
   void appendMoveTo(double x, double y);
   void appendLineTo(double x, double y);