File tree Expand file tree Collapse file tree 1 file changed +16
-2
lines changed
Expand file tree Collapse file tree 1 file changed +16
-2
lines changed Original file line number Diff line number Diff line change @@ -604,7 +604,14 @@ int git_smart__download_pack(
604604 } else if (pkt -> type == GIT_PKT_PROGRESS ) {
605605 if (t -> progress_cb ) {
606606 git_pkt_progress * p = (git_pkt_progress * ) pkt ;
607- error = t -> progress_cb (p -> data , p -> len , t -> message_cb_payload );
607+
608+ if (p -> len > INT_MAX ) {
609+ git_error_set (GIT_ERROR_NET , "oversized progress message" );
610+ error = GIT_ERROR ;
611+ goto done ;
612+ }
613+
614+ error = t -> progress_cb (p -> data , (int )p -> len , t -> message_cb_payload );
608615 }
609616 } else if (pkt -> type == GIT_PKT_DATA ) {
610617 git_pkt_data * p = (git_pkt_data * ) pkt ;
@@ -839,7 +846,14 @@ static int parse_report(transport_smart *transport, git_push *push)
839846 case GIT_PKT_PROGRESS :
840847 if (transport -> progress_cb ) {
841848 git_pkt_progress * p = (git_pkt_progress * ) pkt ;
842- error = transport -> progress_cb (p -> data , p -> len , transport -> message_cb_payload );
849+
850+ if (p -> len > INT_MAX ) {
851+ git_error_set (GIT_ERROR_NET , "oversized progress message" );
852+ error = GIT_ERROR ;
853+ goto done ;
854+ }
855+
856+ error = transport -> progress_cb (p -> data , (int )p -> len , transport -> message_cb_payload );
843857 }
844858 break ;
845859 default :
You can’t perform that action at this time.
0 commit comments