{"payload":{"feedbackUrl":"https://github.com/orgs/community/discussions/53140","repo":{"id":817312504,"defaultBranch":"master","name":"zip2","ownerLogin":"0xCCF4","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2024-06-19T12:53:02.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/20901343?v=4","public":true,"private":false,"isOrgOwned":false},"refInfo":{"name":"","listCacheKey":"v0:1718954841.0","currentOid":""},"activityList":{"items":[{"before":"a9b7bc6e35f404e6012e4e576c1379b1c786274d","after":"ecf558897c622f884f864a0bdcc7cd4dfd3f723d","ref":"refs/heads/feature-read-from-seekable-stream","pushedAt":"2024-08-13T01:15:01.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"Pr0methean","name":"Chris Hennick","path":"/Pr0methean","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4961925?s=80&v=4"},"commit":{"message":"Merge branch 'master' into feature-read-from-seekable-stream","shortMessageHtmlLink":"Merge branch 'master' into feature-read-from-seekable-stream"}},{"before":"60221366cb60feca0c5b3ca0b5f83c390008fb90","after":"a9b7bc6e35f404e6012e4e576c1379b1c786274d","ref":"refs/heads/feature-read-from-seekable-stream","pushedAt":"2024-08-03T01:41:41.000Z","pushType":"push","commitsCount":18,"pusher":{"login":"Pr0methean","name":"Chris Hennick","path":"/Pr0methean","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4961925?s=80&v=4"},"commit":{"message":"Merge branch 'master' into feature-read-from-seekable-stream\n\nSigned-off-by: Chris Hennick <4961925+Pr0methean@users.noreply.github.com>","shortMessageHtmlLink":"Merge branch 'master' into feature-read-from-seekable-stream"}},{"before":"a530f52c86f064dec6cd142786b12466e83d0401","after":"60221366cb60feca0c5b3ca0b5f83c390008fb90","ref":"refs/heads/feature-read-from-seekable-stream","pushedAt":"2024-07-19T23:27:18.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Pr0methean","name":"Chris Hennick","path":"/Pr0methean","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4961925?s=80&v=4"},"commit":{"message":"fix: FixedSizeBlock must extend Pod\n\nSigned-off-by: Chris Hennick <4961925+Pr0methean@users.noreply.github.com>","shortMessageHtmlLink":"fix: FixedSizeBlock must extend Pod"}},{"before":"7cd7937e7e56cf6afb473501bd41ae6f6756c155","after":"a530f52c86f064dec6cd142786b12466e83d0401","ref":"refs/heads/feature-read-from-seekable-stream","pushedAt":"2024-07-19T21:54:01.000Z","pushType":"push","commitsCount":54,"pusher":{"login":"Pr0methean","name":"Chris Hennick","path":"/Pr0methean","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4961925?s=80&v=4"},"commit":{"message":"Merge branch 'master' into feature-read-from-seekable-stream\n\nSigned-off-by: Chris Hennick <4961925+Pr0methean@users.noreply.github.com>","shortMessageHtmlLink":"Merge branch 'master' into feature-read-from-seekable-stream"}},{"before":"549d1da287e500b48d31a7b2f2edc9c4b508b67f","after":"7cd7937e7e56cf6afb473501bd41ae6f6756c155","ref":"refs/heads/feature-read-from-seekable-stream","pushedAt":"2024-07-15T16:11:13.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"Pr0methean","name":"Chris Hennick","path":"/Pr0methean","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4961925?s=80&v=4"},"commit":{"message":"Merge branch 'master' into feature-read-from-seekable-stream\n\nSigned-off-by: Chris Hennick <4961925+Pr0methean@users.noreply.github.com>","shortMessageHtmlLink":"Merge branch 'master' into feature-read-from-seekable-stream"}},{"before":"c61a68322c5f2acebf2bec0e5b32a71d93c5da6b","after":"549d1da287e500b48d31a7b2f2edc9c4b508b67f","ref":"refs/heads/feature-read-from-seekable-stream","pushedAt":"2024-07-15T11:07:23.000Z","pushType":"push","commitsCount":37,"pusher":{"login":"0xCCF4","name":"0xCCF4","path":"/0xCCF4","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20901343?s=80&v=4"},"commit":{"message":"perf: use vecdequeue for look ahead buffer\n\nrun cargo fmt & clippy","shortMessageHtmlLink":"perf: use vecdequeue for look ahead buffer"}},{"before":"b6e0a0693ba2d07f541cd9017b60df7e65817e48","after":"4b57e8f72b40c3b4c8e0825d9542a4172bba29cd","ref":"refs/heads/master","pushedAt":"2024-07-15T10:42:18.000Z","pushType":"push","commitsCount":47,"pusher":{"login":"0xCCF4","name":"0xCCF4","path":"/0xCCF4","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20901343?s=80&v=4"},"commit":{"message":"Merge pull request #213 from zip-rs/fuzz-progressive-sizes\n\ntest(fuzz): Commit new work-in-progress seed corpus","shortMessageHtmlLink":"Merge pull request zip-rs#213 from zip-rs/fuzz-progressive-sizes"}},{"before":"fc83a70e6b389b7208fa811296acdc20b92e9fac","after":"c61a68322c5f2acebf2bec0e5b32a71d93c5da6b","ref":"refs/heads/feature-read-from-seekable-stream","pushedAt":"2024-07-08T10:00:21.000Z","pushType":"push","commitsCount":2,"pusher":{"login":"0xCCF4","name":"0xCCF4","path":"/0xCCF4","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20901343?s=80&v=4"},"commit":{"message":"Merge remote-tracking branch 'origin/feature-read-from-seekable-stream' into feature-read-from-seekable-stream","shortMessageHtmlLink":"Merge remote-tracking branch 'origin/feature-read-from-seekable-strea…"}},{"before":"ad3dbc0ab914c4fd6d2c650997d85a3e79b43062","after":"fc83a70e6b389b7208fa811296acdc20b92e9fac","ref":"refs/heads/feature-read-from-seekable-stream","pushedAt":"2024-07-06T20:01:38.000Z","pushType":"push","commitsCount":14,"pusher":{"login":"Pr0methean","name":"Chris Hennick","path":"/Pr0methean","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4961925?s=80&v=4"},"commit":{"message":"Merge branch 'master' into feature-read-from-seekable-stream\n\nSigned-off-by: Chris Hennick <4961925+Pr0methean@users.noreply.github.com>","shortMessageHtmlLink":"Merge branch 'master' into feature-read-from-seekable-stream"}},{"before":"1d3afa92305b2c95c80b82d1c02c2d01804c89b0","after":"ad3dbc0ab914c4fd6d2c650997d85a3e79b43062","ref":"refs/heads/feature-read-from-seekable-stream","pushedAt":"2024-07-06T19:52:22.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"Pr0methean","name":"Chris Hennick","path":"/Pr0methean","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4961925?s=80&v=4"},"commit":{"message":"chore: Feature-gate ReadAndSupplyExpectedCRC32 implementations\n\nSigned-off-by: Chris Hennick <4961925+Pr0methean@users.noreply.github.com>","shortMessageHtmlLink":"chore: Feature-gate ReadAndSupplyExpectedCRC32 implementations"}},{"before":"3265477834ca5080b62da13f9606cf84cb04c05f","after":"1d3afa92305b2c95c80b82d1c02c2d01804c89b0","ref":"refs/heads/feature-read-from-seekable-stream","pushedAt":"2024-06-24T12:16:41.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"0xCCF4","name":"0xCCF4","path":"/0xCCF4","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20901343?s=80&v=4"},"commit":{"message":"Run cargo fmt --all","shortMessageHtmlLink":"Run cargo fmt --all"}},{"before":"bf7a03089db6c9fa2333371414a1ca5a0f9c8d22","after":"3265477834ca5080b62da13f9606cf84cb04c05f","ref":"refs/heads/feature-read-from-seekable-stream","pushedAt":"2024-06-24T12:15:48.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"0xCCF4","name":"0xCCF4","path":"/0xCCF4","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20901343?s=80&v=4"},"commit":{"message":"ZipStream API supports archives with data descriptor","shortMessageHtmlLink":"ZipStream API supports archives with data descriptor"}},{"before":"47f718b3e13d920a37f064fd1ad6fa8887048e5a","after":"bf7a03089db6c9fa2333371414a1ca5a0f9c8d22","ref":"refs/heads/feature-read-from-seekable-stream","pushedAt":"2024-06-24T11:42:08.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"0xCCF4","name":"0xCCF4","path":"/0xCCF4","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20901343?s=80&v=4"},"commit":{"message":"CRC32 checksum is now late propagated\n\nBefore: The CRC32 checksum had to be supplied before the stream is read. Though checked when EOF occurred.\nNow: The CRC32 checksum can be supplied before starting to read or after finishing reading from the stream.","shortMessageHtmlLink":"CRC32 checksum is now late propagated"}},{"before":"f6b5da958028c5cb90d6de7b5b56a378de52fc95","after":"47f718b3e13d920a37f064fd1ad6fa8887048e5a","ref":"refs/heads/feature-read-from-seekable-stream","pushedAt":"2024-06-23T11:50:39.000Z","pushType":"push","commitsCount":10,"pusher":{"login":"0xCCF4","name":"0xCCF4","path":"/0xCCF4","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20901343?s=80&v=4"},"commit":{"message":"Completed merge master -> feature branch","shortMessageHtmlLink":"Completed merge master -> feature branch"}},{"before":"3bef659fed873d322222c0ceb2161943012a7b3f","after":"f6b5da958028c5cb90d6de7b5b56a378de52fc95","ref":"refs/heads/feature-read-from-seekable-stream","pushedAt":"2024-06-23T11:31:12.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"0xCCF4","name":"0xCCF4","path":"/0xCCF4","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20901343?s=80&v=4"},"commit":{"message":"Library does not require Take anymore but instead accepts a template T: Read in internal data structures\n\nAdded UntrustedValue and MaybeUntrusted data types","shortMessageHtmlLink":"Library does not require Take<Read> anymore but instead accepts a tem…"}},{"before":"27c7fa4cd408bb4cc1364cf599942883371a27fa","after":"b6e0a0693ba2d07f541cd9017b60df7e65817e48","ref":"refs/heads/master","pushedAt":"2024-06-23T11:30:57.000Z","pushType":"push","commitsCount":8,"pusher":{"login":"0xCCF4","name":"0xCCF4","path":"/0xCCF4","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20901343?s=80&v=4"},"commit":{"message":"style: Fix cargo fmt and clippy warnings","shortMessageHtmlLink":"style: Fix cargo fmt and clippy warnings"}},{"before":"59f1327e72390813a422e1c7486818da536e9ad7","after":"3bef659fed873d322222c0ceb2161943012a7b3f","ref":"refs/heads/feature-read-from-seekable-stream","pushedAt":"2024-06-22T14:19:01.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"0xCCF4","name":"0xCCF4","path":"/0xCCF4","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20901343?s=80&v=4"},"commit":{"message":"Added security risk documentation and untrusted value struct to encapsulate potential unsafe data","shortMessageHtmlLink":"Added security risk documentation and untrusted value struct to encap…"}},{"before":"7f0d07b539864e538f459d883f5b0d601adfae85","after":"59f1327e72390813a422e1c7486818da536e9ad7","ref":"refs/heads/feature-read-from-seekable-stream","pushedAt":"2024-06-21T13:56:10.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"0xCCF4","name":"0xCCF4","path":"/0xCCF4","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20901343?s=80&v=4"},"commit":{"message":"Moved streamed zip read tests to custom test file","shortMessageHtmlLink":"Moved streamed zip read tests to custom test file"}},{"before":"93a7f69c694d35c5aea69ee2f51dbda8d6986e4b","after":"7f0d07b539864e538f459d883f5b0d601adfae85","ref":"refs/heads/feature-read-from-seekable-stream","pushedAt":"2024-06-21T07:45:38.000Z","pushType":"push","commitsCount":7,"pusher":{"login":"0xCCF4","name":"0xCCF4","path":"/0xCCF4","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20901343?s=80&v=4"},"commit":{"message":"Merged master to feature branch","shortMessageHtmlLink":"Merged master to feature branch"}},{"before":"78a38e977af3519db5ab5a74666b2fb57134788e","after":"27c7fa4cd408bb4cc1364cf599942883371a27fa","ref":"refs/heads/master","pushedAt":"2024-06-21T07:43:40.000Z","pushType":"push","commitsCount":5,"pusher":{"login":"0xCCF4","name":"0xCCF4","path":"/0xCCF4","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20901343?s=80&v=4"},"commit":{"message":"chore: Fix a failing unit test","shortMessageHtmlLink":"chore: Fix a failing unit test"}},{"before":null,"after":"93a7f69c694d35c5aea69ee2f51dbda8d6986e4b","ref":"refs/heads/feature-read-from-seekable-stream","pushedAt":"2024-06-21T07:27:21.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"0xCCF4","name":"0xCCF4","path":"/0xCCF4","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20901343?s=80&v=4"},"commit":{"message":"Added the method fn read_zipfile_from_seekablestream(reader: &mut S) that reads the next zipfile entry from a stream by potential parsing the data descriptor\n\nThis is an alternative method to read a zip file. If possible, use the ZipArchive functions as some information will be missing when reading this manner.\n\nThis method extends the existing read_zipfile_from_stream method when the stream is seekable.\n\nThis method is superior to ZipArchive in the special case that the underlying stream implementation must buffer all seen/read data to provide seek back support and the memory consumption must be kept small. This could be the case when reading a ZipFile B.zip nested within a zip file A.zip, that is stored on disk. Since A is seekable when stored as file, A.zip can be read using ZipArchive. Be B a zip file stored in A, then we can read B's content using a decompressing reader. The problem is that the decompressing reader will not be seekable (due to decompression). When one would like to still read contents of B.zip without extracting A to disk, the file B.zip must be buffered in RAM. When using ZipArchive to read B.zip from RAM, the whole B.zip file must be buffered to RAM because the central directory of B.zip is located at the end of the file B.zip. This method will read B.zip from the start of the file and returning the first file entry found in B.zip. After the execution of this function and the ZipFile return value is dropped, the reader will be positioned at the end of the file entry. Since this function will never seek back to before the initial position of the stream when the function was called, the underlying stream implementation may discard, after dropping ZipFile, all buffered data before the current position of the stream. Summarizing: In given scenario, this method must not buffer the whole B.zip file to RAM, but only the first file entry.","shortMessageHtmlLink":"Added the method fn read_zipfile_from_seekablestream<S: Read + Seek>(…"}},{"before":"78a38e977af3519db5ab5a74666b2fb57134788e","after":null,"ref":"refs/heads/feature-streaming-read","pushedAt":"2024-06-20T09:03:01.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"0xCCF4","name":"0xCCF4","path":"/0xCCF4","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20901343?s=80&v=4"}},{"before":"21ea46b6a2d5a33cc37f18d87869dc817794dcbb","after":null,"ref":"refs/heads/feature","pushedAt":"2024-06-20T09:02:08.000Z","pushType":"branch_deletion","commitsCount":0,"pusher":{"login":"0xCCF4","name":"0xCCF4","path":"/0xCCF4","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20901343?s=80&v=4"}},{"before":"21ea46b6a2d5a33cc37f18d87869dc817794dcbb","after":"c958cb71f6e5ebfde149e1fa217d70b60b2e7957","ref":"refs/heads/feature-fix-ziplocalfile-flags-bug","pushedAt":"2024-06-20T01:35:54.000Z","pushType":"push","commitsCount":3,"pusher":{"login":"Pr0methean","name":"Chris Hennick","path":"/Pr0methean","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/4961925?s=80&v=4"},"commit":{"message":"Merge branch 'master' into feature-fix-ziplocalfile-flags-bug","shortMessageHtmlLink":"Merge branch 'master' into feature-fix-ziplocalfile-flags-bug"}},{"before":null,"after":"78a38e977af3519db5ab5a74666b2fb57134788e","ref":"refs/heads/feature-streaming-read","pushedAt":"2024-06-19T14:22:24.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"0xCCF4","name":"0xCCF4","path":"/0xCCF4","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20901343?s=80&v=4"},"commit":{"message":"fix: Could still select a fake CDE over a real one in some cases","shortMessageHtmlLink":"fix: Could still select a fake CDE over a real one in some cases"}},{"before":"78a38e977af3519db5ab5a74666b2fb57134788e","after":"21ea46b6a2d5a33cc37f18d87869dc817794dcbb","ref":"refs/heads/feature","pushedAt":"2024-06-19T14:02:15.000Z","pushType":"push","commitsCount":1,"pusher":{"login":"0xCCF4","name":"0xCCF4","path":"/0xCCF4","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20901343?s=80&v=4"},"commit":{"message":"Fixed bug local block parsing data size, check for local size incomplete\n\nIn the ZIP Format Specification (version 6.3.10) it is defined that for a local file header (section 4.3.7) flag bit 3 (section 4.4.4) may be set to indicate that the data size can be found in the data descriptor. A supporting implementation must in that case set crc32, compressed and uncompressed size to zero.\n\nWe can therefore assume that if C/U size or crc32 is not set to zero in the local file header, the given size is valid and can be used to determine the content size\n\nI observed that some zip compression utils in fact include the size in the local file header while still setting bit 3.","shortMessageHtmlLink":"Fixed bug local block parsing data size, check for local size incomplete"}},{"before":null,"after":"21ea46b6a2d5a33cc37f18d87869dc817794dcbb","ref":"refs/heads/feature-fix-ziplocalfile-flags-bug","pushedAt":"2024-06-19T14:01:58.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"0xCCF4","name":"0xCCF4","path":"/0xCCF4","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20901343?s=80&v=4"},"commit":{"message":"Fixed bug local block parsing data size, check for local size incomplete\n\nIn the ZIP Format Specification (version 6.3.10) it is defined that for a local file header (section 4.3.7) flag bit 3 (section 4.4.4) may be set to indicate that the data size can be found in the data descriptor. A supporting implementation must in that case set crc32, compressed and uncompressed size to zero.\n\nWe can therefore assume that if C/U size or crc32 is not set to zero in the local file header, the given size is valid and can be used to determine the content size\n\nI observed that some zip compression utils in fact include the size in the local file header while still setting bit 3.","shortMessageHtmlLink":"Fixed bug local block parsing data size, check for local size incomplete"}},{"before":null,"after":"78a38e977af3519db5ab5a74666b2fb57134788e","ref":"refs/heads/feature","pushedAt":"2024-06-19T13:24:07.000Z","pushType":"branch_creation","commitsCount":0,"pusher":{"login":"0xCCF4","name":"0xCCF4","path":"/0xCCF4","primaryAvatarUrl":"https://avatars.githubusercontent.com/u/20901343?s=80&v=4"},"commit":{"message":"fix: Could still select a fake CDE over a real one in some cases","shortMessageHtmlLink":"fix: Could still select a fake CDE over a real one in some cases"}}],"hasNextPage":false,"hasPreviousPage":false,"activityType":"all","actor":null,"timePeriod":"all","sort":"DESC","perPage":30,"cursor":"djE6ks8AAAAEmKsOAAA","startCursor":null,"endCursor":null}},"title":"Activity · 0xCCF4/zip2"}