Commit Diff


commit - 766841c2970cb5bef66c9c69201b231d0eefb120
commit + fca1f6ad74d7a0a330d6014cdecbe6099bfc152e
blob - 79edb658b827574e323a216f2a813c4418040d70
blob + bc396829d8b8814e76408f7365262b64159eaba4
--- lib/privsep.c
+++ lib/privsep.c
@@ -1199,8 +1199,11 @@ get_more:
 			break;
 		}
 
-		if (imsg.hdr.len < IMSG_HEADER_SIZE + min_datalen)
-			return got_error(GOT_ERR_PRIVSEP_LEN);
+		if (imsg.hdr.len < IMSG_HEADER_SIZE + min_datalen) {
+			imsg_free(&imsg);
+			err = got_error(GOT_ERR_PRIVSEP_LEN);
+			break;
+		}
 
 		datalen = imsg.hdr.len - IMSG_HEADER_SIZE;