[MAGNOLIA-3578] ExtendingNodeWrapper (extends) can overflow if self-refering Created: 03/Mar/11  Updated: 11/Feb/13  Resolved: 17/Oct/12

Status: Closed
Project: Magnolia
Component/s: core
Affects Version/s: None
Fix Version/s: 5.0

Type: Bug Priority: Critical
Reporter: Magnolia International Assignee: Jaroslav Simak
Resolution: Fixed Votes: 0
Labels: None
Remaining Estimate: Not Specified
Time Spent: Not Specified
Original Estimate: Not Specified

Template:
Acceptance criteria:
Empty
Task DoD:
[ ]* Doc/release notes changes? Comment present?
[ ]* Downstream builds green?
[ ]* Solution information and context easily available?
[ ]* Tests
[ ]* FixVersion filled and not yet released
[ ]  Architecture Decision Record (ADR)
Bug DoR:
[ ]* Steps to reproduce, expected, and actual results filled
[ ]* Affected version filled

 Description   

ExtendingContentWrapper does not check if it's extending itself, and as such, one can get a StackOverflowError if one accidentally configures the following:
foo/bar/extends = ../bar

Exception in thread "Thread-19" java.lang.StackOverflowError
	at org.apache.commons.collections.map.AbstractReferenceMap.purgeBeforeRead(AbstractReferenceMap.java:337)
<...>
	at info.magnolia.cms.core.DefaultContent.<init>(DefaultContent.java:120)
	at info.magnolia.cms.core.DefaultContent.getContent(DefaultContent.java:188)
	at info.magnolia.cms.core.AbstractNodeData.getReferencedContent(AbstractNodeData.java:137)
	at info.magnolia.cms.core.AbstractNodeData.getReferencedContent(AbstractNodeData.java:104)
	at info.magnolia.cms.util.ExtendingContentWrapper.<init>(ExtendingContentWrapper.java:96)
	at info.magnolia.cms.util.ExtendingContentWrapper.wrapIfNeeded(ExtendingContentWrapper.java:131)
	at info.magnolia.cms.util.ExtendingContentWrapper.<init>(ExtendingContentWrapper.java:96)
	at info.magnolia.cms.util.ExtendingContentWrapper.wrapIfNeeded(ExtendingContentWrapper.java:131)
	at info.magnolia.cms.util.ExtendingContentWrapper.<init>(ExtendingContentWrapper.java:96)
	at info.magnolia.cms.util.ExtendingContentWrapper.wrapIfNeeded(ExtendingContentWrapper.java:131)
	at info.magnolia.cms.util.ExtendingContentWrapper.<init>(ExtendingContentWrapper.java:96)
	at info.magnolia.cms.util.ExtendingContentWrapper.wrapIfNeeded(ExtendingContentWrapper.java:131)
<...>

It should be doable to fail early in such misconfiguration cases, with a more explicit exception message.


Generated at Mon Feb 12 03:47:48 CET 2024 using Jira 9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b.