Commit 7ad0cee6 by Patrick Steinhardt

hash: openssl: check return values of SHA1_* functions

The OpenSSL functions `SHA1_Init`, `SHA1_Update` and `SHA1_Final` all
return 1 for success and 0 otherwise, but we never check their return
values. Do so.
parent 8f189cbf
...@@ -23,21 +23,36 @@ struct git_hash_ctx { ...@@ -23,21 +23,36 @@ struct git_hash_ctx {
GIT_INLINE(int) git_hash_init(git_hash_ctx *ctx) GIT_INLINE(int) git_hash_init(git_hash_ctx *ctx)
{ {
assert(ctx); assert(ctx);
SHA1_Init(&ctx->c);
if (SHA1_Init(&ctx->c) != 1) {
giterr_set(GITERR_SHA1, "hash_openssl: failed to initialize hash context");
return -1;
}
return 0; return 0;
} }
GIT_INLINE(int) git_hash_update(git_hash_ctx *ctx, const void *data, size_t len) GIT_INLINE(int) git_hash_update(git_hash_ctx *ctx, const void *data, size_t len)
{ {
assert(ctx); assert(ctx);
SHA1_Update(&ctx->c, data, len);
if (SHA1_Update(&ctx->c, data, len) != 1) {
giterr_set(GITERR_SHA1, "hash_openssl: failed to update hash");
return -1;
}
return 0; return 0;
} }
GIT_INLINE(int) git_hash_final(git_oid *out, git_hash_ctx *ctx) GIT_INLINE(int) git_hash_final(git_oid *out, git_hash_ctx *ctx)
{ {
assert(ctx); assert(ctx);
SHA1_Final(out->id, &ctx->c);
if (SHA1_Final(out->id, &ctx->c) != 1) {
giterr_set(GITERR_SHA1, "hash_openssl: failed to finalize hash");
return -1;
}
return 0; return 0;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment