]> git.saurik.com Git - apple/security.git/blobdiff - OSX/libsecurity_cdsa_utilities/lib/cssmdb.h
Security-59306.140.5.tar.gz
[apple/security.git] / OSX / libsecurity_cdsa_utilities / lib / cssmdb.h
index 186e766987171bbb381abc81b5993a44ed80ac1e..66c9bcb285e7d5d26fa3cfc585b1f8b58202cff3 100644 (file)
@@ -199,8 +199,13 @@ public:
        CssmDlDbHandle *handles() const { return CssmDlDbHandle::overlay(DLDBHandle); }
        CssmDlDbHandle * &handles()     { return CssmDlDbHandle::overlayVar(DLDBHandle); }
 
-       CssmDlDbHandle &operator [] (uint32 ix) const
-       { assert(ix < count()); return CssmDlDbHandle::overlay(DLDBHandle[ix]); }
+       CssmDlDbHandle &operator [] (uint32 ix) const {
+               if (ix >= count()) {
+                       secemergency("CssmDlDbList: attempt to index beyond bounds");
+                       abort();
+               }
+               return CssmDlDbHandle::overlay(DLDBHandle[ix]);
+       }
        
        void setDlDbList(uint32 n, CSSM_DL_DB_HANDLE *list)
        { count() = n; handles() = CssmDlDbHandle::overlay(list); }
@@ -345,8 +350,13 @@ public:
        { return CssmDbAttributeInfo::overlayVar(AttributeInfo); }
        CssmDbAttributeInfo *attributes() const
        { return CssmDbAttributeInfo::overlay(AttributeInfo); }
-    CssmDbAttributeInfo &at(uint32 ix) const
-       { assert(ix < size()); return attributes()[ix]; }
+    CssmDbAttributeInfo &at(uint32 ix) const {
+               if (ix >= size()) {
+                       secemergency("CssmDbRecordAttributeInfo: attempt to index beyond bounds");
+                       abort();
+               }
+               return attributes()[ix];
+       }
 
     CssmDbAttributeInfo &operator [] (uint32 ix) const { return at(ix); }
 };
@@ -481,8 +491,13 @@ public:
        { return CssmDbAttributeData::overlay(AttributeData); }
 
        // Attributes by position
-    CssmDbAttributeData &at(unsigned int ix) const
-       { assert(ix < size()); return attributes()[ix]; }
+    CssmDbAttributeData &at(unsigned int ix) const {
+               if (ix >= size()) {
+                       secemergency("CssmDbRecordAttributeData: attempt to index beyond bounds");
+                       abort();
+               }
+               return attributes()[ix];
+       }
 
     CssmDbAttributeData &operator [] (unsigned int ix) const { return at(ix); }
 
@@ -596,8 +611,13 @@ public:
        CssmSelectionPredicate *predicates() const
        { return CssmSelectionPredicate::overlay(SelectionPredicate); }
 
-       CssmSelectionPredicate &at(uint32 ix) const
-       { assert(ix < size()); return predicates()[ix]; }
+       CssmSelectionPredicate &at(uint32 ix) const {
+               if (ix >= size()) {
+                  secemergency("CssmDbRecordAttributeData: attempt to index beyond bounds");
+                  abort();
+               }
+               return predicates()[ix];
+       }
 
        CssmSelectionPredicate &operator[] (uint32 ix) const { return at(ix); }