From: Omar Polo Subject: some size_t/off_t fixes for got-index-pack To: gameoftrees@openbsd.org Date: Tue, 18 Oct 2022 10:38:36 +0200 this fixes some size_t/off_t usage in got-index-pack. I've spotted these while looking into off_t/size_t usage in inflate.c, after a stsp' comment on irc. this is only a step though: there's still an implicit off_t -> size_t conversion when calling the inflate.c functions, so this change is almost a no-op effectively, but since the inflate.c diff would vely likely be bigger i thought of starting with committing this. ok? diff aabb25f81b1f8f68a03af422f9ae14ea5c3ae1fd 535672d658a448620f24cd3a0bf61e9a6a98c94c commit - aabb25f81b1f8f68a03af422f9ae14ea5c3ae1fd commit + 535672d658a448620f24cd3a0bf61e9a6a98c94c blob - be8dabb4b70569ee825b8a9571f0915a88776478 blob + 9ccb27ec5b1aa961b76fabb64c5f2e6094f9e14b --- lib/pack.c +++ lib/pack.c @@ -842,7 +842,7 @@ got_pack_parse_object_type_and_size(uint8_t *type, uin uint8_t t = 0; uint64_t s = 0; uint8_t sizeN; - size_t mapoff = 0; + off_t mapoff = 0; int i = 0; *len = 0; @@ -851,7 +851,7 @@ got_pack_parse_object_type_and_size(uint8_t *type, uin return got_error(GOT_ERR_PACK_OFFSET); if (pack->map) { - mapoff = (size_t)offset; + mapoff = offset; } else { if (lseek(pack->fd, offset, SEEK_SET) == -1) return got_error_from_errno("lseek"); @@ -928,8 +928,8 @@ parse_negative_offset(int64_t *offset, size_t *len, st return got_error(GOT_ERR_NO_SPACE); if (pack->map) { - size_t mapoff; - mapoff = (size_t)delta_offset + *len; + off_t mapoff; + mapoff = delta_offset + *len; if (mapoff + sizeof(offN) >= pack->filesize) return got_error(GOT_ERR_PACK_OFFSET); offN = *(pack->map + mapoff); @@ -1080,7 +1080,7 @@ got_pack_parse_ref_delta(struct got_object_id *id, struct got_pack *pack, off_t delta_offset, int tslen) { if (pack->map) { - size_t mapoff = delta_offset + tslen; + off_t mapoff = delta_offset + tslen; if (mapoff + sizeof(*id) >= pack->filesize) return got_error(GOT_ERR_PACK_OFFSET); memcpy(id, pack->map + mapoff, sizeof(*id)); @@ -1392,7 +1392,7 @@ got_pack_dump_delta_chain_to_file(size_t *result_size, max_size = delta->size; if (max_size > max_bufsize) { if (pack->map) { - mapoff = (size_t)delta_data_offset; + mapoff = delta_data_offset; err = got_inflate_to_file_mmap( &base_bufsz, NULL, NULL, pack->map, mapoff, pack->filesize - mapoff, @@ -1409,7 +1409,7 @@ got_pack_dump_delta_chain_to_file(size_t *result_size, } accum_bufsz = max_size; if (pack->map) { - mapoff = (size_t)delta_data_offset; + mapoff = delta_data_offset; err = got_inflate_to_mem_mmap(&base_buf, &base_bufsz, NULL, NULL, pack->map, mapoff, @@ -1586,7 +1586,7 @@ got_pack_dump_delta_chain_to_mem(uint8_t **outbuf, siz max_size = delta->size; if (pack->map) { - size_t mapoff = (size_t)delta_data_offset; + off_t mapoff = delta_data_offset; err = got_inflate_to_mem_mmap(&base_buf, &base_bufsz, NULL, NULL, pack->map, mapoff, pack->filesize - mapoff); @@ -1704,7 +1704,7 @@ got_packfile_extract_object(struct got_pack *pack, str return got_error(GOT_ERR_PACK_OFFSET); if (pack->map) { - size_t mapoff = (size_t)obj->pack_offset; + off_t mapoff = obj->pack_offset; err = got_inflate_to_file_mmap(&obj->size, NULL, NULL, pack->map, mapoff, pack->filesize - mapoff, outfile); @@ -1734,7 +1734,7 @@ got_packfile_extract_object_to_mem(uint8_t **buf, size if (obj->pack_offset >= pack->filesize) return got_error(GOT_ERR_PACK_OFFSET); if (pack->map) { - size_t mapoff = (size_t)obj->pack_offset; + off_t mapoff = obj->pack_offset; err = got_inflate_to_mem_mmap(buf, len, NULL, NULL, pack->map, mapoff, pack->filesize - mapoff); } else { blob - a361289b4a09acce2ecd03e2d8817a2f84e28f5a blob + 06f67a9876ec2cdda565b0e36e3cf14c8d503ed4 --- libexec/got-index-pack/got-index-pack.c +++ libexec/got-index-pack/got-index-pack.c @@ -184,7 +184,7 @@ read_packed_object(struct got_pack *pack, struct got_i char *header; size_t headerlen; const char *obj_label; - size_t mapoff = obj->off; + off_t mapoff = obj->off; struct got_inflate_checksum csum; memset(&csum, 0, sizeof(csum)); @@ -645,7 +645,7 @@ index_pack(struct got_pack *pack, int idxfd, FILE *tmp uint8_t packidx_hash[SHA1_DIGEST_LENGTH]; ssize_t r, w; int pass, have_ref_deltas = 0, first_delta_idx = -1; - size_t mapoff = 0; + off_t mapoff = 0; int p_indexed = 0, last_p_indexed = -1; int p_resolved = 0, last_p_resolved = -1; struct got_ratelimit rl;