[cpp-xmltooling] branch master updated: Remediate member pointers with scoped_ptrs.
Scott Cantor
cantor.2 at osu.edu
Tue Apr 17 13:09:24 EDT 2018
This is an automated email from the git hooks/post-receive script.
scantor pushed a commit to branch master
in repository cpp-xmltooling.
View the commit online:
http://git.shibboleth.net/view/?p=cpp-xmltooling.git;a=commit;h=7c0f07c8d5e4cddebbe50037bfa463becc09df57
The following commit(s) were added to refs/heads/master by this push:
new 7c0f07c Remediate member pointers with scoped_ptrs.
7c0f07c is described below
commit 7c0f07c8d5e4cddebbe50037bfa463becc09df57
Author: Scott Cantor <cantor.2 at osu.edu>
AuthorDate: Tue Apr 17 13:09:19 2018 -0400
Remediate member pointers with scoped_ptrs.
---
xmltooling/util/ReloadableXMLFile.cpp | 41 +++++++++++++++--------------------
xmltooling/util/ReloadableXMLFile.h | 11 +++++-----
2 files changed, 23 insertions(+), 29 deletions(-)
diff --git a/xmltooling/util/ReloadableXMLFile.cpp b/xmltooling/util/ReloadableXMLFile.cpp
index af96989..14e92fb 100644
--- a/xmltooling/util/ReloadableXMLFile.cpp
+++ b/xmltooling/util/ReloadableXMLFile.cpp
@@ -94,11 +94,7 @@ static const XMLCh _CredentialResolver[] = UNICODE_LITERAL_18(C,r,e,d,e,n,t,i,a,
ReloadableXMLFile::ReloadableXMLFile(const DOMElement* e, Category& log, bool startReloadThread)
: m_root(e), m_local(true), m_validate(false), m_filestamp(0), m_reloadInterval(0),
- m_lock(nullptr), m_log(log), m_loaded(false),
-#ifndef XMLTOOLING_LITE
- m_credResolver(nullptr), m_trust(nullptr),
-#endif
- m_shutdown(false), m_reload_wait(nullptr), m_reload_thread(nullptr)
+ m_log(log), m_loaded(false), m_shutdown(false)
{
#ifdef _DEBUG
NDC ndc("ReloadableXMLFile");
@@ -135,7 +131,7 @@ ReloadableXMLFile::ReloadableXMLFile(const DOMElement* e, Category& log, bool st
m_source = temp.get();
if (!m_local && !strstr(m_source.c_str(),"://")) {
- log.warn("deprecated usage of uri/url attribute for a local resource, use path instead");
+ log.warn("DEPRECATED: usage of uri/url attribute for a local resource, use path instead");
m_local = true;
}
@@ -143,23 +139,23 @@ ReloadableXMLFile::ReloadableXMLFile(const DOMElement* e, Category& log, bool st
// Check for signature bits.
if (e->hasAttributeNS(nullptr, certificate)) {
// Use a file-based credential resolver rooted here.
- m_credResolver = XMLToolingConfig::getConfig().CredentialResolverManager.newPlugin(FILESYSTEM_CREDENTIAL_RESOLVER, e);
+ m_credResolver.reset(XMLToolingConfig::getConfig().CredentialResolverManager.newPlugin(FILESYSTEM_CREDENTIAL_RESOLVER, e));
}
else {
const DOMElement* sub = XMLHelper::getFirstChildElement(e, _CredentialResolver);
string t(XMLHelper::getAttrString(sub, nullptr, type));
if (!t.empty()) {
- m_credResolver = XMLToolingConfig::getConfig().CredentialResolverManager.newPlugin(t.c_str(), sub);
+ m_credResolver.reset(XMLToolingConfig::getConfig().CredentialResolverManager.newPlugin(t.c_str(), sub));
}
else {
sub = XMLHelper::getFirstChildElement(e, _TrustEngine);
t = XMLHelper::getAttrString(sub, nullptr, type);
if (!t.empty()) {
- TrustEngine* trust = XMLToolingConfig::getConfig().TrustEngineManager.newPlugin(t.c_str(), sub);
- if (!(m_trust = dynamic_cast<SignatureTrustEngine*>(trust))) {
- delete trust;
+ auto_ptr<TrustEngine> trust(XMLToolingConfig::getConfig().TrustEngineManager.newPlugin(t.c_str(), sub));
+ if (!dynamic_cast<SignatureTrustEngine*>(trust.get())) {
throw XMLToolingException("TrustEngine-based ReloadableXMLFile requires a SignatureTrustEngine plugin.");
}
+ m_trust.reset(dynamic_cast<SignatureTrustEngine*>(trust.release()));
m_signerName = XMLHelper::getAttrString(e, nullptr, signerName);
}
@@ -182,7 +178,7 @@ ReloadableXMLFile::ReloadableXMLFile(const DOMElement* e, Category& log, bool st
m_filestamp = stat_buf.st_mtime;
else
throw IOException("Unable to access local file ($1)", params(1,m_source.c_str()));
- m_lock = RWLock::create();
+ m_lock.reset(RWLock::create());
}
FILE* cfile = fopen(m_source.c_str(), "r");
if (cfile)
@@ -216,7 +212,7 @@ ReloadableXMLFile::ReloadableXMLFile(const DOMElement* e, Category& log, bool st
m_reloadInterval = XMLHelper::getAttrInt(e, 0, maxRefreshDelay);
if (m_reloadInterval > 0) {
m_log.debug("will reload remote resource at most every %d seconds", m_reloadInterval);
- m_lock = RWLock::create();
+ m_lock.reset(RWLock::create());
}
m_filestamp = time(nullptr); // assume it gets loaded initially
}
@@ -234,14 +230,13 @@ ReloadableXMLFile::ReloadableXMLFile(const DOMElement* e, Category& log, bool st
ReloadableXMLFile::~ReloadableXMLFile()
{
shutdown();
- delete m_lock;
}
void ReloadableXMLFile::startup()
{
if (m_lock && !m_reload_thread) {
- m_reload_wait = CondWait::create();
- m_reload_thread = Thread::create(&reload_fn, this);
+ m_reload_wait.reset(CondWait::create());
+ m_reload_thread.reset(Thread::create(&reload_fn, this));
}
}
@@ -252,10 +247,8 @@ void ReloadableXMLFile::shutdown()
m_shutdown = true;
m_reload_wait->signal();
m_reload_thread->join(nullptr);
- delete m_reload_thread;
- delete m_reload_wait;
- m_reload_thread = nullptr;
- m_reload_wait = nullptr;
+ m_reload_thread.reset();
+ m_reload_wait.reset();
}
}
@@ -321,7 +314,7 @@ void* ReloadableXMLFile::reload_fn(void* pv)
if (ret.first)
ret.second->getOwnerDocument()->release();
}
- catch (long& ex) {
+ catch (const long& ex) {
if (ex == HTTPResponse::XMLTOOLING_HTTP_STATUS_NOTMODIFIED) {
r->m_log.info("remote resource (%s) unchanged from cached version", r->m_source.c_str());
}
@@ -330,7 +323,7 @@ void* ReloadableXMLFile::reload_fn(void* pv)
r->m_log.crit("maintaining existing configuration, remote resource fetch returned atypical status code (%d)", ex);
}
}
- catch (exception& ex) {
+ catch (const exception& ex) {
r->m_log.crit("maintaining existing configuration, error reloading resource (%s): %s", r->m_source.c_str(), ex.what());
}
}
@@ -608,7 +601,7 @@ void ReloadableXMLFile::validateSignature(Signature& sigObj) const
cc.setPeerName(m_signerName.c_str());
if (m_credResolver) {
- Locker locker(m_credResolver);
+ Locker locker(m_credResolver.get());
vector<const Credential*> creds;
if (m_credResolver->resolve(creds, &cc)) {
SignatureValidator sigValidator;
@@ -618,7 +611,7 @@ void ReloadableXMLFile::validateSignature(Signature& sigObj) const
sigValidator.validate(&sigObj);
return; // success!
}
- catch (exception&) {
+ catch (const exception&) {
}
}
throw XMLSecurityException("Unable to verify signature with supplied key(s).");
diff --git a/xmltooling/util/ReloadableXMLFile.h b/xmltooling/util/ReloadableXMLFile.h
index f2537ef..f4a234e 100644
--- a/xmltooling/util/ReloadableXMLFile.h
+++ b/xmltooling/util/ReloadableXMLFile.h
@@ -32,6 +32,7 @@
#include <ctime>
#include <string>
+#include <boost/scoped_ptr.hpp>
#include <xercesc/dom/DOM.hpp>
#ifndef XMLTOOLING_LITE
@@ -220,7 +221,7 @@ namespace xmltooling {
std::string m_cacheTag;
/** Shared lock for guarding reloads. */
- RWLock* m_lock;
+ boost::scoped_ptr<RWLock> m_lock;
/** Logging object. */
logging::Category& m_log;
@@ -233,10 +234,10 @@ namespace xmltooling {
#ifndef XMLTOOLING_LITE
/** CredentialResolver for signature verification. */
- CredentialResolver* m_credResolver;
+ boost::scoped_ptr<CredentialResolver> m_credResolver;
/** TrustEngine for signature verification. */
- SignatureTrustEngine* m_trust;
+ boost::scoped_ptr<SignatureTrustEngine> m_trust;
/** Name of signer for signature verification. */
std::string m_signerName;
@@ -252,8 +253,8 @@ namespace xmltooling {
#endif
// Used to manage background reload/refresh.
bool m_shutdown;
- CondWait* m_reload_wait;
- Thread* m_reload_thread;
+ boost::scoped_ptr<CondWait> m_reload_wait;
+ boost::scoped_ptr<Thread> m_reload_thread;
static void* reload_fn(void*);
};
--
To stop receiving notification emails like this one, please contact
the administrator of this repository.
More information about the commits
mailing list