builtin/receive-pack: detect when the server doesn't support our hash
Detect when the server doesn't support our hash algorithm and abort. Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
7c601dc333
commit
bb095d0875
@ -1624,6 +1624,8 @@ static struct command *read_head_info(struct packet_reader *reader,
|
|||||||
linelen = strlen(reader->line);
|
linelen = strlen(reader->line);
|
||||||
if (linelen < reader->pktlen) {
|
if (linelen < reader->pktlen) {
|
||||||
const char *feature_list = reader->line + linelen + 1;
|
const char *feature_list = reader->line + linelen + 1;
|
||||||
|
const char *hash = NULL;
|
||||||
|
int len = 0;
|
||||||
if (parse_feature_request(feature_list, "report-status"))
|
if (parse_feature_request(feature_list, "report-status"))
|
||||||
report_status = 1;
|
report_status = 1;
|
||||||
if (parse_feature_request(feature_list, "side-band-64k"))
|
if (parse_feature_request(feature_list, "side-band-64k"))
|
||||||
@ -1636,6 +1638,13 @@ static struct command *read_head_info(struct packet_reader *reader,
|
|||||||
if (advertise_push_options
|
if (advertise_push_options
|
||||||
&& parse_feature_request(feature_list, "push-options"))
|
&& parse_feature_request(feature_list, "push-options"))
|
||||||
use_push_options = 1;
|
use_push_options = 1;
|
||||||
|
hash = parse_feature_value(feature_list, "object-format", &len, NULL);
|
||||||
|
if (!hash) {
|
||||||
|
hash = hash_algos[GIT_HASH_SHA1].name;
|
||||||
|
len = strlen(hash);
|
||||||
|
}
|
||||||
|
if (xstrncmpz(the_hash_algo->name, hash, len))
|
||||||
|
die("error: unsupported object format '%s'", hash);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!strcmp(reader->line, "push-cert")) {
|
if (!strcmp(reader->line, "push-cert")) {
|
||||||
|
Reference in New Issue
Block a user