Index: Source/core/frame/FrameHost.h |
diff --git a/Source/core/frame/FrameHost.h b/Source/core/frame/FrameHost.h |
index 40b4ec49e3d805618b6bae898e340fd7ab10eacb..adf7a5c9d52ee6464b5e72644e8f7df42bfafc79 100644 |
--- a/Source/core/frame/FrameHost.h |
+++ b/Source/core/frame/FrameHost.h |
@@ -85,6 +85,15 @@ public: |
void trace(Visitor*); |
+ // Don't allow more than a certain number of frames in a page. |
+ // This seems like a reasonable upper bound, and otherwise mutually |
+ // recursive frameset pages can quickly bring the program to its knees |
+ // with exponential growth in the number of frames. |
+ static const int maxNumberOfFrames = 1000; |
+ void incrementSubframeCount() { ++m_subframeCount; } |
+ void decrementSubframeCount() { ASSERT(m_subframeCount); --m_subframeCount; } |
+ int subframeCount() const; |
+ |
private: |
explicit FrameHost(Page&); |
@@ -94,6 +103,7 @@ private: |
const OwnPtrWillBeMember<ConsoleMessageStorage> m_consoleMessageStorage; |
AtomicString m_overrideEncoding; |
+ int m_subframeCount; |
}; |
} |