CPPXT-104 - Add exception handling to integer conversions
authorScott Cantor <cantor.2@osu.edu>
Sun, 5 Jul 2015 19:13:04 +0000 (19:13 +0000)
committerScott Cantor <cantor.2@osu.edu>
Sun, 5 Jul 2015 19:13:04 +0000 (19:13 +0000)
odbc-store/odbc-store.cpp
shibsp/impl/StorageServiceSessionCache.cpp

index 48bbe8e..f751271 100644 (file)
@@ -332,8 +332,14 @@ ODBCStorageService::ODBCStorageService(const DOMElement* e) : m_log(Category::ge
     e = XMLHelper::getNextSiblingElement(e, RetryOnError);
     while (e) {
         if (e->hasChildNodes()) {
-            m_retries.push_back(XMLString::parseInt(e->getTextContent()));
-            m_log.info("will retry operations when native ODBC error (%ld) is returned", m_retries.back());
+            try {
+                int code = XMLString::parseInt(e->getTextContent());
+                m_retries.push_back(code);
+                m_log.info("will retry operations when native ODBC error (%d) is returned", code);
+            }
+            catch (XMLException&) {
+                m_log.error("skipping non-numeric ODBC retry code");
+            }
         }
         e = XMLHelper::getNextSiblingElement(e, RetryOnError);
     }
index f9fb5de..6132654 100644 (file)
@@ -1860,10 +1860,16 @@ void* SSCache::cleanup_fn(void* p)
 
     // Load our configuration details...
     static const XMLCh cleanupInterval[] = UNICODE_LITERAL_15(c,l,e,a,n,u,p,I,n,t,e,r,v,a,l);
-    const XMLCh* tag=pcache->m_root ? pcache->m_root->getAttributeNS(nullptr, cleanupInterval) : nullptr;
+    const XMLCh* tag = pcache->m_root ? pcache->m_root->getAttributeNS(nullptr, cleanupInterval) : nullptr;
     int rerun_timer = 900;
     if (tag && *tag) {
-        rerun_timer = XMLString::parseInt(tag);
+        try {
+            rerun_timer = XMLString::parseInt(tag);
+        }
+        catch (XMLException&) {
+            pcache->m_log.error("cleanupInterval setting was not a numeric value");
+            rerun_timer = 0;
+        }
         if (rerun_timer <= 0)
             rerun_timer = 900;
     }