commit c24fd27082b2b39806f9b498af8ab24435ba688e from: Omar Polo via: Thomas Adam date: Thu Jun 23 14:09:34 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 - 8ebb3daa7771365ed3667ee1d17a090556495847 commit + c24fd27082b2b39806f9b498af8ab24435ba688e blob - 87dd805d39fbfbc6af5e75cf6ac20560a66af3a1 blob + 606e6a34092058f46ddf5762dc50dcc115ee09ed --- lib/privsep.c +++ lib/privsep.c @@ -701,10 +701,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: @@ -929,10 +925,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: @@ -1016,10 +1008,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: @@ -1103,10 +1091,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: @@ -2425,10 +2409,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: @@ -2475,10 +2455,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: @@ -2516,10 +2492,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: