Commit c0358ee1 by panda Committed by Edward Thomson

Check git_signature_dup failure

git_signature_dup can have an allocation failure
parent 5aea17f6
...@@ -76,6 +76,14 @@ static git_blame_hunk* new_hunk( ...@@ -76,6 +76,14 @@ static git_blame_hunk* new_hunk(
return hunk; return hunk;
} }
static void free_hunk(git_blame_hunk *hunk)
{
git__free((void*)hunk->orig_path);
git_signature_free(hunk->final_signature);
git_signature_free(hunk->orig_signature);
git__free(hunk);
}
static git_blame_hunk* dup_hunk(git_blame_hunk *hunk) static git_blame_hunk* dup_hunk(git_blame_hunk *hunk)
{ {
git_blame_hunk *newhunk = new_hunk( git_blame_hunk *newhunk = new_hunk(
...@@ -90,17 +98,14 @@ static git_blame_hunk* dup_hunk(git_blame_hunk *hunk) ...@@ -90,17 +98,14 @@ static git_blame_hunk* dup_hunk(git_blame_hunk *hunk)
git_oid_cpy(&newhunk->orig_commit_id, &hunk->orig_commit_id); git_oid_cpy(&newhunk->orig_commit_id, &hunk->orig_commit_id);
git_oid_cpy(&newhunk->final_commit_id, &hunk->final_commit_id); git_oid_cpy(&newhunk->final_commit_id, &hunk->final_commit_id);
newhunk->boundary = hunk->boundary; newhunk->boundary = hunk->boundary;
git_signature_dup(&newhunk->final_signature, hunk->final_signature);
git_signature_dup(&newhunk->orig_signature, hunk->orig_signature);
return newhunk;
}
static void free_hunk(git_blame_hunk *hunk) if (git_signature_dup(&newhunk->final_signature, hunk->final_signature) < 0 ||
{ git_signature_dup(&newhunk->orig_signature, hunk->orig_signature) < 0) {
git__free((void*)hunk->orig_path); free_hunk(newhunk);
git_signature_free(hunk->final_signature); return NULL;
git_signature_free(hunk->orig_signature); }
git__free(hunk);
return newhunk;
} }
/* Starting with the hunk that includes start_line, shift all following hunks' /* Starting with the hunk that includes start_line, shift all following hunks'
......
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