From caa99acea71165613bbd8507634dbf260f1e836d Mon Sep 17 00:00:00 2001 From: Benoit Jacob Date: Mon, 30 Jun 2014 18:11:50 -0400 Subject: [PATCH] Bug 1028588 - Fix dangerous public destructors in rdf/ - r=bsmedberg --- rdf/base/src/nsContainerEnumerator.cpp | 3 ++- rdf/base/src/nsInMemoryDataSource.cpp | 8 ++++---- rdf/base/src/nsRDFContentSink.cpp | 3 ++- rdf/base/src/nsRDFService.cpp | 8 ++++++-- rdf/base/src/nsRDFXMLSerializer.cpp | 1 + rdf/base/src/rdfTriplesSerializer.cpp | 1 + rdf/datasource/src/nsFileSystemDataSource.h | 2 +- rdf/tests/rdfcat/rdfcat.cpp | 4 +++- rdf/tests/rdfpoll/rdfpoll.cpp | 4 +++- rdf/tests/triplescat/triplescat.cpp | 4 +++- rdf/util/public/nsRDFResource.h | 2 +- 11 files changed, 27 insertions(+), 13 deletions(-) diff --git a/rdf/base/src/nsContainerEnumerator.cpp b/rdf/base/src/nsContainerEnumerator.cpp index 2e14577b0bb..b26988b4786 100644 --- a/rdf/base/src/nsContainerEnumerator.cpp +++ b/rdf/base/src/nsContainerEnumerator.cpp @@ -51,9 +51,10 @@ private: nsCOMPtr mResult; int32_t mNextIndex; + virtual ~ContainerEnumeratorImpl(); + public: ContainerEnumeratorImpl(nsIRDFDataSource* ds, nsIRDFResource* container); - virtual ~ContainerEnumeratorImpl(); nsresult Init(); diff --git a/rdf/base/src/nsInMemoryDataSource.cpp b/rdf/base/src/nsInMemoryDataSource.cpp index fb92fa773fa..4929b37f1bd 100644 --- a/rdf/base/src/nsInMemoryDataSource.cpp +++ b/rdf/base/src/nsInMemoryDataSource.cpp @@ -391,6 +391,8 @@ private: Assertion* mNextAssertion; nsCOMPtr mHashArcs; + virtual ~InMemoryAssertionEnumeratorImpl(); + public: InMemoryAssertionEnumeratorImpl(InMemoryDataSource* aDataSource, nsIRDFResource* aSource, @@ -398,8 +400,6 @@ public: nsIRDFNode* aTarget, bool aTruthValue); - virtual ~InMemoryAssertionEnumeratorImpl(); - // nsISupports interface NS_DECL_ISUPPORTS @@ -563,13 +563,13 @@ private: ArcEnumerator(PLDHashTable* aTable, PLDHashEntryHdr* aHdr, uint32_t aNumber, void* aArg); + virtual ~InMemoryArcsEnumeratorImpl(); + public: InMemoryArcsEnumeratorImpl(InMemoryDataSource* aDataSource, nsIRDFResource* aSource, nsIRDFNode* aTarget); - virtual ~InMemoryArcsEnumeratorImpl(); - // nsISupports interface NS_DECL_ISUPPORTS diff --git a/rdf/base/src/nsRDFContentSink.cpp b/rdf/base/src/nsRDFContentSink.cpp index f58b596b751..b6cdede7232 100644 --- a/rdf/base/src/nsRDFContentSink.cpp +++ b/rdf/base/src/nsRDFContentSink.cpp @@ -102,7 +102,6 @@ class RDFContentSinkImpl : public nsIRDFContentSink, { public: RDFContentSinkImpl(); - virtual ~RDFContentSinkImpl(); // nsISupports NS_DECL_ISUPPORTS @@ -146,6 +145,8 @@ public: } ContainerInfo; protected: + virtual ~RDFContentSinkImpl(); + // Text management void ParseText(nsIRDFNode **aResult); diff --git a/rdf/base/src/nsRDFService.cpp b/rdf/base/src/nsRDFService.cpp index 936d0037a3c..c334fb9ee43 100644 --- a/rdf/base/src/nsRDFService.cpp +++ b/rdf/base/src/nsRDFService.cpp @@ -283,6 +283,7 @@ public: RDFServiceImpl::gRDFService->RegisterBlob(this); } +protected: virtual ~BlobImpl() { RDFServiceImpl::gRDFService->UnregisterBlob(this); @@ -294,6 +295,7 @@ public: delete[] mData.mBytes; } +public: NS_DECL_ISUPPORTS NS_DECL_NSIRDFNODE NS_DECL_NSIRDFBLOB @@ -520,7 +522,6 @@ LiteralImpl::GetValueConst(const char16_t** aValue) class DateImpl : public nsIRDFDate { public: DateImpl(const PRTime s); - virtual ~DateImpl(); // nsISupports NS_DECL_ISUPPORTS @@ -532,6 +533,8 @@ public: NS_IMETHOD GetValue(PRTime *value); private: + virtual ~DateImpl(); + nsresult EqualsDate(nsIRDFDate* date, bool* result); PRTime mValue; }; @@ -626,7 +629,6 @@ DateImpl::EqualsDate(nsIRDFDate* date, bool* result) class IntImpl : public nsIRDFInt { public: IntImpl(int32_t s); - virtual ~IntImpl(); // nsISupports NS_DECL_ISUPPORTS @@ -638,6 +640,8 @@ public: NS_IMETHOD GetValue(int32_t *value); private: + virtual ~IntImpl(); + nsresult EqualsInt(nsIRDFInt* value, bool* result); int32_t mValue; }; diff --git a/rdf/base/src/nsRDFXMLSerializer.cpp b/rdf/base/src/nsRDFXMLSerializer.cpp index 4982c3b4031..02a2442f007 100644 --- a/rdf/base/src/nsRDFXMLSerializer.cpp +++ b/rdf/base/src/nsRDFXMLSerializer.cpp @@ -1013,6 +1013,7 @@ public: QNameCollector(nsRDFXMLSerializer* aParent) : mParent(aParent){} private: + ~QNameCollector() {} nsRDFXMLSerializer* mParent; }; diff --git a/rdf/base/src/rdfTriplesSerializer.cpp b/rdf/base/src/rdfTriplesSerializer.cpp index ff899afdc8b..1ff76626fc3 100644 --- a/rdf/base/src/rdfTriplesSerializer.cpp +++ b/rdf/base/src/rdfTriplesSerializer.cpp @@ -28,6 +28,7 @@ public: NS_DECL_RDFITRIPLEVISITOR NS_DECL_ISUPPORTS protected: + ~TriplesVisitor() {} nsresult writeResource(nsIRDFResource* aResource); nsIOutputStream* mOut; }; diff --git a/rdf/datasource/src/nsFileSystemDataSource.h b/rdf/datasource/src/nsFileSystemDataSource.h index 6b0cd20b86c..b1e6fec6c87 100644 --- a/rdf/datasource/src/nsFileSystemDataSource.h +++ b/rdf/datasource/src/nsFileSystemDataSource.h @@ -27,11 +27,11 @@ public: static nsresult Create(nsISupports* aOuter, const nsIID& aIID, void **aResult); - ~FileSystemDataSource() { } nsresult Init(); private: FileSystemDataSource() { } + ~FileSystemDataSource() { } // helper methods bool isFileURI(nsIRDFResource* aResource); diff --git a/rdf/tests/rdfcat/rdfcat.cpp b/rdf/tests/rdfcat/rdfcat.cpp index e1dbcb0ceec..f02723601c9 100644 --- a/rdf/tests/rdfcat/rdfcat.cpp +++ b/rdf/tests/rdfcat/rdfcat.cpp @@ -56,9 +56,11 @@ static NS_DEFINE_CID(kRDFXMLDataSourceCID, NS_RDFXMLDATASOURCE_CID); class ConsoleOutputStreamImpl : public nsIOutputStream { +protected: + virtual ~ConsoleOutputStreamImpl(void) {} + public: ConsoleOutputStreamImpl(void) {} - virtual ~ConsoleOutputStreamImpl(void) {} // nsISupports interface NS_DECL_ISUPPORTS diff --git a/rdf/tests/rdfpoll/rdfpoll.cpp b/rdf/tests/rdfpoll/rdfpoll.cpp index bd1269aab64..0d173e3a0c8 100644 --- a/rdf/tests/rdfpoll/rdfpoll.cpp +++ b/rdf/tests/rdfpoll/rdfpoll.cpp @@ -55,9 +55,11 @@ static NS_DEFINE_CID(kRDFXMLDataSourceCID, NS_RDFXMLDATASOURCE_CID); class Observer : public nsIRDFObserver { +protected: + virtual ~Observer() {} + public: Observer(); - virtual ~Observer() {} // nsISupports interface NS_DECL_ISUPPORTS diff --git a/rdf/tests/triplescat/triplescat.cpp b/rdf/tests/triplescat/triplescat.cpp index b9533f67282..41e910c0a37 100644 --- a/rdf/tests/triplescat/triplescat.cpp +++ b/rdf/tests/triplescat/triplescat.cpp @@ -54,9 +54,11 @@ class ConsoleOutputStreamImpl : public nsIOutputStream { +protected: + virtual ~ConsoleOutputStreamImpl(void) {} + public: ConsoleOutputStreamImpl(void) {} - virtual ~ConsoleOutputStreamImpl(void) {} // nsISupports interface NS_DECL_ISUPPORTS diff --git a/rdf/util/public/nsRDFResource.h b/rdf/util/public/nsRDFResource.h index 85f76d0e2ee..628a5edbd2a 100644 --- a/rdf/util/public/nsRDFResource.h +++ b/rdf/util/public/nsRDFResource.h @@ -38,9 +38,9 @@ public: // nsRDFResource methods: nsRDFResource(void); - virtual ~nsRDFResource(void); protected: + virtual ~nsRDFResource(void); static nsIRDFService* gRDFService; static nsrefcnt gRDFServiceRefCnt;