Index: Source/core/frame/FrameHost.h |
diff --git a/Source/core/frame/FrameHost.h b/Source/core/frame/FrameHost.h |
index 37dccda148597cfef4abfaba53e356e1e805a49f..9f1792f8e0279cb11a2bf95013104d28148343c8 100644 |
--- a/Source/core/frame/FrameHost.h |
+++ b/Source/core/frame/FrameHost.h |
@@ -82,6 +82,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 incrementFrameCount() { ++m_frameCount; } |
+ void decrementFrameCount() { ASSERT(m_frameCount); --m_frameCount; } |
+ int frameCount() const; |
+ |
private: |
explicit FrameHost(Page&); |
@@ -90,6 +99,7 @@ private: |
const OwnPtrWillBeMember<EventHandlerRegistry> m_eventHandlerRegistry; |
AtomicString m_overrideEncoding; |
+ int m_frameCount; |
}; |
} |