Commit 71fee5a34a12ea7a545b3c4dfbe91023c8f7c69a

Omar Polo 2022-06-14T13:16:14

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@

diff --git a/lib/privsep.c b/lib/privsep.c
index a630739..ebf6a99 100644
--- a/lib/privsep.c
+++ b/lib/privsep.c
@@ -702,10 +702,6 @@ got_privsep_recv_fetch_progress(int *done, struct got_object_id **id,
 	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_head *remote_refs,
 		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_sent,
 	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_total,
 	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 imsgbuf *ibuf)
 
 	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_repo **remotes,
 
 	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_repo **remotes,
 
 		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: