Closed
Bug 10560
Opened 27 years ago
Closed 27 years ago
NECKO: bad URL construction in www.foo.com
Categories
(Core :: Networking, defect, P3)
Tracking
()
VERIFIED
FIXED
People
(Reporter: warrensomebody, Assigned: gagan)
References
()
Details
(Whiteboard: asked reporter to verify)
Gagan,
If I type www.foo.com into the location bar, I assert here:
nsDebug::Assertion(const char * 0x00c86044, const char * 0x00c8603c, const char
* 0x00c86010, int 782) line 176 + 13 bytes
nsStdURL::ParsePath() line 782 + 32 bytes
nsParsePath::~nsParsePath() line 45 + 27 bytes
nsStdURL::SetFileName(nsStdURL * const 0x0a0f0870, char * 0x0a0f5030) line 649
+ 46 bytes
nsStdURL::SetRelativePath(nsStdURL * const 0x0a0f0870, const char * 0x0a0f5030)
line 697 + 16 bytes
nsHTTPHandler::NewURI(nsHTTPHandler * const 0x0a07dba0, const char *
0x0a0f5030, nsIURI * 0x0a160400, nsIURI * * 0x0012e1b0) line 231 + 16 bytes
nsHTTPHandler::MakeAbsolute(nsHTTPHandler * const 0x0a07dba0, const char *
0x0a0f5030, nsIURI * 0x0a160400, char * * 0x0012e23c) line 211 + 24 bytes
nsIOService::MakeAbsolute(nsIOService * const 0x00aabe30, const char *
0x0a0f5030, nsIURI * 0x0a160400, char * * 0x0012e23c) line 275 + 35 bytes
NS_MakeAbsoluteURI(const char * 0x0a0f5030, nsIURI * 0x0a160400, char * *
0x0012e23c) line 108 + 24 bytes
NS_MakeAbsoluteURI(const nsString & {"index.html"}, nsIURI * 0x0a160400,
nsString & {""}) line 119 + 17 bytes
SelectorMatches(nsIPresContext * 0x0a163de0, nsCSSSelector * 0x00b2e6e8,
nsIContent * 0x0a0d3f3c, int 1) line 1484 + 26 bytes
ContentEnumFunc(nsICSSStyleRule * 0x00b2e6dc, void * 0x0012e468) line 1605 + 24
bytes
RuleHash::EnumerateAllRules(nsIAtom * 0x00b2d100 {"a"}, nsIAtom * 0x00000000
{???}, const nsVoidArray & {...}, void (nsICSSStyleRule *, void *)* 0x015edbf0
ContentEnumFunc(nsICSSStyleRule *, void *), void * 0x0012e468) line 318 + 13
bytes
CSSStyleSheetImpl::RulesMatching(nsIPresContext * 0x0a163de0, nsIContent *
0x0a0d3f3c, nsIStyleContext * 0x0a0f0a60, nsISupportsArray * 0x0a0f08e0) line
1664
EnumRulesMatching(nsISupports * 0x00b26520, void * 0x0012e504) line 424 + 38
bytes
nsSupportsArray::EnumerateBackwards(nsSupportsArray * const 0x0a0cf960, int
(nsISupports *, void *)* 0x01527d80 EnumRulesMatching(nsISupports *, void *),
void * 0x0012e504) line 360 + 20 bytes
StyleSetImpl::ResolveStyleFor(nsIPresContext * 0x0a163de0, nsIContent *
0x0a0d3f3c, nsIStyleContext * 0x0a0f0a60, int 0) line 535
nsPresContext::ResolveStyleContextFor(nsPresContext * const 0x0a163de0,
nsIContent * 0x0a0d3f3c, nsIStyleContext * 0x0a0f0a60, int 0, nsIStyleContext *
* 0x0012e5dc) line 393 + 38 bytes
nsCSSFrameConstructor::ResolveStyleContext(nsIPresContext * 0x0a163de0,
nsIFrame * 0x0a0f0930, nsIContent * 0x0a0d3f3c, nsIAtom * 0x00b2d100 {"a"},
nsIStyleContext * * 0x0012e5dc) line 3821 + 31 bytes
nsCSSFrameConstructor::ConstructFrame(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, nsIContent * 0x0a0d3f3c, nsIFrame *
0x0a0f0930, int 0, nsFrameItems & {...}) line 3844 + 53 bytes
nsCSSFrameConstructor::ProcessChildren(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, nsIContent * 0x0a0d3fbc, nsIFrame *
0x0a0f0930, int 1, nsFrameItems & {...}) line 766
nsCSSFrameConstructor::ConstructFrameByDisplayType(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, const nsStyleDisplay * 0x0a0f0c94, nsIContent
* 0x0a0d3fbc, nsIFrame * 0x0a0f6d80, nsIStyleContext * 0x0a0f0a60, int 0,
nsFrameItems & {...}) line 3636 + 36 bytes
nsCSSFrameConstructor::ConstructFrame(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, nsIContent * 0x0a0d3fbc, nsIFrame *
0x0a0f6d80, int 0, nsFrameItems & {...}) line 3880 + 45 bytes
nsCSSFrameConstructor::ProcessChildren(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, nsIContent * 0x0a0d3170, nsIFrame *
0x0a0f6d80, int 1, nsFrameItems & {...}) line 766
nsCSSFrameConstructor::ConstructTableCellFrameOnly(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, nsIContent * 0x0a0d3170, nsIFrame *
0x0a0f7340, nsIStyleContext * 0x0a0f7060, nsIFrame * & 0x0a0f6e20, nsIFrame * &
0x0a0f6d80, nsTableCreator & {...}, int 1) line 1630 + 32 bytes
nsCSSFrameConstructor::ConstructTableCellFrame(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, nsIContent * 0x0a0d3170, nsIFrame *
0x0a0f7340, nsIStyleContext * 0x0a0f7060, nsIFrame * & 0x00000000, nsIFrame * &
0x0a0f6e20, nsIFrame * & 0x0a0f6d80, nsTableCreator & {...}, int 1) line 1553 +
49 bytes
nsCSSFrameConstructor::ConstructFrameByDisplayType(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, const nsStyleDisplay * 0x0a0f7294, nsIContent
* 0x0a0d3170, nsIFrame * 0x0a0f7340, nsIStyleContext * 0x0a0f7060, int 0,
nsFrameItems & {...}) line 3604 + 55 bytes
nsCSSFrameConstructor::ConstructFrame(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, nsIContent * 0x0a0d3170, nsIFrame *
0x0a0f7340, int 0, nsFrameItems & {...}) line 3880 + 45 bytes
nsCSSFrameConstructor::TableProcessChild(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, nsIContent * 0x0a0d3170, nsIFrame *
0x0a0f7340, nsIStyleContext * 0x0a0f5070, nsFrameItems & {...}, nsTableCreator
& {...}) line 1703 + 30 bytes
nsCSSFrameConstructor::TableProcessChildren(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, nsIContent * 0x0a0d31ec, nsIFrame *
0x0a0f7340, nsFrameItems & {...}, nsTableCreator & {...}) line 1677 + 46 bytes
nsCSSFrameConstructor::ConstructTableRowFrameOnly(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, nsIContent * 0x0a0d31ec, nsIFrame *
0x0a0f53a0, nsIStyleContext * 0x0a0f5070, int 1, nsIFrame * & 0x0a0f7340,
nsTableCreator & {...}) line 1443 + 34 bytes
nsCSSFrameConstructor::ConstructTableRowFrame(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, nsIContent * 0x0a0d31ec, nsIFrame *
0x0a0f53a0, nsIStyleContext * 0x0a0f5070, nsIFrame * & 0x00000000, nsIFrame * &
0x0a0f7340, nsTableCreator & {...}, nsTableList * 0x00000000) line 1392 + 45
bytes
nsCSSFrameConstructor::ConstructFrameByDisplayType(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, const nsStyleDisplay * 0x0a0f52a4, nsIContent
* 0x0a0d31ec, nsIFrame * 0x0a0f53a0, nsIStyleContext * 0x0a0f5070, int 0,
nsFrameItems & {...}) line 3596 + 48 bytes
nsCSSFrameConstructor::ConstructFrame(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, nsIContent * 0x0a0d31ec, nsIFrame *
0x0a0f53a0, int 0, nsFrameItems & {...}) line 3880 + 45 bytes
nsCSSFrameConstructor::TableProcessChild(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, nsIContent * 0x0a0d31ec, nsIFrame *
0x0a0f53a0, nsIStyleContext * 0x0a0f54b0, nsFrameItems & {...}, nsTableCreator
& {...}) line 1703 + 30 bytes
nsCSSFrameConstructor::TableProcessChildren(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, nsIContent * 0x0a0d36ec, nsIFrame *
0x0a0f53a0, nsFrameItems & {...}, nsTableCreator & {...}) line 1677 + 46 bytes
nsCSSFrameConstructor::ConstructTableGroupFrameOnly(nsIPresContext *
0x0a163de0, nsFrameConstructorState & {...}, nsIContent * 0x0a0d36ec, nsIFrame
* 0x0a0f5a40, nsIStyleContext * 0x0a0f54b0, int 1, nsIFrame * & 0x0a0f53a0,
nsIFrame * & 0x0a0f53a0, nsTableCreator & {...}, int 1) line 1345
nsCSSFrameConstructor::ConstructTableGroupFrame(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, nsIContent * 0x0a0d36ec, nsIFrame *
0x0a0f5a40, nsIStyleContext * 0x0a0f54b0, int 1, nsIFrame * & 0x0a0f53a0,
nsIFrame * & 0x0a0f53a0, nsTableCreator & {...}, nsTableList * 0x00000000) line
1227 + 53 bytes
nsCSSFrameConstructor::ConstructTableFrame(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, nsIContent * 0x0a0d303c, nsIFrame *
0x0a0f2040, nsIStyleContext * 0x0a0f5c60, nsIFrame * & 0x0a0f5b40,
nsTableCreator & {...}) line 938 + 56 bytes
nsCSSFrameConstructor::ConstructFrameByDisplayType(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, const nsStyleDisplay * 0x0a0f5e94, nsIContent
* 0x0a0d303c, nsIFrame * 0x0a0f2040, nsIStyleContext * 0x0a0f5c60, int 0,
nsFrameItems & {...}) line 3560 + 42 bytes
nsCSSFrameConstructor::ConstructFrame(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, nsIContent * 0x0a0d303c, nsIFrame *
0x0a0f2040, int 0, nsFrameItems & {...}) line 3880 + 45 bytes
nsCSSFrameConstructor::ProcessChildren(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, nsIContent * 0x0a0cc2a0, nsIFrame *
0x0a0f2040, int 1, nsFrameItems & {...}) line 766
nsCSSFrameConstructor::ConstructTableCellFrameOnly(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, nsIContent * 0x0a0cc2a0, nsIFrame *
0x0a0f21d0, nsIStyleContext * 0x0a0f4d40, nsIFrame * & 0x0a0f4c30, nsIFrame * &
0x0a0f2040, nsTableCreator & {...}, int 1) line 1630 + 32 bytes
nsCSSFrameConstructor::ConstructTableCellFrame(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, nsIContent * 0x0a0cc2a0, nsIFrame *
0x0a0f21d0, nsIStyleContext * 0x0a0f4d40, nsIFrame * & 0x00000000, nsIFrame * &
0x0a0f4c30, nsIFrame * & 0x0a0f2040, nsTableCreator & {...}, int 1) line 1553 +
49 bytes
nsCSSFrameConstructor::ConstructFrameByDisplayType(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, const nsStyleDisplay * 0x0a0f4f74, nsIContent
* 0x0a0cc2a0, nsIFrame * 0x0a0f21d0, nsIStyleContext * 0x0a0f4d40, int 0,
nsFrameItems & {...}) line 3604 + 55 bytes
nsCSSFrameConstructor::ConstructFrame(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, nsIContent * 0x0a0cc2a0, nsIFrame *
0x0a0f21d0, int 0, nsFrameItems & {...}) line 3880 + 45 bytes
nsCSSFrameConstructor::TableProcessChild(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, nsIContent * 0x0a0cc2a0, nsIFrame *
0x0a0f21d0, nsIStyleContext * 0x0a0f2350, nsFrameItems & {...}, nsTableCreator
& {...}) line 1703 + 30 bytes
nsCSSFrameConstructor::TableProcessChildren(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, nsIContent * 0x0a0cc31c, nsIFrame *
0x0a0f21d0, nsFrameItems & {...}, nsTableCreator & {...}) line 1677 + 46 bytes
nsCSSFrameConstructor::ConstructTableRowFrameOnly(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, nsIContent * 0x0a0cc31c, nsIFrame *
0x0a0f2680, nsIStyleContext * 0x0a0f2350, int 1, nsIFrame * & 0x0a0f21d0,
nsTableCreator & {...}) line 1443 + 34 bytes
nsCSSFrameConstructor::ConstructTableRowFrame(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, nsIContent * 0x0a0cc31c, nsIFrame *
0x0a0f2680, nsIStyleContext * 0x0a0f2350, nsIFrame * & 0x00000000, nsIFrame * &
0x0a0f21d0, nsTableCreator & {...}, nsTableList * 0x00000000) line 1392 + 45
bytes
nsCSSFrameConstructor::ConstructFrameByDisplayType(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, const nsStyleDisplay * 0x0a0f2584, nsIContent
* 0x0a0cc31c, nsIFrame * 0x0a0f2680, nsIStyleContext * 0x0a0f2350, int 0,
nsFrameItems & {...}) line 3596 + 48 bytes
nsCSSFrameConstructor::ConstructFrame(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, nsIContent * 0x0a0cc31c, nsIFrame *
0x0a0f2680, int 0, nsFrameItems & {...}) line 3880 + 45 bytes
nsCSSFrameConstructor::TableProcessChild(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, nsIContent * 0x0a0cc31c, nsIFrame *
0x0a0f2680, nsIStyleContext * 0x0a0f30f0, nsFrameItems & {...}, nsTableCreator
& {...}) line 1703 + 30 bytes
nsCSSFrameConstructor::TableProcessChildren(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, nsIContent * 0x0a0cc39c, nsIFrame *
0x0a0f2680, nsFrameItems & {...}, nsTableCreator & {...}) line 1677 + 46 bytes
nsCSSFrameConstructor::ConstructTableGroupFrameOnly(nsIPresContext *
0x0a163de0, nsFrameConstructorState & {...}, nsIContent * 0x0a0cc39c, nsIFrame
* 0x0a0f3680, nsIStyleContext * 0x0a0f30f0, int 1, nsIFrame * & 0x0a0f2680,
nsIFrame * & 0x0a0f2680, nsTableCreator & {...}, int 1) line 1345
nsCSSFrameConstructor::ConstructTableGroupFrame(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, nsIContent * 0x0a0cc39c, nsIFrame *
0x0a0f3680, nsIStyleContext * 0x0a0f30f0, int 1, nsIFrame * & 0x0a0f2680,
nsIFrame * & 0x0a0f2680, nsTableCreator & {...}, nsTableList * 0x00000000) line
1227 + 53 bytes
nsCSSFrameConstructor::ConstructTableFrame(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, nsIContent * 0x0a0cc62c, nsIFrame *
0x0a0c9570, nsIStyleContext * 0x0a0f3780, nsIFrame * & 0x0a0f7510,
nsTableCreator & {...}) line 938 + 56 bytes
nsCSSFrameConstructor::ConstructFrameByDisplayType(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, const nsStyleDisplay * 0x0a0f39b4, nsIContent
* 0x0a0cc62c, nsIFrame * 0x0a0c9570, nsIStyleContext * 0x0a0f3780, int 0,
nsFrameItems & {...}) line 3560 + 42 bytes
nsCSSFrameConstructor::ConstructFrame(nsIPresContext * 0x0a163de0,
nsFrameConstructorState & {...}, nsIContent * 0x0a0cc62c, nsIFrame *
0x0a0c9570, int 0, nsFrameItems & {...}) line 3880 + 45 bytes
nsCSSFrameConstructor::ContentAppended(nsCSSFrameConstructor * const
0x0a0cf9b0, nsIPresContext * 0x0a163de0, nsIContent * 0x0a0cd31c, int 0) line
4193
StyleSetImpl::ContentAppended(StyleSetImpl * const 0x0a0cfa50, nsIPresContext *
0x0a163de0, nsIContent * 0x0a0cd31c, int 0) line 789
PresShell::ContentAppended(PresShell * const 0x0a0cf8c8, nsIDocument *
0x0a1615c0, nsIContent * 0x0a0cd31c, int 0) line 1847 + 46 bytes
nsDocument::ContentAppended(nsDocument * const 0x0a1615c0, nsIContent *
0x0a0cd31c, int 0) line 1566
nsHTMLDocument::ContentAppended(nsHTMLDocument * const 0x0a1615c0, nsIContent *
0x0a0cd31c, int 0) line 841
HTMLContentSink::NotifyBody() line 276
HTMLContentSink::CloseBody(HTMLContentSink * const 0x0a162c50, const
nsIParserNode & {...}) line 1947
CNavDTD::CloseBody(const nsIParserNode & {...}) line 2299 + 31 bytes
CNavDTD::CloseContainer(const nsIParserNode & {...}, nsHTMLTag eHTMLTag_body,
int 0) line 2535 + 12 bytes
CNavDTD::CloseContainersTo(int 1, nsHTMLTag eHTMLTag_body, int 0) line 2582 +
26 bytes
CNavDTD::CloseContainersTo(nsHTMLTag eHTMLTag_body, int 0) line 2604 + 20 bytes
CNavDTD::DidBuildModel(CNavDTD * const 0x0a0cf190, unsigned int 0, int 1,
nsIParser * 0x0a162da0, nsIContentSink * 0x0a162c50) line 596
nsParser::DidBuildModel(unsigned int 0) line 525 + 55 bytes
nsParser::ResumeParse(nsIDTD * 0x00000000, int 1) line 893
nsParser::OnStopRequest(nsParser * const 0x0a162da4, nsIChannel * 0x0a160170,
nsISupports * 0x00000000, unsigned int 0, const unsigned short * 0x00000000)
line 1186 + 19 bytes
nsDocumentBindInfo::OnStopRequest(nsDocumentBindInfo * const 0x0a13d8a0,
nsIChannel * 0x0a160170, nsISupports * 0x00000000, unsigned int 0, const
unsigned short * 0x00000000) line 2147 + 34 bytes
nsHTTPResponseListener::OnStopRequest(nsHTTPResponseListener * const
0x0a160c90, nsIChannel * 0x0a161cc0, nsISupports * 0x0a160170, unsigned int 0,
const unsigned short * 0x00000000) line 216 + 45 bytes
nsOnStopRequestEvent::HandleEvent(nsOnStopRequestEvent * const 0x0a0e3d80) line
284
nsStreamListenerEvent::HandlePLEvent(PLEvent * 0x0a0e3d84) line 149 + 12 bytes
PL_HandleEvent(PLEvent * 0x0a0e3d84) line 509 + 10 bytes
PL_ProcessPendingEvents(PLEventQueue * 0x00a58410) line 470 + 9 bytes
_md_EventReceiverProc(HWND__ * 0x005f10e6, unsigned int 49328, unsigned int 0,
long 10847248) line 932 + 9 bytes
USER32! 77e71250()
The problem seems to be that SetRelativePath is doing the wrong thing -- I see
www.foo.com get rewritten as www.foo.com/ and then as www.foo.com/index.html.
However, somewhere along the line, your URL code makes a URL containing
www.foo.comindex.html (no slash).
Furthermore, your nsStdURL code needs to be fixed in several other ways too:
- Several constructors call nsCRT::strdup in them which can fail. Although
you've attempted to handle the failure by returning nsnull, this is not a real
solution. You need to convert these into Init routines that can return
NS_ERROR_OUT_OF_MEMORY.
- You haven't implemented the aggregation stuff. Basically, you need to pass
the outer parameter down from the factory method into your constructor so that
you can pass it to NS_INIT_AGGREGATED.
Perhaps we should get together to have a code review of this stuff before too
long.
Warren
| Reporter | ||
Comment 1•27 years ago
|
||
One more... ReconstructPath should be called lazily. There's no need to do that
for every assignment. You should just construct the full string on GetSpec and
don't bother to cache it.
Status: ASSIGNED → RESOLVED
Closed: 27 years ago
Resolution: --- → FIXED
This should be fixed with my latest checkins. Pl. repull
netwerk/base/src/nsStdURL.cpp and check.
Updated•27 years ago
|
Whiteboard: asked reporter to verify
Comment 3•27 years ago
|
||
warren, would you like to verify that all your little suggestions are in?
| Reporter | ||
Updated•27 years ago
|
Status: RESOLVED → VERIFIED
| Reporter | ||
Comment 4•27 years ago
|
||
I'll reopen another bug for them.
Bulk move of all Necko (to be deleted component) bugs to new Networking
component.
| Comment hidden (collapsed) |
You need to log in
before you can comment on or make changes to this bug.
Description
•