Browse Source

Use the final_oid_fn to finalize hashing of object IDs

When we're hashing a value which is going to be an object ID, we want to
zero-pad that value if necessary.  To do so, use the final_oid_fn
instead of the final_fn anytime we're going to create an object ID to
ensure we perform this operation.

Signed-off-by: brian m. carlson <sandals@crustytoothpaste.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
brian m. carlson 4 years ago committed by Junio C Hamano
parent
commit
5951bf467e
  1. 4
      builtin/fast-import.c
  2. 2
      builtin/index-pack.c
  3. 2
      builtin/unpack-objects.c
  4. 2
      bulk-checkin.c
  5. 2
      diff.c
  6. 2
      http.c
  7. 8
      object-file.c

4
builtin/fast-import.c

@ -940,7 +940,7 @@ static int store_object( @@ -940,7 +940,7 @@ static int store_object(
the_hash_algo->init_fn(&c);
the_hash_algo->update_fn(&c, hdr, hdrlen);
the_hash_algo->update_fn(&c, dat->buf, dat->len);
the_hash_algo->final_fn(oid.hash, &c);
the_hash_algo->final_oid_fn(&oid, &c);
if (oidout)
oidcpy(oidout, &oid);

@ -1136,7 +1136,7 @@ static void stream_blob(uintmax_t len, struct object_id *oidout, uintmax_t mark) @@ -1136,7 +1136,7 @@ static void stream_blob(uintmax_t len, struct object_id *oidout, uintmax_t mark)
}
}
git_deflate_end(&s);
the_hash_algo->final_fn(oid.hash, &c);
the_hash_algo->final_oid_fn(&oid, &c);

if (oidout)
oidcpy(oidout, &oid);

2
builtin/index-pack.c

@ -489,7 +489,7 @@ static void *unpack_entry_data(off_t offset, unsigned long size, @@ -489,7 +489,7 @@ static void *unpack_entry_data(off_t offset, unsigned long size,
bad_object(offset, _("inflate returned %d"), status);
git_inflate_end(&stream);
if (oid)
the_hash_algo->final_fn(oid->hash, &c);
the_hash_algo->final_oid_fn(oid, &c);
return buf == fixed_buf ? NULL : buf;
}


2
builtin/unpack-objects.c

@ -576,7 +576,7 @@ int cmd_unpack_objects(int argc, const char **argv, const char *prefix) @@ -576,7 +576,7 @@ int cmd_unpack_objects(int argc, const char **argv, const char *prefix)
the_hash_algo->init_fn(&ctx);
unpack_all();
the_hash_algo->update_fn(&ctx, buffer, offset);
the_hash_algo->final_fn(oid.hash, &ctx);
the_hash_algo->final_oid_fn(&oid, &ctx);
if (strict) {
write_rest();
if (fsck_finish(&fsck_options))

2
bulk-checkin.c

@ -238,7 +238,7 @@ static int deflate_to_pack(struct bulk_checkin_state *state, @@ -238,7 +238,7 @@ static int deflate_to_pack(struct bulk_checkin_state *state,
if (lseek(fd, seekback, SEEK_SET) == (off_t) -1)
return error("cannot seek back");
}
the_hash_algo->final_fn(result_oid->hash, &ctx);
the_hash_algo->final_oid_fn(result_oid, &ctx);
if (!idx)
return 0;


2
diff.c

@ -6234,7 +6234,7 @@ static int diff_get_patch_id(struct diff_options *options, struct object_id *oid @@ -6234,7 +6234,7 @@ static int diff_get_patch_id(struct diff_options *options, struct object_id *oid
}

if (!stable)
the_hash_algo->final_fn(oid->hash, &ctx);
the_hash_algo->final_oid_fn(oid, &ctx);

return 0;
}

2
http.c

@ -2576,7 +2576,7 @@ int finish_http_object_request(struct http_object_request *freq) @@ -2576,7 +2576,7 @@ int finish_http_object_request(struct http_object_request *freq)
}

git_inflate_end(&freq->stream);
the_hash_algo->final_fn(freq->real_oid.hash, &freq->c);
the_hash_algo->final_oid_fn(&freq->real_oid, &freq->c);
if (freq->zret != Z_STREAM_END) {
unlink_or_warn(freq->tmpfile.buf);
return -1;

8
object-file.c

@ -1054,7 +1054,7 @@ int check_object_signature(struct repository *r, const struct object_id *oid, @@ -1054,7 +1054,7 @@ int check_object_signature(struct repository *r, const struct object_id *oid,
break;
r->hash_algo->update_fn(&c, buf, readlen);
}
r->hash_algo->final_fn(real_oid.hash, &c);
r->hash_algo->final_oid_fn(&real_oid, &c);
close_istream(st);
return !oideq(oid, &real_oid) ? -1 : 0;
}
@ -1755,7 +1755,7 @@ static void write_object_file_prepare(const struct git_hash_algo *algo, @@ -1755,7 +1755,7 @@ static void write_object_file_prepare(const struct git_hash_algo *algo,
algo->init_fn(&c);
algo->update_fn(&c, hdr, *hdrlen);
algo->update_fn(&c, buf, len);
algo->final_fn(oid->hash, &c);
algo->final_oid_fn(oid, &c);
}

/*
@ -1927,7 +1927,7 @@ static int write_loose_object(const struct object_id *oid, char *hdr, @@ -1927,7 +1927,7 @@ static int write_loose_object(const struct object_id *oid, char *hdr,
if (ret != Z_OK)
die(_("deflateEnd on object %s failed (%d)"), oid_to_hex(oid),
ret);
the_hash_algo->final_fn(parano_oid.hash, &c);
the_hash_algo->final_oid_fn(&parano_oid, &c);
if (!oideq(oid, &parano_oid))
die(_("confused by unstable object source data for %s"),
oid_to_hex(oid));
@ -2508,7 +2508,7 @@ static int check_stream_oid(git_zstream *stream, @@ -2508,7 +2508,7 @@ static int check_stream_oid(git_zstream *stream,
return -1;
}

the_hash_algo->final_fn(real_oid.hash, &c);
the_hash_algo->final_oid_fn(&real_oid, &c);
if (!oideq(expected_oid, &real_oid)) {
error(_("hash mismatch for %s (expected %s)"), path,
oid_to_hex(expected_oid));

Loading…
Cancel
Save