Skip to content

Commit 65e4ab7

Browse files
author
Edward Thomson
authored
Merge pull request libgit2#3814 from pks-t/pks/invalid-memrefs
Fix invalid memory references
2 parents f0ee795 + 13deb87 commit 65e4ab7

File tree

3 files changed

+15
-2
lines changed

3 files changed

+15
-2
lines changed

src/index.c

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -505,10 +505,11 @@ static int index_remove_entry(git_index *index, size_t pos)
505505
int error = 0;
506506
git_index_entry *entry = git_vector_get(&index->entries, pos);
507507

508-
if (entry != NULL)
508+
if (entry != NULL) {
509509
git_tree_cache_invalidate_path(index->tree, entry->path);
510+
DELETE_IN_MAP(index, entry);
511+
}
510512

511-
DELETE_IN_MAP(index, entry);
512513
error = git_vector_remove(&index->entries, pos);
513514

514515
if (!error) {

src/transports/smart_pkt.c

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -433,6 +433,7 @@ int git_pkt_parse_line(
433433
* line?
434434
*/
435435
if (len == PKT_LEN_SIZE) {
436+
*head = NULL;
436437
*out = line;
437438
return 0;
438439
}

src/transports/smart_protocol.c

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -759,6 +759,14 @@ static int add_push_report_sideband_pkt(git_push *push, git_pkt_data *data_pkt,
759759
line_len -= (line_end - line);
760760
line = line_end;
761761

762+
/* When a valid packet with no content has been
763+
* read, git_pkt_parse_line does not report an
764+
* error, but the pkt pointer has not been set.
765+
* Handle this by skipping over empty packets.
766+
*/
767+
if (pkt == NULL)
768+
continue;
769+
762770
error = add_push_report_pkt(push, pkt);
763771

764772
git_pkt_free(pkt);
@@ -813,6 +821,9 @@ static int parse_report(transport_smart *transport, git_push *push)
813821

814822
error = 0;
815823

824+
if (pkt == NULL)
825+
continue;
826+
816827
switch (pkt->type) {
817828
case GIT_PKT_DATA:
818829
/* This is a sideband packet which contains other packets */

0 commit comments

Comments
 (0)