]> git.saurik.com Git - apple/security.git/blobdiff - OSX/libsecurity_filedb/lib/AtomicFile.cpp
Security-59754.80.3.tar.gz
[apple/security.git] / OSX / libsecurity_filedb / lib / AtomicFile.cpp
index 9dd9bbfdc3580061d399b1cc5b42a0cc935aa39a..24ca9907493b1fa4713737b8501f6978db44dc49 100644 (file)
 
 #include <security_filedb/AtomicFile.h>
 
-#include <security_utilities/devrandom.h>
 #include <CommonCrypto/CommonDigest.h>
 #include <security_cdsa_utilities/cssmerrors.h>
 #include <Security/cssm.h>
+#include <Security/SecRandom.h>
 #include <errno.h>
 #include <fcntl.h>
 #include <limits.h>
@@ -36,7 +36,7 @@
 #include <copyfile.h>
 #include <sandbox.h>
 #include <set>
-#include <assert.h>
+#include <security_utilities/simulatecrash_assert.h>
 
 #define kAtomicFileMaxBlockSize INT_MAX
 
@@ -391,8 +391,8 @@ AtomicBufferedFile::~AtomicBufferedFile()
 {
        if (mFileRef >= 0)
        {
-               // In release mode, the assert() is compiled out so rv may be unused.
-               __unused int rv = AtomicFile::rclose(mFileRef);
+               // In release mode, the assert() is compiled out so rv may be unused.
+               __unused int rv = AtomicFile::rclose(mFileRef);
                assert(rv == 0);
                secinfo("atomicfile", "%p closed %s", this, mPath.c_str());
        }
@@ -830,7 +830,7 @@ AtomicTempFile::commit()
 
 // Rollback the current create or write (happens automatically if commit() isn't called before the destructor is.
 void
-AtomicTempFile::rollback() throw()
+AtomicTempFile::rollback() _NOEXCEPT
 {
        if (mFileRef >= 0)
        {
@@ -962,7 +962,6 @@ std::string
 NetworkFileLocker::unique(mode_t mode)
 {
        static const int randomPart = 16;
-       DevRandomGenerator randomGen;
        std::string::size_type dirSize = mDir.size();
        std::string fullname(dirSize + randomPart + 2, '\0');
        fullname.replace(0, dirSize, mDir);
@@ -974,7 +973,7 @@ NetworkFileLocker::unique(mode_t mode)
        for (int retries = 0; retries < 10; ++retries)
        {
                /* Make a random filename. */
-               randomGen.random(buf, randomPart);
+        MacOSError::check(SecRandomCopyBytes(kSecRandomDefault, randomPart, buf));
                for (int ix = 0; ix < randomPart; ++ix)
                {
                        char ch = buf[ix] & 0x3f;
@@ -1241,7 +1240,7 @@ AtomicLockedFile::lock(mode_t mode)
 
 
 
-void AtomicLockedFile::unlock() throw()
+void AtomicLockedFile::unlock() _NOEXCEPT
 {
        mFileLocker->unlock();
 }