Fix segmentation fault 'denial of service condition'
[pdfium.git] / core / include / fpdfapi / fpdf_objects.h
index 0315465..b3980a4 100644 (file)
@@ -39,12 +39,12 @@ class CPDF_Object
 {
 public:
 
-    int                                                GetType() const
+    int                                 GetType() const
     {
         return m_Type;
     }
 
-    FX_DWORD                           GetObjNum() const
+    FX_DWORD                            GetObjNum() const
     {
         return m_ObjNum;
     }
@@ -54,51 +54,51 @@ public:
         return m_GenNum;
     }
 
-    FX_BOOL                                    IsIdentical(CPDF_Object* pObj) const;
+    FX_BOOL                             IsIdentical(CPDF_Object* pObj) const;
 
-    CPDF_Object*                       Clone(FX_BOOL bDirect = FALSE) const;
+    CPDF_Object*                        Clone(FX_BOOL bDirect = FALSE) const;
 
-    CPDF_Object*                       CloneRef(CPDF_IndirectObjects* pObjs) const;
+    CPDF_Object*                        CloneRef(CPDF_IndirectObjects* pObjs) const;
 
-    CPDF_Object*                       GetDirect() const;
+    CPDF_Object*                        GetDirect() const;
 
-    void                                       Release();
+    void                                Release();
 
-    CFX_ByteString                     GetString() const;
-
-    CFX_ByteStringC                    GetConstString() const;
+    CFX_ByteString                      GetString() const;
 
-    CFX_WideString                     GetUnicodeText(CFX_CharMap* pCharMap = NULL) const;
+    CFX_ByteStringC                     GetConstString() const;
 
-    FX_FLOAT                           GetNumber() const;
+    CFX_WideString                      GetUnicodeText(CFX_CharMap* pCharMap = NULL) const; 
+    FX_FLOAT                            GetNumber() const;
 
-    FX_FLOAT                           GetNumber16() const;
+    FX_FLOAT                            GetNumber16() const;
 
-    int                                                GetInteger() const;
+    int                                 GetInteger() const;
 
-    CPDF_Dictionary*           GetDict() const;
+    CPDF_Dictionary*                    GetDict() const;
 
-    CPDF_Array*                                GetArray() const;
+    CPDF_Array*                         GetArray() const;
 
-    void                                       SetString(const CFX_ByteString& str);
+    void                                SetString(const CFX_ByteString& str);
 
-    void                                       SetUnicodeText(FX_LPCWSTR pUnicodes, int len = -1);
+    void                                SetUnicodeText(FX_LPCWSTR pUnicodes, int len = -1);
 
-    int                                                GetDirectType() const;
+    int                                 GetDirectType() const;
 
-    FX_BOOL                                    IsModified() const
+    FX_BOOL                             IsModified() const
     {
         return FALSE;
     }
 protected:
     CPDF_Object(FX_DWORD type) : m_Type(type), m_ObjNum(0), m_GenNum(0) { }
     ~CPDF_Object() { }
+    void                                Destroy();
 
-    void                                       Destroy();
-
-    FX_DWORD                           m_Type;
-    FX_DWORD                           m_ObjNum;
-    FX_DWORD                           m_GenNum;
+    static const int                    OBJECT_REF_MAX_DEPTH = 128;
+    static int                          s_nCurRefDepth;
+    FX_DWORD                            m_Type;
+    FX_DWORD                            m_ObjNum;
+    FX_DWORD                            m_GenNum;
 
     friend class                       CPDF_IndirectObjects;
     friend class                       CPDF_Parser;