commit 71fee5a34a12ea7a545b3c4dfbe91023c8f7c69a from: Omar Polo date: Tue Jun 14 13:16:14 2022 UTC don't check datalen when calling recv_imsg_error recv_imsg_error already checks the size of the message, and it does so more precisely than the removed code. ok stsp@ commit - 35095610b1bb11a6c722f6d42f6609bd308531a8 commit + 71fee5a34a12ea7a545b3c4dfbe91023c8f7c69a blob - a63073982fd405c8f986e41f79764f7b0f74ee7c blob + ebf6a99d8a06304aae4cf3f790bc522fc3e78c82 --- lib/privsep.c +++ lib/privsep.c @@ -702,10 +702,6 @@ got_privsep_recv_fetch_progress(int *done, struct got_ datalen = imsg.hdr.len - IMSG_HEADER_SIZE; switch (imsg.hdr.type) { case GOT_IMSG_ERROR: - if (datalen < sizeof(struct got_imsg_error)) { - err = got_error(GOT_ERR_PRIVSEP_LEN); - break; - } err = recv_imsg_error(&imsg, datalen); break; case GOT_IMSG_FETCH_SYMREFS: @@ -930,10 +926,6 @@ got_privsep_recv_send_remote_refs(struct got_pathlist_ datalen = imsg.hdr.len - IMSG_HEADER_SIZE; switch (imsg.hdr.type) { case GOT_IMSG_ERROR: - if (datalen < sizeof(struct got_imsg_error)) { - err = got_error(GOT_ERR_PRIVSEP_LEN); - goto done; - } err = recv_imsg_error(&imsg, datalen); goto done; case GOT_IMSG_SEND_REMOTE_REF: @@ -1017,10 +1009,6 @@ got_privsep_recv_send_progress(int *done, off_t *bytes datalen = imsg.hdr.len - IMSG_HEADER_SIZE; switch (imsg.hdr.type) { case GOT_IMSG_ERROR: - if (datalen < sizeof(struct got_imsg_error)) { - err = got_error(GOT_ERR_PRIVSEP_LEN); - break; - } err = recv_imsg_error(&imsg, datalen); break; case GOT_IMSG_SEND_UPLOAD_PROGRESS: @@ -1104,10 +1092,6 @@ got_privsep_recv_index_progress(int *done, int *nobj_t datalen = imsg.hdr.len - IMSG_HEADER_SIZE; switch (imsg.hdr.type) { case GOT_IMSG_ERROR: - if (datalen < sizeof(struct got_imsg_error)) { - err = got_error(GOT_ERR_PRIVSEP_LEN); - break; - } err = recv_imsg_error(&imsg, datalen); break; case GOT_IMSG_IDXPACK_PROGRESS: @@ -2426,10 +2410,6 @@ got_privsep_recv_gotconfig_str(char **str, struct imsg switch (imsg.hdr.type) { case GOT_IMSG_ERROR: - if (datalen < sizeof(struct got_imsg_error)) { - err = got_error(GOT_ERR_PRIVSEP_LEN); - break; - } err = recv_imsg_error(&imsg, datalen); break; case GOT_IMSG_GOTCONFIG_STR_VAL: @@ -2476,10 +2456,6 @@ got_privsep_recv_gotconfig_remotes(struct got_remote_r switch (imsg.hdr.type) { case GOT_IMSG_ERROR: - if (datalen < sizeof(struct got_imsg_error)) { - err = got_error(GOT_ERR_PRIVSEP_LEN); - break; - } err = recv_imsg_error(&imsg, datalen); break; case GOT_IMSG_GOTCONFIG_REMOTES: @@ -2517,10 +2493,6 @@ got_privsep_recv_gotconfig_remotes(struct got_remote_r switch (imsg.hdr.type) { case GOT_IMSG_ERROR: - if (datalen < sizeof(struct got_imsg_error)) { - err = got_error(GOT_ERR_PRIVSEP_LEN); - break; - } err = recv_imsg_error(&imsg, datalen); break; case GOT_IMSG_GOTCONFIG_REMOTE: