commit 9b5e2ebd207db582ccb731c9543408456af87000 from: Omar Polo via: Thomas Adam date: Thu Jul 07 22:16:43 2022 UTC rework got_privesp_recv_tree to use got_privsep_recv_imsg ok stsp@ commit - eadd2d4623d9f234e06467faaa563e9186c8d38b commit + 9b5e2ebd207db582ccb731c9543408456af87000 blob - c0e2e9215b1e69757313a926d8ca0e0408abd03f blob + 94942480cdc9f231f775f9474a9ce692d2ec08b0 --- lib/privsep.c +++ lib/privsep.c @@ -1591,36 +1591,13 @@ got_privsep_recv_tree(struct got_tree_object **tree, s *tree = NULL; - err = read_imsg(ibuf); - if (err) - goto done; - - for (;;) { + while (*tree == NULL || nentries < (*tree)->nentries) { struct imsg imsg; - size_t n; size_t datalen; - n = imsg_get(ibuf, &imsg); - if (n == 0) { - if ((*tree)) { - if (nentries < (*tree)->nentries) { - err = read_imsg(ibuf); - if (err) - break; - continue; - } else - break; - } else { - err = got_error(GOT_ERR_PRIVSEP_MSG); - break; - } - } - - if (imsg.hdr.len < IMSG_HEADER_SIZE + min_datalen) { - imsg_free(&imsg); - err = got_error(GOT_ERR_PRIVSEP_LEN); + err = got_privsep_recv_imsg(&imsg, ibuf, min_datalen); + if (err) break; - } datalen = imsg.hdr.len - IMSG_HEADER_SIZE; @@ -1677,7 +1654,7 @@ got_privsep_recv_tree(struct got_tree_object **tree, s if (err) break; } -done: + if (*tree && (*tree)->nentries != nentries) { if (err == NULL) err = got_error(GOT_ERR_PRIVSEP_LEN);