diff options
author | Martin Pool <mbp@sourcefrog.net> | 2015-12-26 21:33:11 -0800 |
---|---|---|
committer | Martin Pool <mbp@sourcefrog.net> | 2015-12-26 21:33:11 -0800 |
commit | 78f6fc96f972696875cb22edd35cb2b63edc27d1 (patch) | |
tree | 95ab497cc524d6a8d2c440aa30890f3c6cc78a71 | |
parent | 18b6fb6f8075bb961daa3cc7564a9185e71aa248 (diff) | |
download | librsync-78f6fc96f972696875cb22edd35cb2b63edc27d1.tar.gz |
Check signature magic when starting delta job
Unsupported sig format can then be fatal if it happens during block
search
-rw-r--r-- | src/delta.c | 9 | ||||
-rw-r--r-- | src/search.c | 6 |
2 files changed, 13 insertions, 2 deletions
diff --git a/src/delta.c b/src/delta.c index 2c52ca3..37a6aa5 100644 --- a/src/delta.c +++ b/src/delta.c @@ -465,6 +465,15 @@ rs_job_t *rs_delta_begin(rs_signature_t *sig) job->strong_sum_len); return NULL; } + + switch (job->signature->magic) { + case RS_BLAKE2_SIG_MAGIC: + case RS_MD4_SIG_MAGIC: + break; + default: + rs_error("Unknown signature algorithm %#x", job->signature->magic); + return NULL; + } return job; } diff --git a/src/search.c b/src/search.c index 98b3b78..43405bb 100644 --- a/src/search.c +++ b/src/search.c @@ -199,8 +199,10 @@ rs_search_for_block(rs_weak_sum_t weak_sum, } else if (sig->magic == RS_MD4_SIG_MAGIC) { rs_calc_md4_sum(inbuf, block_len, &strong_sum); } else { - rs_error("Unknown signature algorithm - this is a BUG"); - return 0; /* FIXME: Is this the best way to handle this? */ + /* Bad input data is checked in rs_delta_begin, so this + * should never be reached. */ + rs_fatal("Unknown signature algorithm %#x", sig->magic); + return 0; } got_strong = 1; } |