Closed Bug 242613 Opened 22 years ago Closed 22 years ago

Crash [@ EncodeStructParticle] because getEnumerator returned null

Categories

(Core Graveyard :: Web Services, defect)

x86
Windows XP
defect
Not set
normal

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: timeless, Assigned: timeless)

References

()

Details

(Keywords: crash)

Crash Data

Attachments

(1 file, 1 obsolete file)

> websrvcs.dll!EncodeStructParticle(nsISOAPEncoding * aEncoding=0x022f7630, nsIPropertyBag * aPropertyBag=0x02b422b8, nsISchemaParticle * aParticle=0x00000000, nsISOAPAttachments * aAttachments=0x00000000, nsIDOMElement * aDestination=0x02b1fabc) Line 891 + 0x3 C++ websrvcs.dll!nsStructEncoder::Encode(nsISOAPEncoding * aEncoding=0x022f7630, nsIVariant * aSource=0x00000000, const nsAString & aNamespaceURI={...}, const nsAString & aName={...}, nsISchemaType * aSchemaType=0x00000000, nsISOAPAttachments * aAttachments=0x00000000, nsIDOMElement * aDestination=0x02b1f92c, nsIDOMElement * * aReturnValue=0x0012bec8) Line 965 + 0x13 C++ websrvcs.dll!nsAnyTypeEncoder::Encode(nsISOAPEncoding * aEncoding=0x022f7630, nsIVariant * aSource=0x02b1f9e8, const nsAString & aNamespaceURI={...}, const nsAString & aName={...}, nsISchemaType * aSchemaType=0x02b1f6d4, nsISOAPAttachments * aAttachments=0x00000000, nsIDOMElement * aDestination=0x02b1f92c, nsIDOMElement * * aReturnValue=0x0012bec8) Line 780 + 0x21 C++ websrvcs.dll!nsDefaultEncoder::Encode(nsISOAPEncoding * aEncoding=0x022f7630, nsIVariant * aSource=0x02b1f9e8, const nsAString & aNamespaceURI={...}, const nsAString & aName={...}, nsISchemaType * aSchemaType=0x00000000, nsISOAPAttachments * aAttachments=0x00000000, nsIDOMElement * aDestination=0x02b1f92c, nsIDOMElement * * aReturnValue=0x0012bec8) Line 628 + 0x23 C++ websrvcs.dll!nsSOAPEncoding::Encode(nsIVariant * aSource=0x02b1f9e8, const nsAString & aNamespaceURI={...}, const nsAString & aName={...}, nsISchemaType * aSchemaType=0x00000000, nsISOAPAttachments * aAttachments=0x00000000, nsIDOMElement * aDestination=0x02b1f92c, nsIDOMElement * * _retval=0x02895170) Line 317 + 0x1c C++ websrvcs.dll!EncodeArray(nsISOAPEncoding * aEncoding=0x022f7630, nsIVariant * aSource=0x00000000, nsISchemaType * aSchemaType=0x022efea8, nsISOAPAttachments * aAttachments=0x022efea8, nsIDOMElement * aArray=0x00000000, unsigned int aDimensionCount=0x00000000, unsigned int * aDimensionSizes=0x02b1f92c) Line 1289 C++ websrvcs.dll!nsArrayEncoder::Encode(nsISOAPEncoding * aEncoding=0x02895468, nsIVariant * aSource=0x022f7630, const nsAString & aNamespaceURI={...}, const nsAString & aName={...}, nsISchemaType * aSchemaType=0x022efea8, nsISOAPAttachments * aAttachments=0x00000000, nsIDOMElement * aDestination=0x00000000, nsIDOMElement * * aReturnValue=0x02b1f92c) Line 1432 + 0x1d C++ websrvcs.dll!nsAnyTypeEncoder::Encode(nsISOAPEncoding * aEncoding=0x022f7630, nsIVariant * aSource=0x02b1e970, const nsAString & aNamespaceURI={...}, const nsAString & aName={...}, nsISchemaType * aSchemaType=0x02b1f6d4, nsISOAPAttachments * aAttachments=0x00000000, nsIDOMElement * aDestination=0x02b1f794, nsIDOMElement * * aReturnValue=0x0012cf08) Line 780 + 0x21 C++ websrvcs.dll!nsDefaultEncoder::Encode(nsISOAPEncoding * aEncoding=0x022f7630, nsIVariant * aSource=0x02b1e970, const nsAString & aNamespaceURI={...}, const nsAString & aName={...}, nsISchemaType * aSchemaType=0x00000000, nsISOAPAttachments * aAttachments=0x00000000, nsIDOMElement * aDestination=0x02b1f794, nsIDOMElement * * aReturnValue=0x0012cf08) Line 628 + 0x23 C++ websrvcs.dll!nsSOAPEncoding::Encode(nsIVariant * aSource=0x02b1e970, const nsAString & aNamespaceURI={...}, const nsAString & aName={...}, nsISchemaType * aSchemaType=0x00000000, nsISOAPAttachments * aAttachments=0x00000000, nsIDOMElement * aDestination=0x02b1f794, nsIDOMElement * * _retval=0x02895170) Line 317 + 0x1c C++ websrvcs.dll!nsSOAPMessage::Encode(unsigned short aVersion=0x7630, const nsAString & aMethodName={...}, const nsAString & aTargetObjectURI={...}, unsigned int aHeaderBlockCount=0x022efea8, nsISOAPHeaderBlock * * aHeaderBlocks=0x00000000, unsigned int aParameterCount=0x00000000, nsISOAPParameter * * aParameters=0x02b1f92c) Line 504 C++ xpcom.dll!XPTC_InvokeByIndex(nsISupports * that=0x02a56f38, unsigned int methodIndex=0x0000000b, unsigned int paramCount=0x00000007, nsXPTCVariant * params=0x0012cf94) Line 102 C++ I have some bad soap code which triggers: nsSOAPPropertyBagEnumerator::Init(nsSOAPPropertyBag* aPropertyBag) { PRUint32 count = aPropertyBag->mProperties.EnumerateRead(PropertyBagEnumFunc, &mProperties); // Check if all the properties got copied to the array. if (count != aPropertyBag->mProperties.Count()) { return NS_ERROR_FAILURE; Which triggers: nsSOAPPropertyBag::GetEnumerator(nsISimpleEnumerator * *aEnumerator) { NS_ENSURE_ARG_POINTER(aEnumerator); nsRefPtr<nsSOAPPropertyBagEnumerator> enumerator = new nsSOAPPropertyBagEnumerator(); NS_ENSURE_TRUE(enumerator, NS_ERROR_OUT_OF_MEMORY); if (!enumerator->Init(this)) { return NS_ERROR_FAILURE; Which causes: > websrvcs.dll!EncodeStructParticle(nsISOAPEncoding * aEncoding=0x026a5a80, nsIPropertyBag * aPropertyBag=0x02818fa8, nsISchemaParticle * aParticle=0x00000000, nsISOAPAttachments * aAttachments=0x00000000, nsIDOMElement * aDestination=0x027a8de4) Line 891 C++ ... nsCOMPtr<nsISimpleEnumerator> e; aPropertyBag->GetEnumerator(getter_AddRefs(e)); // e is null, rv which was dropped is failure. PRBool more; rc = e->HasMoreElements(&more); // e was null, so this crashed.
Attached patch check rv (obsolete) — Splinter Review
Assignee: web-services → timeless
Status: NEW → ASSIGNED
Attachment #147684 - Flags: superreview?(jst)
Attachment #147684 - Flags: review?(jst)
Attachment #147684 - Flags: superreview?(jst)
Attachment #147684 - Flags: superreview+
Attachment #147684 - Flags: review?(jst)
Attachment #147684 - Flags: review+
Comment on attachment 147684 [details] [diff] [review] check rv mozilla/extensions/webservices/soap/src/nsDefaultSOAPEncoder.cpp 1.81
Attachment #147684 - Attachment is obsolete: true
Attachment #147771 - Flags: superreview?(jst)
Attachment #147771 - Flags: review?(jst)
Comment on attachment 147771 [details] [diff] [review] Init returns an nsresult r+sr=jst
Attachment #147771 - Flags: superreview?(jst)
Attachment #147771 - Flags: superreview+
Attachment #147771 - Flags: review?(jst)
Attachment #147771 - Flags: review+
(In reply to comment #3) > Created an attachment (id=147771) > Init returns an nsresult > Thanks for cleaning up after me.
mozilla/extensions/webservices/soap/src/nsSOAPPropertyBag.cpp 1.17
Status: ASSIGNED → RESOLVED
Closed: 22 years ago
Resolution: --- → FIXED
Crash Signature: [@ EncodeStructParticle]
Product: Core → Core Graveyard
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: