Skip to content
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Fix leaks in extract_signature template
  • Loading branch information
julianmesa-gitkraken committed Oct 26, 2022
commit ee48c709843223810fb5fee6807aaa54cdc15164
12 changes: 10 additions & 2 deletions generate/templates/manual/commit/extract_signature.cc
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ NAN_METHOD(GitCommit::ExtractSignature)
if (info[1]->IsString()) {
Nan::Utf8String oidString(Nan::To<v8::String>(info[1]).ToLocalChecked());
baton->commit_id = (git_oid *)malloc(sizeof(git_oid));
baton->commit_idNeedsFree = true;
string str = string(*oidString);
if (git_oid_fromstr(baton->commit_id, str.c_str()) != GIT_OK) {
free(baton->commit_id);
Expand All @@ -40,6 +41,7 @@ NAN_METHOD(GitCommit::ExtractSignature)
}
} else {
baton->commit_id = Nan::ObjectWrap::Unwrap<GitOid>(Nan::To<v8::Object>(info[1]).ToLocalChecked())->GetValue();
baton->commit_idNeedsFree = false;
}

// baton->field
Expand Down Expand Up @@ -97,6 +99,10 @@ void GitCommit::ExtractSignatureWorker::HandleErrorCallback() {
git_buf_dispose(&baton->signature);
git_buf_dispose(&baton->signed_data);

if (baton->commit_idNeedsFree) {
free(baton->commit_id);
}

free(baton->field);

delete baton;
Expand Down Expand Up @@ -155,9 +161,11 @@ void GitCommit::ExtractSignatureWorker::HandleOKCallback()
git_buf_dispose(&baton->signature);
git_buf_dispose(&baton->signed_data);

if (baton->field != NULL) {
free((void *)baton->field);
if (baton->commit_idNeedsFree) {
free(baton->commit_id);
}

free(baton->field);

delete baton;
}