summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Pool <mbp@sourcefrog.net>2015-12-26 21:33:11 -0800
committerMartin Pool <mbp@sourcefrog.net>2015-12-26 21:33:11 -0800
commit78f6fc96f972696875cb22edd35cb2b63edc27d1 (patch)
tree95ab497cc524d6a8d2c440aa30890f3c6cc78a71
parent18b6fb6f8075bb961daa3cc7564a9185e71aa248 (diff)
downloadlibrsync-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.c9
-rw-r--r--src/search.c6
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;
}