summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Mazieres <dm@uun.org>2014-02-05 01:06:29 -0800
committerDavid Mazieres <dm@uun.org>2014-02-05 01:06:29 -0800
commit45b9f2b5807fd3a52f8925cb2cd39e6da39dd7b4 (patch)
treea3c5e72531a29397e4a4f0ef770a279a0bdd258c
parent5d5b945bdabf67c9601bd7f9adfc0abc2efb683c (diff)
paranoia about random generator
-rw-r--r--muchsync.cc27
1 files changed, 14 insertions, 13 deletions
diff --git a/muchsync.cc b/muchsync.cc
index bc4cded..77cb62a 100644
--- a/muchsync.cc
+++ b/muchsync.cc
@@ -126,19 +126,20 @@ print_time (string msg)
sqlite3 *
dbcreate (const char *path)
{
- i64 self;
- if (RAND_pseudo_bytes ((unsigned char *) &self, sizeof (self)) == -1) {
+ i64 self = 0;
+ if (RAND_pseudo_bytes ((unsigned char *) &self, sizeof (self)) == -1
+ || self == 0) {
cerr << "RAND_pseudo_bytes failed\n";
- return NULL;
+ return nullptr;
}
self &= ~(i64 (1) << 63);
- sqlite3 *db = NULL;
+ sqlite3 *db = nullptr;
int err = sqlite3_open_v2 (path, &db,
- SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE, NULL);
+ SQLITE_OPEN_READWRITE|SQLITE_OPEN_CREATE, nullptr);
if (err) {
cerr << path << ": " << sqlite3_errstr (err);
- return NULL;
+ return nullptr;
}
sqlexec(db, "PRAGMA locking_mode=EXCLUSIVE;");
@@ -155,7 +156,7 @@ dbcreate (const char *path)
} catch (sqlerr_t exc) {
sqlite3_close_v2 (db);
cerr << exc.what () << '\n';
- return NULL;
+ return nullptr;
}
return db;
}
@@ -203,15 +204,15 @@ muchsync_init (const string &maildir, bool create = false)
sqlite3 *
dbopen (const char *path)
{
- sqlite3 *db = NULL;
+ sqlite3 *db = nullptr;
if (access (path, 0) && errno == ENOENT)
db = dbcreate (path);
else {
- sqlite3_open_v2 (path, &db, SQLITE_OPEN_READWRITE, NULL);
+ sqlite3_open_v2 (path, &db, SQLITE_OPEN_READWRITE, nullptr);
sqlexec(db, "PRAGMA locking_mode=EXCLUSIVE;");
}
if (!db)
- return NULL;
+ return nullptr;
sqlexec (db, "PRAGMA secure_delete = 0;");
@@ -219,19 +220,19 @@ dbopen (const char *path)
if (getconfig<string> (db, "dbvers") != dbvers) {
cerr << path << ": invalid database version\n";
sqlite3_close_v2 (db);
- return NULL;
+ return nullptr;
}
getconfig<i64> (db, "self");
}
catch (sqldone_t) {
cerr << path << ": invalid configuration\n";
sqlite3_close_v2 (db);
- return NULL;
+ return nullptr;
}
catch (sqlerr_t &e) {
cerr << path << ": " << e.what() << '\n';
sqlite3_close_v2 (db);
- return NULL;
+ return nullptr;
}
return db;