mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-03 16:06:02 +00:00
Merge pull request #4122 from pks-t/pks/signature-dbl-free
Signature cleanups
This commit is contained in:
commit
a59545de5e
@ -255,7 +255,8 @@ GIT_EXTERN(int) git_commit_nth_gen_ancestor(
|
|||||||
/**
|
/**
|
||||||
* Get an arbitrary header field
|
* Get an arbitrary header field
|
||||||
*
|
*
|
||||||
* @param out the buffer to fill
|
* @param out the buffer to fill; existing content will be
|
||||||
|
* overwritten
|
||||||
* @param commit the commit to look in
|
* @param commit the commit to look in
|
||||||
* @param field the header field to return
|
* @param field the header field to return
|
||||||
* @return 0 on succeess, GIT_ENOTFOUND if the field does not exist,
|
* @return 0 on succeess, GIT_ENOTFOUND if the field does not exist,
|
||||||
@ -270,8 +271,10 @@ GIT_EXTERN(int) git_commit_header_field(git_buf *out, const git_commit *commit,
|
|||||||
* `GITERR_INVALID`. If the commit does not have a signature, the
|
* `GITERR_INVALID`. If the commit does not have a signature, the
|
||||||
* error class will be `GITERR_OBJECT`.
|
* error class will be `GITERR_OBJECT`.
|
||||||
*
|
*
|
||||||
* @param signature the signature block
|
* @param signature the signature block; existing content will be
|
||||||
* @param signed_data signed data; this is the commit contents minus the signature block
|
* overwritten
|
||||||
|
* @param signed_data signed data; this is the commit contents minus the signature block;
|
||||||
|
* existing content will be overwritten
|
||||||
* @param repo the repository in which the commit exists
|
* @param repo the repository in which the commit exists
|
||||||
* @param commit_id the commit from which to extract the data
|
* @param commit_id the commit from which to extract the data
|
||||||
* @param field the name of the header field containing the signature
|
* @param field the name of the header field containing the signature
|
||||||
|
@ -66,7 +66,8 @@ extern int git_buf_try_grow(
|
|||||||
* library, when providing git_buf's, may wish to provide a NULL ptr for
|
* library, when providing git_buf's, may wish to provide a NULL ptr for
|
||||||
* ease of handling. The buffer routines, however, expect a non-NULL ptr
|
* ease of handling. The buffer routines, however, expect a non-NULL ptr
|
||||||
* always. This helper method simply handles NULL input, converting to a
|
* always. This helper method simply handles NULL input, converting to a
|
||||||
* git_buf__initbuf.
|
* git_buf__initbuf. If a buffer with a non-NULL ptr is passed in, this method
|
||||||
|
* assures that the buffer is '\0'-terminated.
|
||||||
*/
|
*/
|
||||||
extern void git_buf_sanitize(git_buf *buf);
|
extern void git_buf_sanitize(git_buf *buf);
|
||||||
|
|
||||||
|
@ -642,7 +642,7 @@ int git_commit_header_field(git_buf *out, const git_commit *commit, const char *
|
|||||||
{
|
{
|
||||||
const char *eol, *buf = commit->raw_header;
|
const char *eol, *buf = commit->raw_header;
|
||||||
|
|
||||||
git_buf_sanitize(out);
|
git_buf_clear(out);
|
||||||
|
|
||||||
while ((eol = strchr(buf, '\n'))) {
|
while ((eol = strchr(buf, '\n'))) {
|
||||||
/* We can skip continuations here */
|
/* We can skip continuations here */
|
||||||
@ -706,8 +706,8 @@ int git_commit_extract_signature(git_buf *signature, git_buf *signed_data, git_r
|
|||||||
const char *h, *eol;
|
const char *h, *eol;
|
||||||
int error;
|
int error;
|
||||||
|
|
||||||
git_buf_sanitize(signature);
|
git_buf_clear(signature);
|
||||||
git_buf_sanitize(signed_data);
|
git_buf_clear(signed_data);
|
||||||
|
|
||||||
if (!field)
|
if (!field)
|
||||||
field = "gpgsig";
|
field = "gpgsig";
|
||||||
@ -766,8 +766,9 @@ int git_commit_extract_signature(git_buf *signature, git_buf *signed_data, git_r
|
|||||||
if (git_buf_oom(signature))
|
if (git_buf_oom(signature))
|
||||||
goto oom;
|
goto oom;
|
||||||
|
|
||||||
|
error = git_buf_puts(signed_data, eol+1);
|
||||||
git_odb_object_free(obj);
|
git_odb_object_free(obj);
|
||||||
return git_buf_puts(signed_data, eol+1);
|
return error;
|
||||||
}
|
}
|
||||||
|
|
||||||
giterr_set(GITERR_OBJECT, "this commit is not signed");
|
giterr_set(GITERR_OBJECT, "this commit is not signed");
|
||||||
|
Loading…
Reference in New Issue
Block a user