Skip to content

Commit

Permalink
ringct: guard against bad data exceptions in worker threads
Browse files Browse the repository at this point in the history
If purported pubkeys aren't actually valid pubkeys, exceptions
will fly. These will terminate if thrown in a worker thread.
Guard against this.
  • Loading branch information
moneromooo-monero committed Dec 7, 2016
1 parent 45bb393 commit 2f1732a
Showing 1 changed file with 14 additions and 0 deletions.
14 changes: 14 additions & 0 deletions src/ringct/rctSigs.cpp
Expand Up @@ -335,6 +335,8 @@ namespace rct {
// mask is a such that C = aG + bH, and b = amount
//verRange verifies that \sum Ci = C and that each Ci is a commitment to 0 or 2^i
bool verRange(const key & C, const rangeSig & as) {
try
{
PERF_TIMER(verRange);
key64 CiH;
int i = 0;
Expand All @@ -348,6 +350,9 @@ namespace rct {
if (!VerASNL(as.Ci, CiH, as.asig))
return false;
return true;
}
// we can get deep throws from ge_frombytes_vartime if input isn't valid
catch (...) { return false; }
}

key get_pre_mlsag_hash(const rctSig &rv)
Expand Down Expand Up @@ -513,6 +518,8 @@ namespace rct {
//This does a simplified version, assuming only post Rct
//inputs
bool verRctMGSimple(const key &message, const mgSig &mg, const ctkeyV & pubs, const key & C) {
try
{
PERF_TIMER(verRctMGSimple);
//setup vars
size_t rows = 1;
Expand All @@ -528,6 +535,8 @@ namespace rct {
}
//DP(C);
return MLSAG_Ver(message, M, mg, rows);
}
catch (...) { return false; }
}


Expand Down Expand Up @@ -790,6 +799,8 @@ namespace rct {
//ver RingCT simple
//assumes only post-rct style inputs (at least for max anonymity)
bool verRctSimple(const rctSig & rv) {
try
{
PERF_TIMER(verRctSimple);

CHECK_AND_ASSERT_MES(rv.type == RCTTypeSimple, false, "verRctSimple called on non simple rctSig");
Expand Down Expand Up @@ -860,6 +871,9 @@ namespace rct {
}

return true;
}
// we can get deep throws from ge_frombytes_vartime if input isn't valid
catch (...) { return false; }
}

//RingCT protocol
Expand Down

0 comments on commit 2f1732a

Please sign in to comment.