summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Steinhardt <ps@pks.im>2018-08-03 11:13:10 +0200
committerGitHub <noreply@github.com>2018-08-03 11:13:10 +0200
commit64138b70e10b9812af8f944e83747aa51da9a920 (patch)
treeb1120efb0775e056444011d59570fb11de0c6746
parent0cf75467f1386d8b6674d12754ae25be1dbf90e1 (diff)
parent835d60432082b87984211b60ab82791c01011b1b (diff)
downloadlibgit2-64138b70e10b9812af8f944e83747aa51da9a920.tar.gz
Merge pull request #4728 from pks-t/pks/fuzzers
Fuzzers
-rw-r--r--.gitignore2
-rw-r--r--CMakeLists.txt77
-rwxr-xr-xci/build.sh2
-rwxr-xr-xci/test.sh11
-rw-r--r--cmake/Modules/AddCFlagIfSupported.cmake14
-rw-r--r--docs/fuzzing.md71
-rw-r--r--fuzzers/CMakeLists.txt18
-rw-r--r--fuzzers/corpora/download_refs/clone.datbin0 -> 632 bytes
-rw-r--r--fuzzers/corpora/packfile/004bd06c91c0dc8ab7e963f4b5e87be00292911e1
-rw-r--r--fuzzers/corpora/packfile/00b67414c7b17916b3bd0a3d02284937fa0c4378bin0 -> 2 bytes
-rw-r--r--fuzzers/corpora/packfile/02eaeb43f0ec7dbfd91bd75e7ddcc7fd590dbc77bin0 -> 13 bytes
-rw-r--r--fuzzers/corpora/packfile/02f4286569be24124d8ab209733b7492f7560310bin0 -> 33 bytes
-rw-r--r--fuzzers/corpora/packfile/037ba5f9d6d695aa4739810f8bea6e795c1d7614bin0 -> 37 bytes
-rw-r--r--fuzzers/corpora/packfile/038e06289ac876f109fc12ca4b8284497ca26821bin0 -> 32 bytes
-rw-r--r--fuzzers/corpora/packfile/042dc4512fa3d391c5170cf3aa61e6a638f843421
-rw-r--r--fuzzers/corpora/packfile/044bf19babf3f9cde07adbfa2a45c7508538cbe8bin0 -> 55 bytes
-rw-r--r--fuzzers/corpora/packfile/044e12ea43bee3c4befe27ba4687bee98d505fd7bin0 -> 35 bytes
-rw-r--r--fuzzers/corpora/packfile/061fb208431db793bbd3645b7a16058a1e2a24121
-rw-r--r--fuzzers/corpora/packfile/06576556d1ad802f247cad11ae748be47b70cd9c1
-rw-r--r--fuzzers/corpora/packfile/06ceea0c98756d302c302410fffe0dc54a055486bin0 -> 18 bytes
-rw-r--r--fuzzers/corpora/packfile/071e65ac0bf08f2424a89a4a499004c1bb9f3f6cbin0 -> 112 bytes
-rw-r--r--fuzzers/corpora/packfile/0739ff2f064568a4d775c8061958e66c419dbea0bin0 -> 111 bytes
-rw-r--r--fuzzers/corpora/packfile/077760469bf8392342d09329c732b98d24be2c30bin0 -> 47 bytes
-rw-r--r--fuzzers/corpora/packfile/08534f33c201a45017b502e90a800f1b708ebcb31
-rw-r--r--fuzzers/corpora/packfile/09e9046a7d6125cf2915a326a1504dd75d0543b51
-rw-r--r--fuzzers/corpora/packfile/0ade7c2cf97f75d009975f4d720d1fa6c19f48971
-rw-r--r--fuzzers/corpora/packfile/0c316c67c1450aee57ffa3f74c19ea5d32d44622bin0 -> 36 bytes
-rw-r--r--fuzzers/corpora/packfile/0c395c44e4dd5b67caae8a98a66741e17e8af136bin0 -> 124 bytes
-rw-r--r--fuzzers/corpora/packfile/0cb9120e5ae00b0d660a111ef85fc9194a5f244abin0 -> 27 bytes
-rw-r--r--fuzzers/corpora/packfile/0d44e7156d04cd269fd1219c58c3b79dc8c41d60bin0 -> 20 bytes
-rw-r--r--fuzzers/corpora/packfile/0d77a48bea1dde6e5d391a65456dc0aa3d9cc5e3bin0 -> 15 bytes
-rw-r--r--fuzzers/corpora/packfile/0db25107ff248616cadc75b7819b21d06394cf25bin0 -> 74 bytes
-rw-r--r--fuzzers/corpora/packfile/0debae2db7ef2933f386bac21a2d3bebb473070ebin0 -> 17 bytes
-rw-r--r--fuzzers/corpora/packfile/0e2d48524de33394ca82ea3a43f5f04aac6e86c7bin0 -> 93 bytes
-rw-r--r--fuzzers/corpora/packfile/0e49f6aa78f3b2f6c3fa5d281d5b1052fa9951dcbin0 -> 16 bytes
-rw-r--r--fuzzers/corpora/packfile/0f2982027f0b3b05250267b19e3969f8797e389e1
-rw-r--r--fuzzers/corpora/packfile/11f6ad8ec52a2984abaafd7c3b516503785c20721
-rw-r--r--fuzzers/corpora/packfile/123ca693d81a8cfd99760ff5ca9e152ded878537bin0 -> 33 bytes
-rw-r--r--fuzzers/corpora/packfile/12878ca5643ab15a4a847e74ddd84fb365736af2bin0 -> 83 bytes
-rw-r--r--fuzzers/corpora/packfile/13f292a24a9e79ae911f5d5e1ef7db0112601e64bin0 -> 55 bytes
-rw-r--r--fuzzers/corpora/packfile/13facd9b4b5b4509fee92c7ccc1c82ed90624172bin0 -> 124 bytes
-rw-r--r--fuzzers/corpora/packfile/140092a21903fdc56c98de126725fa6bead98ab1bin0 -> 33 bytes
-rw-r--r--fuzzers/corpora/packfile/1489f923c4dca729178b3e3233458550d8dddf29bin0 -> 2 bytes
-rw-r--r--fuzzers/corpora/packfile/1501a58834f24f95442f190653a50dd67d01e19dbin0 -> 59 bytes
-rw-r--r--fuzzers/corpora/packfile/15eddee57cafb11e927810d62230a6e104de1d5cbin0 -> 19 bytes
-rw-r--r--fuzzers/corpora/packfile/1632aa4b049f1118306485b11c70c499a0200dd5bin0 -> 25 bytes
-rw-r--r--fuzzers/corpora/packfile/18e1cf33b179a5cbaaf0baac8279ec4ed1cbdcf3bin0 -> 238 bytes
-rw-r--r--fuzzers/corpora/packfile/18e768865207e0b90047487b66532b20bc74b1a2bin0 -> 23 bytes
-rw-r--r--fuzzers/corpora/packfile/1940c66b45a3bd5c847330b207fd87aee6e96194bin0 -> 47 bytes
-rw-r--r--fuzzers/corpora/packfile/1966ab31dc80ab75196b0cbf28e3960a0eb3f6c5bin0 -> 18 bytes
-rw-r--r--fuzzers/corpora/packfile/19da91f2603889267dfd77786e07a5b8f067d62a1
-rw-r--r--fuzzers/corpora/packfile/1a72795a3dffdfc999b030d9aab7237dea1e2bc1bin0 -> 27 bytes
-rw-r--r--fuzzers/corpora/packfile/1e29cf67a66f225b338610fbcdf1b8185a8f5b7dbin0 -> 13 bytes
-rw-r--r--fuzzers/corpora/packfile/1eb8977ef8c3be9ee896d785663c762c7e32be28bin0 -> 93 bytes
-rw-r--r--fuzzers/corpora/packfile/1f0837530c1c3d122157f2eaa9c2178dcc3580dfbin0 -> 93 bytes
-rw-r--r--fuzzers/corpora/packfile/1f3c5fd6dc091faa397bce776aa97b457388fdaebin0 -> 17 bytes
-rw-r--r--fuzzers/corpora/packfile/20528983163f834108150a7191600ff94ae2c1d2bin0 -> 33 bytes
-rw-r--r--fuzzers/corpora/packfile/20a725140a8ffbe11bb71c1b83f19452147e5180bin0 -> 51 bytes
-rw-r--r--fuzzers/corpora/packfile/2149aa9e07dda9bbf502e088d8d0a38e8fb94f2e1
-rw-r--r--fuzzers/corpora/packfile/21b664aa8c86aaee4007d9bdbc2d63bf82bd5109bin0 -> 35 bytes
-rw-r--r--fuzzers/corpora/packfile/21b9ec8a7d7ac4d542c9bf7b2e26581cfcfaaab6bin0 -> 18 bytes
-rw-r--r--fuzzers/corpora/packfile/21c07e2affed6b0134d5dc28ea6c4937e691c761bin0 -> 64 bytes
-rw-r--r--fuzzers/corpora/packfile/23841d4076641ebcb4f58d1fd03047528c9d359bbin0 -> 54 bytes
-rw-r--r--fuzzers/corpora/packfile/23b9174c42560de6525b1f103125f599479f95cbbin0 -> 111 bytes
-rw-r--r--fuzzers/corpora/packfile/241cbd6dfb6e53c43c73b62f9384359091dcbf561
-rw-r--r--fuzzers/corpora/packfile/245a2ddea41e6531944933c4420b8c9790ac351bbin0 -> 20 bytes
-rw-r--r--fuzzers/corpora/packfile/2541e340271ea496a392870bcc20d3510287b9e9bin0 -> 146 bytes
-rw-r--r--fuzzers/corpora/packfile/276af22d5bf94344737fb1a5eb5de7d335004493bin0 -> 94 bytes
-rw-r--r--fuzzers/corpora/packfile/27d5482eebd075de44389774fce28c69f45c8a751
-rw-r--r--fuzzers/corpora/packfile/28334bd612cb539de776370995f60c8032215434bin0 -> 338 bytes
-rw-r--r--fuzzers/corpora/packfile/2973e2ac092cba077d7350bfffe1cf2e0644a6e1bin0 -> 111 bytes
-rw-r--r--fuzzers/corpora/packfile/2adcd01e876b12d867c858ffaec38c42c59c36c7bin0 -> 59 bytes
-rw-r--r--fuzzers/corpora/packfile/2b28470644f5d0323643da99c831d82f20a7a74fbin0 -> 124 bytes
-rw-r--r--fuzzers/corpora/packfile/2b86229020ba808df84e16f800dc152254f18f64bin0 -> 19 bytes
-rw-r--r--fuzzers/corpora/packfile/2cc5bf2f780cd85ad93d232890f418625f4d12741
-rw-r--r--fuzzers/corpora/packfile/2d6ae8fa82b656879dd3371d0a6899e88ef34e76bin0 -> 124 bytes
-rw-r--r--fuzzers/corpora/packfile/2e74d24e887678f0681d4c7c010477b8b9697f1a1
-rw-r--r--fuzzers/corpora/packfile/2f436c68a7b0be43aa6d4ad5126ec9401a9f9211bin0 -> 627 bytes
-rw-r--r--fuzzers/corpora/packfile/2fec48b0dcb45b98597bfec12bf0dc650543b3e3bin0 -> 187 bytes
-rw-r--r--fuzzers/corpora/packfile/31bd25636a9807d6024e78b9b3d02fbb1a02835e1
-rw-r--r--fuzzers/corpora/packfile/323c88be36ecc20ff30b21cf417106554042db04bin0 -> 14 bytes
-rw-r--r--fuzzers/corpora/packfile/33b3aa957ca4fb31873033a7f460617f1fe81e32bin0 -> 93 bytes
-rw-r--r--fuzzers/corpora/packfile/34303d14e37c9ddfb0bad130e006fec927e13785bin0 -> 14 bytes
-rw-r--r--fuzzers/corpora/packfile/34dac9466a4a2c15aaeef13a9567f6827ace7748bin0 -> 13 bytes
-rw-r--r--fuzzers/corpora/packfile/356a192b7913b04c54574d18c28d46e6395428ab1
-rw-r--r--fuzzers/corpora/packfile/35bf585248be2c6d3940e15b85f72c4146903097bin0 -> 104 bytes
-rw-r--r--fuzzers/corpora/packfile/3725a1c4431714019827277deac8ec2efeed8f1dbin0 -> 21 bytes
-rw-r--r--fuzzers/corpora/packfile/37a2b7de1fadc9eab2d5fabf5dfe7007c245dbeebin0 -> 112 bytes
-rw-r--r--fuzzers/corpora/packfile/37ab8a0ca81fc62279057401761f7730a5a8f1b2bin0 -> 16 bytes
-rw-r--r--fuzzers/corpora/packfile/38011be20a664dcd2594e712a26c063c2d50efcdbin0 -> 338 bytes
-rw-r--r--fuzzers/corpora/packfile/3838851a5da8239c2ae6cbbe869c81446c720e87bin0 -> 16 bytes
-rw-r--r--fuzzers/corpora/packfile/3921322ac01429b001f88d64c8319088fe49218ebin0 -> 84 bytes
-rw-r--r--fuzzers/corpora/packfile/395df8f7c51f007019cb30201c49e884b46b92fa1
-rw-r--r--fuzzers/corpora/packfile/3e98eb4fd65d3f2c41fa979db0f5678b310e51febin0 -> 46 bytes
-rw-r--r--fuzzers/corpora/packfile/3f9ec359d0cb573cb6d2b2df64c9f4048ea298b8bin0 -> 32 bytes
-rw-r--r--fuzzers/corpora/packfile/4067250457728bf775aa310ef253b223ae2fe4dcbin0 -> 82 bytes
-rw-r--r--fuzzers/corpora/packfile/40818db87e110b29cb864f73265586cc054f5bbbbin0 -> 58 bytes
-rw-r--r--fuzzers/corpora/packfile/418f9fb9ce1d4efdf481ca8fff9dadd09caee9fcbin0 -> 55 bytes
-rw-r--r--fuzzers/corpora/packfile/41ca0ae865b686089b8d99e9d661da291ce51019bin0 -> 93 bytes
-rw-r--r--fuzzers/corpora/packfile/42099b4af021e53fd8fd4e056c2568d7c2e3ffa81
-rw-r--r--fuzzers/corpora/packfile/420ce645ce1c93cee59a06da2159cbbb251e4c01bin0 -> 13 bytes
-rw-r--r--fuzzers/corpora/packfile/4345cb1fa27885a8fbfe7c0c830a592cc76a552b1
-rw-r--r--fuzzers/corpora/packfile/450718a71a93a1b5ff982595432400b0fa876fb6bin0 -> 1779 bytes
-rw-r--r--fuzzers/corpora/packfile/453a312eb77b9d4198ac62faef10ecf3e283120cbin0 -> 34 bytes
-rw-r--r--fuzzers/corpora/packfile/45470317334b614ce4d119c05ed2d6250dbc6061bin0 -> 93 bytes
-rw-r--r--fuzzers/corpora/packfile/45a65193e30784b0124f4fed659eb7e46552c2d01
-rw-r--r--fuzzers/corpora/packfile/45cff3494791ded181e1e3dab1c7a0e40130b57bbin0 -> 37 bytes
-rw-r--r--fuzzers/corpora/packfile/481dedc2855981510024d48828af0fe35a1503ddbin0 -> 36 bytes
-rw-r--r--fuzzers/corpora/packfile/49a6448a722742b1b392f0471542ee0c572c5a9abin0 -> 13 bytes
-rw-r--r--fuzzers/corpora/packfile/4a6e6af93dea13a5720be52b95f2948e0cab4602bin0 -> 60 bytes
-rw-r--r--fuzzers/corpora/packfile/4ac25548f35e06eb9f91b0f15b89db3cb5bcb283bin0 -> 83 bytes
-rw-r--r--fuzzers/corpora/packfile/4b586169f192749a0aa023ad6e4edd2e15d67f53bin0 -> 12 bytes
-rw-r--r--fuzzers/corpora/packfile/4c3c8ec0e25da9342dc87c2e78d3040c381514cebin0 -> 2 bytes
-rw-r--r--fuzzers/corpora/packfile/4d5189cd1411daaa579df34591c6a5946204c9a0bin0 -> 33 bytes
-rw-r--r--fuzzers/corpora/packfile/4d7f1bfa928c0d3399598d562e346c6e23de6a03bin0 -> 14 bytes
-rw-r--r--fuzzers/corpora/packfile/4eee38183d6fce3f42224738be58d0e3975300f4bin0 -> 36 bytes
-rw-r--r--fuzzers/corpora/packfile/4f2e2af611d6567abcf5b6bfc579487ac417a8d4bin0 -> 20 bytes
-rw-r--r--fuzzers/corpora/packfile/4fa04b2c3ac839c36c4a3b51bf882eb99b7cd097bin0 -> 14 bytes
-rw-r--r--fuzzers/corpora/packfile/4fbe10aede9fd9ce2030c6e567a9281e1a5338f4bin0 -> 124 bytes
-rw-r--r--fuzzers/corpora/packfile/5037f4f74273aed9a09122af5f4acc10f42c033abin0 -> 28 bytes
-rw-r--r--fuzzers/corpora/packfile/511993d3c99719e38a6779073019dacd7178ddb91
-rw-r--r--fuzzers/corpora/packfile/520aa436eab6343c3729f51f0f8048e6b87f6aeb1
-rw-r--r--fuzzers/corpora/packfile/521e228f3b62dca81d87d2e7d5476657d7b5e0a9bin0 -> 13 bytes
-rw-r--r--fuzzers/corpora/packfile/52e37dfd77d56769dc8a96388aa26695a8108dacbin0 -> 34 bytes
-rw-r--r--fuzzers/corpora/packfile/5374fb6be0a406cf8d0e95771ecb032254d21305bin0 -> 137 bytes
-rw-r--r--fuzzers/corpora/packfile/53e1d4898c15c8ee3ef5e2fb279d151108725731bin0 -> 100 bytes
-rw-r--r--fuzzers/corpora/packfile/53e61ad37ca92b7f6c0396e5fab1ed8743e73da0bin0 -> 85 bytes
-rw-r--r--fuzzers/corpora/packfile/55df2a59ed6a888ee2f0cdfdcc8582696702de7a1
-rw-r--r--fuzzers/corpora/packfile/56a2020f68c5eb72786ea168cc2a7e8ea34ad9c2bin0 -> 24 bytes
-rw-r--r--fuzzers/corpora/packfile/578678e78b72f8bcb9f414e4129ae5d85a4af914bin0 -> 31 bytes
-rw-r--r--fuzzers/corpora/packfile/5a8bc5597fd0b2b44194ffabce46e2fa94c1ffd7bin0 -> 111 bytes
-rw-r--r--fuzzers/corpora/packfile/5bab61eb53176449e25c2c82f172b82cb13ffb9d1
-rw-r--r--fuzzers/corpora/packfile/5c2dd944dde9e08881bef0894fe7b22a5c9c4b061
-rw-r--r--fuzzers/corpora/packfile/5cb4674f4468d39f061d1df3c95b9c2dca529c54bin0 -> 7 bytes
-rw-r--r--fuzzers/corpora/packfile/60b6fbfe65dc1796a09a734e054223aba8c90260bin0 -> 13 bytes
-rw-r--r--fuzzers/corpora/packfile/611f5b9368427ef823f7ed89ad23667b02a06435bin0 -> 48 bytes
-rw-r--r--fuzzers/corpora/packfile/6214b4afdbfe63400ce428d47a58a2e29f682738bin0 -> 338 bytes
-rw-r--r--fuzzers/corpora/packfile/634b675b80d51b52c3c6fbc73181ed47f61749babin0 -> 98 bytes
-rw-r--r--fuzzers/corpora/packfile/6431f1b31dc492fad89732b7d3e511fa7361985dbin0 -> 136 bytes
-rw-r--r--fuzzers/corpora/packfile/6442fd4bbb7656f142c92050da17b0e81e79fad1bin0 -> 366 bytes
-rw-r--r--fuzzers/corpora/packfile/6486c8cf6bcc2fca60502564924f6b266399df3dbin0 -> 21 bytes
-rw-r--r--fuzzers/corpora/packfile/651c573b6fdd393e97536a47f8b9e65226e29c33bin0 -> 77 bytes
-rw-r--r--fuzzers/corpora/packfile/657fc646e93cb999417f43f0ec77fbad694e3e18bin0 -> 124 bytes
-rw-r--r--fuzzers/corpora/packfile/65cc90263dec0020ceabc727d33aa587e57fc1751
-rw-r--r--fuzzers/corpora/packfile/688934845f22049cb14668832efa33d45013b6b9bin0 -> 2 bytes
-rw-r--r--fuzzers/corpora/packfile/6b0d31c0d563223024da45691584643ac78c96e81
-rw-r--r--fuzzers/corpora/packfile/6b4dc6028a3a684a20dbc427b15a37ea2fd12dd1bin0 -> 43 bytes
-rw-r--r--fuzzers/corpora/packfile/6b7486fc2a47a40eb5a85a5edf53af60d48be7d5bin0 -> 14 bytes
-rw-r--r--fuzzers/corpora/packfile/6bace82ea640ac0a78963c79483faf0faa7fd1681
-rw-r--r--fuzzers/corpora/packfile/6ca38da5f096a5847776e4d50cb63121341fd67cbin0 -> 15 bytes
-rw-r--r--fuzzers/corpora/packfile/6d344a65b9edced36045f94215b6810799789334bin0 -> 13 bytes
-rw-r--r--fuzzers/corpora/packfile/6dd655e8ef0573eb1c41151af924974aa1e9c454bin0 -> 13 bytes
-rw-r--r--fuzzers/corpora/packfile/6e118259c2940fafba0a9ceeef6308e12e881ae1bin0 -> 111 bytes
-rw-r--r--fuzzers/corpora/packfile/6e4b5ef83333606a16a63b579f221f6ffb7b48ee1
-rw-r--r--fuzzers/corpora/packfile/6f47ff60d54c012103a0c28851ffa9eab3002511bin0 -> 59 bytes
-rw-r--r--fuzzers/corpora/packfile/701a765befff451207517d56c3fe8609d059867dbin0 -> 15 bytes
-rw-r--r--fuzzers/corpora/packfile/7050f56d64b28499c89d5430761f18a8a2a933d4bin0 -> 60 bytes
-rw-r--r--fuzzers/corpora/packfile/724fa0194f615e1a0f08184a9f1520123f8e2833bin0 -> 93 bytes
-rw-r--r--fuzzers/corpora/packfile/72c52d0d98717e21dfee45418a046a19198b5d5dbin0 -> 17 bytes
-rw-r--r--fuzzers/corpora/packfile/72cec0949c5743ee1df67b41ece5d6806f9bede6bin0 -> 173 bytes
-rw-r--r--fuzzers/corpora/packfile/72e6bfb7b881befc0b461334411d70ae227a426abin0 -> 22 bytes
-rw-r--r--fuzzers/corpora/packfile/73b74736664ad85828ce1be2e29fb4a68d24402b1
-rw-r--r--fuzzers/corpora/packfile/745bedb79413d20844a8b0e96fbec51b4989c65d1
-rw-r--r--fuzzers/corpora/packfile/748142c17e56d0f0ad9e4d6525b39294d81261d6bin0 -> 59 bytes
-rw-r--r--fuzzers/corpora/packfile/74dfea2e26741a8778fb942d1d60a84d0759d7a01
-rw-r--r--fuzzers/corpora/packfile/767b2efbb7502a2f652a448b471693d32c128677bin0 -> 93 bytes
-rw-r--r--fuzzers/corpora/packfile/78abe558c4277852128d4b91282edcb68f86bdeabin0 -> 48 bytes
-rw-r--r--fuzzers/corpora/packfile/7960246c2db6d39e68dfe93ded358a3acba8f896bin0 -> 18 bytes
-rw-r--r--fuzzers/corpora/packfile/7a4ff814176b55af008ad9580201d5e659242f05bin0 -> 59 bytes
-rw-r--r--fuzzers/corpora/packfile/7a752694fce29ded083fbabbc9ff95f5b92a3d9cbin0 -> 26 bytes
-rw-r--r--fuzzers/corpora/packfile/7a81af3e591ac713f81ea1efe93dcf36157d83761
-rw-r--r--fuzzers/corpora/packfile/7c957a1fd650f9ae0eadc112837ea451a692affcbin0 -> 34 bytes
-rw-r--r--fuzzers/corpora/packfile/7cda4ab6a0daf50f675d5225cbc166c86a8ef95fbin0 -> 29 bytes
-rw-r--r--fuzzers/corpora/packfile/7cf184f4c67ad58283ecb19349720b0cae7568291
-rw-r--r--fuzzers/corpora/packfile/7df1ea8d86d601c3bd39977ea85e5f74c9db6acbbin0 -> 15 bytes
-rw-r--r--fuzzers/corpora/packfile/820ec3e39089d863641a1be6942445db3ff34270bin0 -> 48 bytes
-rw-r--r--fuzzers/corpora/packfile/827704fd978bd02a46268b7396b202a52ad261edbin0 -> 34 bytes
-rw-r--r--fuzzers/corpora/packfile/828acfc1d49a0fdbcd9f238138ff65582c2a9fc8bin0 -> 14 bytes
-rw-r--r--fuzzers/corpora/packfile/8306a2f04a47fe4c95098675ffa25c074ecd89debin0 -> 14 bytes
-rw-r--r--fuzzers/corpora/packfile/8327db1c6a884d8b3e3cefd94cec9eb94bffae0abin0 -> 111 bytes
-rw-r--r--fuzzers/corpora/packfile/847f4e42f8f2730a48d19951d8829621b2e70082bin0 -> 124 bytes
-rw-r--r--fuzzers/corpora/packfile/84a516841ba77a5b4648de2cd0dfcb30ea46dbb41
-rw-r--r--fuzzers/corpora/packfile/8552526f5aba95119c0b95b61cd40386e7a3738bbin0 -> 34 bytes
-rw-r--r--fuzzers/corpora/packfile/8565db62ac64209ff009ac40e7c2d2ac4ae944ebbin0 -> 32 bytes
-rw-r--r--fuzzers/corpora/packfile/859b3346967c5c3c136459e565b402f9a936aa0dbin0 -> 129 bytes
-rw-r--r--fuzzers/corpora/packfile/86a69caf3c5866d78d80da087b1b843cfea5e907bin0 -> 48 bytes
-rw-r--r--fuzzers/corpora/packfile/86e1fb54a04fc18ee482b794ba3b2b306f6515d4bin0 -> 31 bytes
-rw-r--r--fuzzers/corpora/packfile/86f217ee467d31ad9ad2a8c502b91279cd7f1c40bin0 -> 36 bytes
-rw-r--r--fuzzers/corpora/packfile/8768a53e1d4c182907306300f9ca90cfd80183831
-rw-r--r--fuzzers/corpora/packfile/8834a7aac170c494f45aa4da71b9605a52d82435bin0 -> 13 bytes
-rw-r--r--fuzzers/corpora/packfile/883f023f38a031d8a8e8ce2cba6614b9bff5d41fbin0 -> 17 bytes
-rw-r--r--fuzzers/corpora/packfile/88738071086eb04e47b77d1ca28b35ddbfaa0968bin0 -> 96 bytes
-rw-r--r--fuzzers/corpora/packfile/892aef744c87c6ee4ba3dd457c7ca02ba3d359bdbin0 -> 13 bytes
-rw-r--r--fuzzers/corpora/packfile/8afb5c282d23c4055500f88a10b26383c682c900bin0 -> 23 bytes
-rw-r--r--fuzzers/corpora/packfile/8b3dfce4cd7b8942eedb52af0e9ca4caa5c6de61bin0 -> 10 bytes
-rw-r--r--fuzzers/corpora/packfile/8c2cccf751bb5844bea8dc63c22e3f8e4489411ebin0 -> 27 bytes
-rw-r--r--fuzzers/corpora/packfile/8e30894298502ba4d43af98f1ec3088f9b8f29d5bin0 -> 59 bytes
-rw-r--r--fuzzers/corpora/packfile/8eb4d738f7170d2e0594b779f782eb3171c9d421bin0 -> 49 bytes
-rw-r--r--fuzzers/corpora/packfile/8f46a043da3aa5d466ade170e62b0b9f362b4c5bbin0 -> 20 bytes
-rw-r--r--fuzzers/corpora/packfile/9295f39686016bf3abb1d6e9924d6725c1263920bin0 -> 23 bytes
-rw-r--r--fuzzers/corpora/packfile/92fa2c2237724e7ba49e9c59adad8d61ce400bbfbin0 -> 124 bytes
-rw-r--r--fuzzers/corpora/packfile/936548b53e1a1e30cb30747a87203abd4eae78eabin0 -> 15 bytes
-rw-r--r--fuzzers/corpora/packfile/9835ad3ff27939bc1315632d6a22980b377c36e41
-rw-r--r--fuzzers/corpora/packfile/9857740c36a95415fa3be04cdf184db7b41a8b3ebin0 -> 16 bytes
-rw-r--r--fuzzers/corpora/packfile/98c35b9d5e7b430d0d4ef70f642d8e2f3266b6d4bin0 -> 93 bytes
-rw-r--r--fuzzers/corpora/packfile/9929b50ac145c0781a0347be1559764edc6681731
-rw-r--r--fuzzers/corpora/packfile/9bf6a450d87badf2d495c2df37081ea16156915abin0 -> 13 bytes
-rw-r--r--fuzzers/corpora/packfile/9bffb3ff7a4429144305b770162074bbffe39ce9bin0 -> 319 bytes
-rw-r--r--fuzzers/corpora/packfile/9c040d3207196e3aeee0df389170d6e59733ba0fbin0 -> 112 bytes
-rw-r--r--fuzzers/corpora/packfile/9c740d0f3b8875a3b19f1cf1a88d5192a997a68dbin0 -> 62 bytes
-rw-r--r--fuzzers/corpora/packfile/9cf72097400efb70d06179e6b00abb4cdec74e66bin0 -> 27 bytes
-rw-r--r--fuzzers/corpora/packfile/9d36c270ef1f14214742562238dc747242d4756ebin0 -> 15 bytes
-rw-r--r--fuzzers/corpora/packfile/9fb415ccadc8e7b0f38646ec5782d5895111e259bin0 -> 13 bytes
-rw-r--r--fuzzers/corpora/packfile/a13b7fbb454fe3bdebd07a51d466484aa41ee142bin0 -> 59 bytes
-rw-r--r--fuzzers/corpora/packfile/a1a7715c7596c77b892dc6d4debb7c108ca4ef971
-rw-r--r--fuzzers/corpora/packfile/a1ac8b656af02b56aefe6029db36b1af9fb664efbin0 -> 20 bytes
-rw-r--r--fuzzers/corpora/packfile/a343687e2522222c2d49e8cb18d3feda64cf1d66bin0 -> 17 bytes
-rw-r--r--fuzzers/corpora/packfile/a6f57425137e9aa54537f0b3f5364ce165aedb0a1
-rw-r--r--fuzzers/corpora/packfile/a73df4ce29f75cc638a7a2d823fee57d909ab681bin0 -> 59 bytes
-rw-r--r--fuzzers/corpora/packfile/a7ee38bb7be4fc44198cb2685d9601dcf2b9f5691
-rw-r--r--fuzzers/corpora/packfile/a8b9b91157274e617bf4ac5045fc0c6ac97e76f7bin0 -> 111 bytes
-rw-r--r--fuzzers/corpora/packfile/a9c697f383f59a3b0642cd55b88190bce6201baebin0 -> 95 bytes
-rw-r--r--fuzzers/corpora/packfile/ab064cd6847c0fa546bbec4241eb9b095e0e73dabin0 -> 39 bytes
-rw-r--r--fuzzers/corpora/packfile/ab2c64588d3d9dc5c54c48d414e6d46d6a78cfa6bin0 -> 93 bytes
-rw-r--r--fuzzers/corpora/packfile/abe729b06750880778312618dcebb43257ec03e0bin0 -> 15 bytes
-rw-r--r--fuzzers/corpora/packfile/ac1bf5a5fe61e5784f72b364ef1bcddfb0d13716bin0 -> 18 bytes
-rw-r--r--fuzzers/corpora/packfile/ac47b6d3f0e479df3292131535f8e0d99c288de9bin0 -> 37 bytes
-rw-r--r--fuzzers/corpora/packfile/ac9231da4082430afe8f4d40127814c613648d8e1
-rw-r--r--fuzzers/corpora/packfile/ace9ffcaa273c01c0eb60381321e47edf4842332bin0 -> 59 bytes
-rw-r--r--fuzzers/corpora/packfile/ad6ba9b0bc076987efbeb11ce3fc92bc1df69d0abin0 -> 13 bytes
-rw-r--r--fuzzers/corpora/packfile/ae99dcb9b5e1b09aa5df6bb2fada3a3de61268febin0 -> 9 bytes
-rw-r--r--fuzzers/corpora/packfile/aeeacf0499ace69549fe2c76757d4948ba65a10bbin0 -> 59 bytes
-rw-r--r--fuzzers/corpora/packfile/af6614c37604ee5d3f7b00cddca761a8776283b5bin0 -> 27 bytes
-rw-r--r--fuzzers/corpora/packfile/afd44f8c385a922c8caacc1ea5688d324bad5b39bin0 -> 15 bytes
-rw-r--r--fuzzers/corpora/packfile/aff024fe4ab0fece4091de044c58c9ae4233383a1
-rw-r--r--fuzzers/corpora/packfile/b1f86f05d4928c8393fe0f138c0714df3978f0bbbin0 -> 19 bytes
-rw-r--r--fuzzers/corpora/packfile/b452cd4b70f2827e3cbd6d5dd20f678b6e55f813bin0 -> 90 bytes
-rw-r--r--fuzzers/corpora/packfile/b491dbad4c3edc87aa5a7f12b2c9a447a712c20dbin0 -> 20 bytes
-rw-r--r--fuzzers/corpora/packfile/b54664965911c6fe91e18cd01b68a75c8183b5301
-rw-r--r--fuzzers/corpora/packfile/b68542373c05c0ed25231d09955b2c699d37c45b1
-rw-r--r--fuzzers/corpora/packfile/b706e78cf7110a78dfccce991cd4ce22c6fd898abin0 -> 60 bytes
-rw-r--r--fuzzers/corpora/packfile/b8d3910a75ad8a7058f9c3f202f8eb27419137d7bin0 -> 24 bytes
-rw-r--r--fuzzers/corpora/packfile/b93abe6094fb4ebbfa7414fbceb7199ce766075bbin0 -> 12 bytes
-rw-r--r--fuzzers/corpora/packfile/b9a64cc0694f3ac4a3c530c721bbf69026192187bin0 -> 47 bytes
-rw-r--r--fuzzers/corpora/packfile/b9e5319eca8fbc26e5c322e0b151ed8ed60628d1bin0 -> 25 bytes
-rw-r--r--fuzzers/corpora/packfile/ba390745a04c5394601f7aa73fe795097b814d1abin0 -> 34 bytes
-rw-r--r--fuzzers/corpora/packfile/bb7d065b776833337d3e1a3071de4d5d2759d78b1
-rw-r--r--fuzzers/corpora/packfile/bb99cf0bb3e5d75d59300e6ca9cb1f67ce315e3abin0 -> 33 bytes
-rw-r--r--fuzzers/corpora/packfile/bd9722d91e0615cbdae3cee3476ec6181fbad98dbin0 -> 14 bytes
-rw-r--r--fuzzers/corpora/packfile/bf8b4530d8d246dd74ac53a13471bba17941dff71
-rw-r--r--fuzzers/corpora/packfile/bffc4698ad4aaddd977fe857da20858aa6654263bin0 -> 34 bytes
-rw-r--r--fuzzers/corpora/packfile/c0ea828d8f9c4a2c0fc6253908cd283f6c7994a1bin0 -> 55 bytes
-rw-r--r--fuzzers/corpora/packfile/c151b760696d665265187501c51f38cd845036341
-rw-r--r--fuzzers/corpora/packfile/c16f90096603258174790bc85f076413dad0e228bin0 -> 81 bytes
-rw-r--r--fuzzers/corpora/packfile/c20fc8fb8f1d44050c281089191b8eac2dc9444cbin0 -> 18 bytes
-rw-r--r--fuzzers/corpora/packfile/c2143b1a0db17957bec1b41bb2e5f75aa135981e1
-rw-r--r--fuzzers/corpora/packfile/c22c3fba53bb2c5579b47852fa9ec54a88c03472bin0 -> 72 bytes
-rw-r--r--fuzzers/corpora/packfile/c297564cff1bb4f7933221050cfcffa36c59f691bin0 -> 33 bytes
-rw-r--r--fuzzers/corpora/packfile/c2c4da76233acd3efe08eaebb7ae8dc9b3036527bin0 -> 18 bytes
-rw-r--r--fuzzers/corpora/packfile/c3d47118536d19a8d1a601978510cc24344aa8dfbin0 -> 111 bytes
-rw-r--r--fuzzers/corpora/packfile/c4cbb032db94c57061003a85d30bdf4117979b1ebin0 -> 338 bytes
-rw-r--r--fuzzers/corpora/packfile/c7090127a03c0e7230c11a649e4f98fcb4ca2b75bin0 -> 108 bytes
-rw-r--r--fuzzers/corpora/packfile/c8b839665bd381ff7d006b1b08c35f94f1818556bin0 -> 19 bytes
-rw-r--r--fuzzers/corpora/packfile/ca8c7c16d1d6b60e951dcfb558cc97e14231c750bin0 -> 326 bytes
-rw-r--r--fuzzers/corpora/packfile/cb46c744c83541a0900e1e61780c18d43031a08b1
-rw-r--r--fuzzers/corpora/packfile/cbf1e454dc7ac878bd23e3dfd0b6a28a50b2155dbin0 -> 13 bytes
-rw-r--r--fuzzers/corpora/packfile/cbfb8cae82ddd82c04996f474fdb4f1b80dcb6dbbin0 -> 124 bytes
-rw-r--r--fuzzers/corpora/packfile/cf74f755c004ca634818f8ba44c99fffbaa950a1bin0 -> 37 bytes
-rw-r--r--fuzzers/corpora/packfile/d07e4bc786c88b8d2304f84c7db2098666f822c01
-rw-r--r--fuzzers/corpora/packfile/d17ab0db9edea68e8f9f51f471decae84b192a1abin0 -> 13 bytes
-rw-r--r--fuzzers/corpora/packfile/d1854cae891ec7b29161ccaf79a24b00c274bdaa1
-rw-r--r--fuzzers/corpora/packfile/d22aac18f8b435fc34566fe0d3f42464aec9458cbin0 -> 59 bytes
-rw-r--r--fuzzers/corpora/packfile/d446a50788c32053358495358696f9d595358bcfbin0 -> 124 bytes
-rw-r--r--fuzzers/corpora/packfile/d461cbcff85c87b0068f0e9c15d2056197cdfa52bin0 -> 29 bytes
-rw-r--r--fuzzers/corpora/packfile/d54709a1b46002c81f57da533379e57f00afe942bin0 -> 124 bytes
-rw-r--r--fuzzers/corpora/packfile/d567007f84b83e82df7069838bf8b6c5826b18a8bin0 -> 200 bytes
-rw-r--r--fuzzers/corpora/packfile/d5e60b9f94126a9ec865fda83feb6835d294b76bbin0 -> 44 bytes
-rw-r--r--fuzzers/corpora/packfile/d81092a4f3607ddbba85862facf2285459696078bin0 -> 62 bytes
-rw-r--r--fuzzers/corpora/packfile/d898eb860ceac044950605db88429e029ea278efbin0 -> 53 bytes
-rw-r--r--fuzzers/corpora/packfile/d8fc60ccdd8f555c1858b9f0820f263e3d2b58ec1
-rw-r--r--fuzzers/corpora/packfile/d9b69c63cdc0c1622f2fab84d1307f9e0c0fa3b9bin0 -> 48 bytes
-rw-r--r--fuzzers/corpora/packfile/db1bb4b7348d387623dcaf0a743d0b11fa18409fbin0 -> 15 bytes
-rw-r--r--fuzzers/corpora/packfile/db291360a195c79ae504a3dfb2cd0f71cbc11902bin0 -> 22 bytes
-rw-r--r--fuzzers/corpora/packfile/dc98359b3ef2ced9c3d07636c89d475a564c39d9bin0 -> 16 bytes
-rw-r--r--fuzzers/corpora/packfile/dccc5642917b20b4dd64d3e44b71d08da30445e9bin0 -> 16 bytes
-rw-r--r--fuzzers/corpora/packfile/dd79c8cfb8beeacd0460429944b4ecbe95a315611
-rw-r--r--fuzzers/corpora/packfile/de9550264c4e2dbef14e1281ff3693f2d19dc1c9bin0 -> 18 bytes
-rw-r--r--fuzzers/corpora/packfile/df8b4d163e9ed75634eb56467343bde73b13263ebin0 -> 21 bytes
-rw-r--r--fuzzers/corpora/packfile/e0184adedf913b076626646d3f52c3b49c39ad6d1
-rw-r--r--fuzzers/corpora/packfile/e0905bac594c818b9cfa909269114977c4d6d1b2bin0 -> 38 bytes
-rw-r--r--fuzzers/corpora/packfile/e0bcb16cd6b42128201e1b6454323175a7e412f0bin0 -> 111 bytes
-rw-r--r--fuzzers/corpora/packfile/e1ac9563c33f4f31b3e147b9d2fef80fca550948bin0 -> 16 bytes
-rw-r--r--fuzzers/corpora/packfile/e230c91352f1b07f6f34da803d07e75c06897b30bin0 -> 2 bytes
-rw-r--r--fuzzers/corpora/packfile/e26b3bacbfd6603d021d4ddadbac94b7b7aa00341
-rw-r--r--fuzzers/corpora/packfile/e2a6f8dc3dc5d6c859f19d6e0fa64745201df0a6bin0 -> 9 bytes
-rw-r--r--fuzzers/corpora/packfile/e2ba004118345660b379df5147bfa7a39d884dbcbin0 -> 27 bytes
-rw-r--r--fuzzers/corpora/packfile/e45aaf139d726366a18dce9e4854ee6c82901677bin0 -> 15 bytes
-rw-r--r--fuzzers/corpora/packfile/e4b3ab7e8c18de815fc8bd6ebfd5d52cf1924a8ebin0 -> 80 bytes
-rw-r--r--fuzzers/corpora/packfile/e6818b96c50bb749911248959af81a9c412a0223bin0 -> 26 bytes
-rw-r--r--fuzzers/corpora/packfile/e69f20e9f683920d3fb4329abd951e878b1f93721
-rw-r--r--fuzzers/corpora/packfile/e6eb439fef7d5461bc3552aa7c064d24e44c5f32bin0 -> 16 bytes
-rw-r--r--fuzzers/corpora/packfile/e9d9930dc3fea44fbc7acb0d1ef4bd867f1c902bbin0 -> 16 bytes
-rw-r--r--fuzzers/corpora/packfile/eb05b6ad73fb1f69ef750d0b9cb6c606ab9d949fbin0 -> 13 bytes
-rw-r--r--fuzzers/corpora/packfile/eb0814ae767e5f28b87c998b0f44dcf80814db1bbin0 -> 111 bytes
-rw-r--r--fuzzers/corpora/packfile/ebbd9763912dd557d08abd1373c867a4b56e6a41bin0 -> 38 bytes
-rw-r--r--fuzzers/corpora/packfile/ebcdcb7effcc3f06e0d503638ac621de877fc5541
-rw-r--r--fuzzers/corpora/packfile/eddccafb2716adafb9ad48203f0621bb00ebc73fbin0 -> 111 bytes
-rw-r--r--fuzzers/corpora/packfile/edfbf20c83d3cec45470105581f7dc8b7e0889dabin0 -> 34 bytes
-rw-r--r--fuzzers/corpora/packfile/f03218467b1c74e465cebb3b8092e21a5122f31dbin0 -> 53 bytes
-rw-r--r--fuzzers/corpora/packfile/f28600befd899a94bed8e62853e90655d614f439bin0 -> 13 bytes
-rw-r--r--fuzzers/corpora/packfile/f3b15185b7a9a10716752d58434fe656d839092ebin0 -> 26 bytes
-rw-r--r--fuzzers/corpora/packfile/f436ed7933482610e08e18b40e9eec102b63b7d4bin0 -> 17 bytes
-rw-r--r--fuzzers/corpora/packfile/f55ea5b7c1cf5400aae56d7faf65a42320d0323abin0 -> 14 bytes
-rw-r--r--fuzzers/corpora/packfile/f5eeab2d009aa4984378df6bfdd89366b7ecbb32bin0 -> 93 bytes
-rw-r--r--fuzzers/corpora/packfile/f6250c8b3cc0510e0f8f621100be83f018e2d234bin0 -> 38 bytes
-rw-r--r--fuzzers/corpora/packfile/f7168410c7158ff7331698930937f9cdc54f4d8abin0 -> 93 bytes
-rw-r--r--fuzzers/corpora/packfile/f91847640af285c1b8a6df27f5c50686ed0deb70bin0 -> 20 bytes
-rw-r--r--fuzzers/corpora/packfile/fa58a6b2d3286a136a43afeeaac589d2dde0a2a6bin0 -> 111 bytes
-rw-r--r--fuzzers/corpora/packfile/fe3667be5fd2ffdd553ae04a534a2e9ce5445188bin0 -> 34 bytes
-rw-r--r--fuzzers/corpora/packfile/ff21cad92ddd105224408fa696e91080a8cf98fbbin0 -> 38 bytes
-rw-r--r--fuzzers/corpora/packfile/ff9804ac04790bd58cdd124526c00b920469b812bin0 -> 15 bytes
-rw-r--r--fuzzers/corpora/packfile/ffc54ca808e7666f250133ad0ae2185ad688a8261
-rw-r--r--fuzzers/download_refs_fuzzer.c211
-rw-r--r--fuzzers/packfile_fuzzer.c122
-rw-r--r--fuzzers/standalone_driver.c70
325 files changed, 629 insertions, 29 deletions
diff --git a/.gitignore b/.gitignore
index 1ef1ec730..5991a41b9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -31,3 +31,5 @@ msvc/Release/
.*.swp
tags
mkmf.log
+*.profdata
+*.profraw
diff --git a/CMakeLists.txt b/CMakeLists.txt
index fd846666f..b71d90385 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -38,33 +38,36 @@ INCLUDE(EnableWarnings)
# Build options
#
-OPTION( SONAME "Set the (SO)VERSION of the target" ON )
-OPTION( BUILD_SHARED_LIBS "Build Shared Library (OFF for Static)" ON )
-OPTION( THREADSAFE "Build libgit2 as threadsafe" ON )
-OPTION( BUILD_CLAR "Build Tests using the Clar suite" ON )
-OPTION( BUILD_EXAMPLES "Build library usage example apps" OFF )
-OPTION( TAGS "Generate tags" OFF )
-OPTION( PROFILE "Generate profiling information" OFF )
-OPTION( ENABLE_TRACE "Enables tracing support" OFF )
-OPTION( LIBGIT2_FILENAME "Name of the produced binary" OFF )
-
-SET(SHA1_BACKEND "CollisionDetection" CACHE STRING "Backend to use for SHA1. One of Generic, OpenSSL, Win32, CommonCrypto, mbedTLS, CollisionDetection. ")
-OPTION( USE_SSH "Link with libssh to enable SSH support" ON )
-OPTION( USE_HTTPS "Enable HTTPS support. Can be set to a specific backend" ON )
-OPTION( USE_GSSAPI "Link with libgssapi for SPNEGO auth" OFF )
-OPTION( VALGRIND "Configure build for valgrind" OFF )
-OPTION( CURL "Use curl for HTTP if available" ON)
-OPTION( USE_EXT_HTTP_PARSER "Use system HTTP_Parser if available" ON)
-OPTION( DEBUG_POOL "Enable debug pool allocator" OFF )
-OPTION( ENABLE_WERROR "Enable compilation with -Werror" OFF )
-OPTION( USE_BUNDLED_ZLIB "Use the bundled version of zlib" OFF )
+OPTION(SONAME "Set the (SO)VERSION of the target" ON)
+OPTION(BUILD_SHARED_LIBS "Build Shared Library (OFF for Static)" ON)
+OPTION(THREADSAFE "Build libgit2 as threadsafe" ON)
+OPTION(BUILD_CLAR "Build Tests using the Clar suite" ON)
+OPTION(BUILD_EXAMPLES "Build library usage example apps" OFF)
+OPTION(BUILD_FUZZERS "Build the fuzz targets" OFF)
+OPTION(TAGS "Generate tags" OFF)
+OPTION(PROFILE "Generate profiling information" OFF)
+OPTION(ENABLE_TRACE "Enables tracing support" OFF)
+OPTION(LIBGIT2_FILENAME "Name of the produced binary" OFF)
+
+ SET(SHA1_BACKEND "CollisionDetection" CACHE STRING
+ "Backend to use for SHA1. One of Generic, OpenSSL, Win32, CommonCrypto, mbedTLS, CollisionDetection.")
+OPTION(USE_SSH "Link with libssh to enable SSH support" ON)
+OPTION(USE_HTTPS "Enable HTTPS support. Can be set to a specific backend" ON)
+OPTION(USE_GSSAPI "Link with libgssapi for SPNEGO auth" OFF)
+OPTION(USE_STANDALONE_FUZZERS "Enable standalone fuzzers (compatible with gcc)" OFF)
+OPTION(VALGRIND "Configure build for valgrind" OFF)
+OPTION(CURL "Use curl for HTTP if available" ON)
+OPTION(USE_EXT_HTTP_PARSER "Use system HTTP_Parser if available" ON)
+OPTION(DEBUG_POOL "Enable debug pool allocator" OFF)
+OPTION(ENABLE_WERROR "Enable compilation with -Werror" OFF)
+OPTION(USE_BUNDLED_ZLIB "Use the bundled version of zlib" OFF)
IF (UNIX AND NOT APPLE)
- OPTION( ENABLE_REPRODUCIBLE_BUILDS "Enable reproducible builds" OFF )
+ OPTION(ENABLE_REPRODUCIBLE_BUILDS "Enable reproducible builds" OFF)
ENDIF()
IF (APPLE)
- OPTION( USE_ICONV "Link with and use iconv library" ON )
+ OPTION(USE_ICONV "Link with and use iconv library" ON)
ENDIF()
IF(MSVC)
@@ -74,27 +77,27 @@ IF(MSVC)
#
# If you are writing a CLR program and want to link to libgit2, you'll want
# to turn this on by invoking CMake with the "-DSTDCALL=ON" argument.
- OPTION( STDCALL "Build libgit2 with the __stdcall convention" OFF )
+ OPTION(STDCALL "Build libgit2 with the __stdcall convention" OFF)
# This option must match the settings used in your program, in particular if you
# are linking statically
- OPTION( STATIC_CRT "Link the static CRT libraries" ON )
+ OPTION(STATIC_CRT "Link the static CRT libraries" ON)
# If you want to embed a copy of libssh2 into libgit2, pass a
# path to libssh2
- OPTION( EMBED_SSH_PATH "Path to libssh2 to embed (Windows)" OFF )
+ OPTION(EMBED_SSH_PATH "Path to libssh2 to embed (Windows)" OFF)
ENDIF()
IF(WIN32)
# By default, libgit2 is built with WinHTTP. To use the built-in
# HTTP transport, invoke CMake with the "-DWINHTTP=OFF" argument.
- OPTION( WINHTTP "Use Win32 WinHTTP routines" ON )
+ OPTION(WINHTTP "Use Win32 WinHTTP routines" ON)
ENDIF()
IF(MSVC)
# Enable MSVC CRTDBG memory leak reporting when in debug mode.
- OPTION(MSVC_CRTDBG "Enable CRTDBG memory leak reporting" OFF)
+ OPTION(MSVC_CRTDBG "Enable CRTDBG memory leak reporting" OFF)
ENDIF()
FILE(STRINGS "${libgit2_SOURCE_DIR}/include/git2/version.h" GIT2_HEADER REGEX "^#define LIBGIT2_VERSION \"[^\"]*\"$")
@@ -245,6 +248,14 @@ ELSE()
# that uses CMAKE_CONFIGURATION_TYPES and not CMAKE_BUILD_TYPE
ENDIF()
+IF(BUILD_FUZZERS AND NOT USE_STANDALONE_FUZZERS)
+ # The actual sanitizer link target will be added when linking the fuzz
+ # targets.
+ SET(CMAKE_REQUIRED_FLAGS "-fsanitize=fuzzer-no-link")
+ ADD_C_FLAG(-fsanitize=fuzzer-no-link)
+ UNSET(CMAKE_REQUIRED_FLAGS)
+ENDIF ()
+
ADD_SUBDIRECTORY(src)
# Tests
@@ -282,6 +293,18 @@ IF (BUILD_EXAMPLES)
ADD_SUBDIRECTORY(examples)
ENDIF ()
+IF(BUILD_FUZZERS)
+ IF(NOT USE_STANDALONE_FUZZERS)
+ IF(BUILD_EXAMPLES)
+ MESSAGE(FATAL_ERROR "Cannot build the fuzzer targets and the examples together")
+ ENDIF()
+ IF(BUILD_CLAR)
+ MESSAGE(FATAL_ERROR "Cannot build the fuzzer targets and the tests together")
+ ENDIF()
+ ENDIF()
+ ADD_SUBDIRECTORY(fuzzers)
+ENDIF()
+
IF(CMAKE_VERSION VERSION_GREATER 3)
FEATURE_SUMMARY(WHAT ENABLED_FEATURES DESCRIPTION "Enabled features:")
FEATURE_SUMMARY(WHAT DISABLED_FEATURES DESCRIPTION "Disabled features:")
diff --git a/ci/build.sh b/ci/build.sh
index a1deab3f2..0dd8f6772 100755
--- a/ci/build.sh
+++ b/ci/build.sh
@@ -29,7 +29,7 @@ echo "## Configuring build environment"
echo "##############################################################################"
echo cmake ${SOURCE_DIR} -DBUILD_EXAMPLES=ON ${CMAKE_OPTIONS}
-cmake ${SOURCE_DIR} -DBUILD_EXAMPLES=ON ${CMAKE_OPTIONS}
+cmake ${SOURCE_DIR} -DBUILD_EXAMPLES=ON -DBUILD_FUZZERS=ON -DUSE_STANDALONE_FUZZERS=ON ${CMAKE_OPTIONS}
echo ""
echo "##############################################################################"
diff --git a/ci/test.sh b/ci/test.sh
index 28f76029a..a9a853720 100755
--- a/ci/test.sh
+++ b/ci/test.sh
@@ -184,6 +184,17 @@ if [ -z "$SKIP_SSH_TESTS" ]; then
unset GITTEST_REMOTE_SSH_FINGERPRINT
fi
+if [ -z "$SKIP_FUZZERS" ]; then
+ echo ""
+ echo "##############################################################################"
+ echo "## Running fuzzers"
+ echo "##############################################################################"
+
+ for fuzzer in fuzzers/*_fuzzer; do
+ "${fuzzer}" "${SOURCE_DIR}/fuzzers/corpora/$(basename "${fuzzer%_fuzzer}")" || die $?
+ done
+fi
+
echo "Success."
cleanup
exit 0
diff --git a/cmake/Modules/AddCFlagIfSupported.cmake b/cmake/Modules/AddCFlagIfSupported.cmake
index 67fc89510..1d6181cac 100644
--- a/cmake/Modules/AddCFlagIfSupported.cmake
+++ b/cmake/Modules/AddCFlagIfSupported.cmake
@@ -5,9 +5,21 @@
INCLUDE(CheckCCompilerFlag)
+MACRO(ADD_C_FLAG _FLAG)
+ STRING(TOUPPER ${_FLAG} UPCASE)
+ STRING(REGEX REPLACE "^-" "" UPCASE_PRETTY ${UPCASE})
+ CHECK_C_COMPILER_FLAG(${_FLAG} IS_${UPCASE_PRETTY}_SUPPORTED)
+
+ IF(IS_${UPCASE_PRETTY}_SUPPORTED)
+ SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${_FLAG}")
+ ELSE()
+ MESSAGE(FATAL_ERROR "Required flag ${_FLAG} is not supported")
+ ENDIF()
+ENDMACRO()
+
MACRO(ADD_C_FLAG_IF_SUPPORTED _FLAG)
STRING(TOUPPER ${_FLAG} UPCASE)
- STRING(REGEX REPLACE "^-" "" UPCASE_PRETTY ${UPCASE})
+ STRING(REGEX REPLACE "^-" "" UPCASE_PRETTY ${UPCASE})
CHECK_C_COMPILER_FLAG(${_FLAG} IS_${UPCASE_PRETTY}_SUPPORTED)
IF(IS_${UPCASE_PRETTY}_SUPPORTED)
diff --git a/docs/fuzzing.md b/docs/fuzzing.md
new file mode 100644
index 000000000..cd825766b
--- /dev/null
+++ b/docs/fuzzing.md
@@ -0,0 +1,71 @@
+# Fuzzing
+
+libgit2 is currently using [libFuzzer](https://libfuzzer.info) to perform
+automated fuzz testing. libFuzzer only works with clang.
+
+## Prerequisites** for building fuzz targets:
+
+1. All the prerequisites for [building libgit2](https://github.com/libgit2/libgit2).
+2. A recent version of clang. 6.0 is preferred. [pre-build Debian/Ubuntu
+ packages](https://github.com/libgit2/libgit2)
+
+## Build
+
+1. Create a build directory beneath the libgit2 source directory, and change
+ into it: `mkdir build && cd build`
+2. Choose one sanitizers to add. The currently supported sanitizers are
+ [`address`](https://clang.llvm.org/docs/AddressSanitizer.html),
+ [`undefined`](https://clang.llvm.org/docs/UndefinedBehaviorSanitizer.html),
+ and [`leak`/`address,leak`](https://clang.llvm.org/docs/LeakSanitizer.html).
+3. Create the cmake build environment and configure the build with the
+ sanitizer chosen: `CC=/usr/bin/clang-6.0 CFLAGS="-fsanitize=address" cmake
+ -DBUILD_CLAR=OFF -DBUILD_FUZZERS=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo ..`.
+ Note that building the fuzzer targets is incompatible with the
+ tests and examples.
+4. Build libgit2: `cmake --build .`
+5. Exit the cmake build environment: `cd ..`
+
+## Run the fuzz targets
+
+1. `ASAN_SYMBOLIZER_PATH=/usr/bin/llvm-symbolize-6.0
+ LSAN_OPTIONS=allocator_may_return_null=1
+ ASAN_OPTIONS=allocator_may_return_null=1 ./build/fuzz/fuzz_packfile_raw
+ fuzz/corpora/fuzz_packfile_raw/`
+
+The `LSAN_OPTIONS` and `ASAN_OPTIONS` are there to allow `malloc(3)` to return
+`NULL`. The `LLVM_PROFILE_FILE` is there to override the path where libFuzzer
+will write the coverage report.
+
+## Get coverage
+
+In order to get coverage information, you need to add the "-fcoverage-mapping"
+and "-fprofile-instr-generate CFLAGS, and then run the fuzz target with
+`-runs=0`. That will produce a file called `default.profraw` (this behavior can
+be overridden by setting the `LLVM_PROFILE_FILE="yourfile.profraw"` environment
+variable).
+
+1. `llvm-profdata-6.0 merge -sparse default.profraw -o
+ fuzz_packfile_raw.profdata` transforms the data from a sparse representation
+ into a format that can be used by the other tools.
+2. `llvm-cov-6.0 report ./build/fuzz/fuzz_packfile_raw
+ -instr-profile=fuzz_packfile_raw.profdata` shows a high-level per-file
+ coverage report.
+3. `llvm-cov-6.0 show ./build/fuzz/fuzz_packfile_raw
+ -instr-profile=fuzz_packfile_raw.profdata [source file]` shows a line-by-line
+ coverage analysis of all the codebase (or a single source file).
+
+## Standalone mode
+
+In order to ensure that there are no regresions, each fuzzer target can be run
+in a standalone mode. This can be done by passing `-DUSE_STANDALONE_FUZZERS=ON`.
+This makes it compatible with gcc. This does not use the fuzzing engine, but
+just invokes every file in the chosen corpus.
+
+In order to get full coverage, though, you might want to also enable one of the
+sanitizers. You might need a recent version of clang to get full support.
+
+## References
+
+* [libFuzzer](https://llvm.org/docs/LibFuzzer.html) documentation.
+* [Source-based Code
+ Coverage](https://clang.llvm.org/docs/SourceBasedCodeCoverage.html).
diff --git a/fuzzers/CMakeLists.txt b/fuzzers/CMakeLists.txt
new file mode 100644
index 000000000..ea0612322
--- /dev/null
+++ b/fuzzers/CMakeLists.txt
@@ -0,0 +1,18 @@
+LINK_DIRECTORIES(${LIBGIT2_LIBDIRS})
+INCLUDE_DIRECTORIES(${LIBGIT2_INCLUDES})
+
+IF(BUILD_FUZZERS AND NOT USE_STANDALONE_FUZZERS)
+ ADD_C_FLAG(-fsanitize=fuzzer)
+ENDIF ()
+
+FILE(GLOB SRC_FUZZ RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *_fuzzer.c)
+FOREACH(fuzz_target_src ${SRC_FUZZ})
+ STRING(REPLACE ".c" "" fuzz_target_name ${fuzz_target_src})
+ SET(${fuzz_target_name}_SOURCES ${fuzz_target_src} ${LIBGIT2_OBJECTS})
+ IF(USE_STANDALONE_FUZZERS)
+ LIST(APPEND ${fuzz_target_name}_SOURCES "standalone_driver.c")
+ ENDIF()
+ ADD_EXECUTABLE(${fuzz_target_name} ${${fuzz_target_name}_SOURCES})
+ SET_TARGET_PROPERTIES(${fuzz_target_name} PROPERTIES C_STANDARD 90)
+ TARGET_LINK_LIBRARIES(${fuzz_target_name} ${LIBGIT2_LIBS})
+ENDFOREACH()
diff --git a/fuzzers/corpora/download_refs/clone.dat b/fuzzers/corpora/download_refs/clone.dat
new file mode 100644
index 000000000..f3e56b06b
--- /dev/null
+++ b/fuzzers/corpora/download_refs/clone.dat
Binary files differ
diff --git a/fuzzers/corpora/packfile/004bd06c91c0dc8ab7e963f4b5e87be00292911e b/fuzzers/corpora/packfile/004bd06c91c0dc8ab7e963f4b5e87be00292911e
new file mode 100644
index 000000000..53c964260
--- /dev/null
+++ b/fuzzers/corpora/packfile/004bd06c91c0dc8ab7e963f4b5e87be00292911e
@@ -0,0 +1 @@
+ÐPACK \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/00b67414c7b17916b3bd0a3d02284937fa0c4378 b/fuzzers/corpora/packfile/00b67414c7b17916b3bd0a3d02284937fa0c4378
new file mode 100644
index 000000000..838a00747
--- /dev/null
+++ b/fuzzers/corpora/packfile/00b67414c7b17916b3bd0a3d02284937fa0c4378
Binary files differ
diff --git a/fuzzers/corpora/packfile/02eaeb43f0ec7dbfd91bd75e7ddcc7fd590dbc77 b/fuzzers/corpora/packfile/02eaeb43f0ec7dbfd91bd75e7ddcc7fd590dbc77
new file mode 100644
index 000000000..48fe2b3d6
--- /dev/null
+++ b/fuzzers/corpora/packfile/02eaeb43f0ec7dbfd91bd75e7ddcc7fd590dbc77
Binary files differ
diff --git a/fuzzers/corpora/packfile/02f4286569be24124d8ab209733b7492f7560310 b/fuzzers/corpora/packfile/02f4286569be24124d8ab209733b7492f7560310
new file mode 100644
index 000000000..3944cd0cb
--- /dev/null
+++ b/fuzzers/corpora/packfile/02f4286569be24124d8ab209733b7492f7560310
Binary files differ
diff --git a/fuzzers/corpora/packfile/037ba5f9d6d695aa4739810f8bea6e795c1d7614 b/fuzzers/corpora/packfile/037ba5f9d6d695aa4739810f8bea6e795c1d7614
new file mode 100644
index 000000000..f4ea551b7
--- /dev/null
+++ b/fuzzers/corpora/packfile/037ba5f9d6d695aa4739810f8bea6e795c1d7614
Binary files differ
diff --git a/fuzzers/corpora/packfile/038e06289ac876f109fc12ca4b8284497ca26821 b/fuzzers/corpora/packfile/038e06289ac876f109fc12ca4b8284497ca26821
new file mode 100644
index 000000000..24923c4ee
--- /dev/null
+++ b/fuzzers/corpora/packfile/038e06289ac876f109fc12ca4b8284497ca26821
Binary files differ
diff --git a/fuzzers/corpora/packfile/042dc4512fa3d391c5170cf3aa61e6a638f84342 b/fuzzers/corpora/packfile/042dc4512fa3d391c5170cf3aa61e6a638f84342
new file mode 100644
index 000000000..597a6db29
--- /dev/null
+++ b/fuzzers/corpora/packfile/042dc4512fa3d391c5170cf3aa61e6a638f84342
@@ -0,0 +1 @@
+i \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/044bf19babf3f9cde07adbfa2a45c7508538cbe8 b/fuzzers/corpora/packfile/044bf19babf3f9cde07adbfa2a45c7508538cbe8
new file mode 100644
index 000000000..73a401373
--- /dev/null
+++ b/fuzzers/corpora/packfile/044bf19babf3f9cde07adbfa2a45c7508538cbe8
Binary files differ
diff --git a/fuzzers/corpora/packfile/044e12ea43bee3c4befe27ba4687bee98d505fd7 b/fuzzers/corpora/packfile/044e12ea43bee3c4befe27ba4687bee98d505fd7
new file mode 100644
index 000000000..1e129661e
--- /dev/null
+++ b/fuzzers/corpora/packfile/044e12ea43bee3c4befe27ba4687bee98d505fd7
Binary files differ
diff --git a/fuzzers/corpora/packfile/061fb208431db793bbd3645b7a16058a1e2a2412 b/fuzzers/corpora/packfile/061fb208431db793bbd3645b7a16058a1e2a2412
new file mode 100644
index 000000000..12183abc9
--- /dev/null
+++ b/fuzzers/corpora/packfile/061fb208431db793bbd3645b7a16058a1e2a2412
@@ -0,0 +1 @@
+º \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/06576556d1ad802f247cad11ae748be47b70cd9c b/fuzzers/corpora/packfile/06576556d1ad802f247cad11ae748be47b70cd9c
new file mode 100644
index 000000000..ac044e5e4
--- /dev/null
+++ b/fuzzers/corpora/packfile/06576556d1ad802f247cad11ae748be47b70cd9c
@@ -0,0 +1 @@
+R \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/06ceea0c98756d302c302410fffe0dc54a055486 b/fuzzers/corpora/packfile/06ceea0c98756d302c302410fffe0dc54a055486
new file mode 100644
index 000000000..add37f9a3
--- /dev/null
+++ b/fuzzers/corpora/packfile/06ceea0c98756d302c302410fffe0dc54a055486
Binary files differ
diff --git a/fuzzers/corpora/packfile/071e65ac0bf08f2424a89a4a499004c1bb9f3f6c b/fuzzers/corpora/packfile/071e65ac0bf08f2424a89a4a499004c1bb9f3f6c
new file mode 100644
index 000000000..748750ce6
--- /dev/null
+++ b/fuzzers/corpora/packfile/071e65ac0bf08f2424a89a4a499004c1bb9f3f6c
Binary files differ
diff --git a/fuzzers/corpora/packfile/0739ff2f064568a4d775c8061958e66c419dbea0 b/fuzzers/corpora/packfile/0739ff2f064568a4d775c8061958e66c419dbea0
new file mode 100644
index 000000000..aed5f1686
--- /dev/null
+++ b/fuzzers/corpora/packfile/0739ff2f064568a4d775c8061958e66c419dbea0
Binary files differ
diff --git a/fuzzers/corpora/packfile/077760469bf8392342d09329c732b98d24be2c30 b/fuzzers/corpora/packfile/077760469bf8392342d09329c732b98d24be2c30
new file mode 100644
index 000000000..c9553bc99
--- /dev/null
+++ b/fuzzers/corpora/packfile/077760469bf8392342d09329c732b98d24be2c30
Binary files differ
diff --git a/fuzzers/corpora/packfile/08534f33c201a45017b502e90a800f1b708ebcb3 b/fuzzers/corpora/packfile/08534f33c201a45017b502e90a800f1b708ebcb3
new file mode 100644
index 000000000..b7d5379f9
--- /dev/null
+++ b/fuzzers/corpora/packfile/08534f33c201a45017b502e90a800f1b708ebcb3
@@ -0,0 +1 @@
+\ \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/09e9046a7d6125cf2915a326a1504dd75d0543b5 b/fuzzers/corpora/packfile/09e9046a7d6125cf2915a326a1504dd75d0543b5
new file mode 100644
index 000000000..86d7321ad
--- /dev/null
+++ b/fuzzers/corpora/packfile/09e9046a7d6125cf2915a326a1504dd75d0543b5
@@ -0,0 +1 @@
+ÿ \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/0ade7c2cf97f75d009975f4d720d1fa6c19f4897 b/fuzzers/corpora/packfile/0ade7c2cf97f75d009975f4d720d1fa6c19f4897
new file mode 100644
index 000000000..f11c82a4c
--- /dev/null
+++ b/fuzzers/corpora/packfile/0ade7c2cf97f75d009975f4d720d1fa6c19f4897
@@ -0,0 +1 @@
+9 \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/0c316c67c1450aee57ffa3f74c19ea5d32d44622 b/fuzzers/corpora/packfile/0c316c67c1450aee57ffa3f74c19ea5d32d44622
new file mode 100644
index 000000000..08d7351a3
--- /dev/null
+++ b/fuzzers/corpora/packfile/0c316c67c1450aee57ffa3f74c19ea5d32d44622
Binary files differ
diff --git a/fuzzers/corpora/packfile/0c395c44e4dd5b67caae8a98a66741e17e8af136 b/fuzzers/corpora/packfile/0c395c44e4dd5b67caae8a98a66741e17e8af136
new file mode 100644
index 000000000..e899a797a
--- /dev/null
+++ b/fuzzers/corpora/packfile/0c395c44e4dd5b67caae8a98a66741e17e8af136
Binary files differ
diff --git a/fuzzers/corpora/packfile/0cb9120e5ae00b0d660a111ef85fc9194a5f244a b/fuzzers/corpora/packfile/0cb9120e5ae00b0d660a111ef85fc9194a5f244a
new file mode 100644
index 000000000..9fb6a664b
--- /dev/null
+++ b/fuzzers/corpora/packfile/0cb9120e5ae00b0d660a111ef85fc9194a5f244a
Binary files differ
diff --git a/fuzzers/corpora/packfile/0d44e7156d04cd269fd1219c58c3b79dc8c41d60 b/fuzzers/corpora/packfile/0d44e7156d04cd269fd1219c58c3b79dc8c41d60
new file mode 100644
index 000000000..cf18be050
--- /dev/null
+++ b/fuzzers/corpora/packfile/0d44e7156d04cd269fd1219c58c3b79dc8c41d60
Binary files differ
diff --git a/fuzzers/corpora/packfile/0d77a48bea1dde6e5d391a65456dc0aa3d9cc5e3 b/fuzzers/corpora/packfile/0d77a48bea1dde6e5d391a65456dc0aa3d9cc5e3
new file mode 100644
index 000000000..6d3c9c0c8
--- /dev/null
+++ b/fuzzers/corpora/packfile/0d77a48bea1dde6e5d391a65456dc0aa3d9cc5e3
Binary files differ
diff --git a/fuzzers/corpora/packfile/0db25107ff248616cadc75b7819b21d06394cf25 b/fuzzers/corpora/packfile/0db25107ff248616cadc75b7819b21d06394cf25
new file mode 100644
index 000000000..c158d57e8
--- /dev/null
+++ b/fuzzers/corpora/packfile/0db25107ff248616cadc75b7819b21d06394cf25
Binary files differ
diff --git a/fuzzers/corpora/packfile/0debae2db7ef2933f386bac21a2d3bebb473070e b/fuzzers/corpora/packfile/0debae2db7ef2933f386bac21a2d3bebb473070e
new file mode 100644
index 000000000..1f9443f9f
--- /dev/null
+++ b/fuzzers/corpora/packfile/0debae2db7ef2933f386bac21a2d3bebb473070e
Binary files differ
diff --git a/fuzzers/corpora/packfile/0e2d48524de33394ca82ea3a43f5f04aac6e86c7 b/fuzzers/corpora/packfile/0e2d48524de33394ca82ea3a43f5f04aac6e86c7
new file mode 100644
index 000000000..1fd3289a5
--- /dev/null
+++ b/fuzzers/corpora/packfile/0e2d48524de33394ca82ea3a43f5f04aac6e86c7
Binary files differ
diff --git a/fuzzers/corpora/packfile/0e49f6aa78f3b2f6c3fa5d281d5b1052fa9951dc b/fuzzers/corpora/packfile/0e49f6aa78f3b2f6c3fa5d281d5b1052fa9951dc
new file mode 100644
index 000000000..286d70332
--- /dev/null
+++ b/fuzzers/corpora/packfile/0e49f6aa78f3b2f6c3fa5d281d5b1052fa9951dc
Binary files differ
diff --git a/fuzzers/corpora/packfile/0f2982027f0b3b05250267b19e3969f8797e389e b/fuzzers/corpora/packfile/0f2982027f0b3b05250267b19e3969f8797e389e
new file mode 100644
index 000000000..57505d27b
--- /dev/null
+++ b/fuzzers/corpora/packfile/0f2982027f0b3b05250267b19e3969f8797e389e
@@ -0,0 +1 @@
+ÐPACKïïðŽ \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/11f6ad8ec52a2984abaafd7c3b516503785c2072 b/fuzzers/corpora/packfile/11f6ad8ec52a2984abaafd7c3b516503785c2072
new file mode 100644
index 000000000..c1b0730e0
--- /dev/null
+++ b/fuzzers/corpora/packfile/11f6ad8ec52a2984abaafd7c3b516503785c2072
@@ -0,0 +1 @@
+x \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/123ca693d81a8cfd99760ff5ca9e152ded878537 b/fuzzers/corpora/packfile/123ca693d81a8cfd99760ff5ca9e152ded878537
new file mode 100644
index 000000000..e6809148f
--- /dev/null
+++ b/fuzzers/corpora/packfile/123ca693d81a8cfd99760ff5ca9e152ded878537
Binary files differ
diff --git a/fuzzers/corpora/packfile/12878ca5643ab15a4a847e74ddd84fb365736af2 b/fuzzers/corpora/packfile/12878ca5643ab15a4a847e74ddd84fb365736af2
new file mode 100644
index 000000000..60294631d
--- /dev/null
+++ b/fuzzers/corpora/packfile/12878ca5643ab15a4a847e74ddd84fb365736af2
Binary files differ
diff --git a/fuzzers/corpora/packfile/13f292a24a9e79ae911f5d5e1ef7db0112601e64 b/fuzzers/corpora/packfile/13f292a24a9e79ae911f5d5e1ef7db0112601e64
new file mode 100644
index 000000000..36b85ed32
--- /dev/null
+++ b/fuzzers/corpora/packfile/13f292a24a9e79ae911f5d5e1ef7db0112601e64
Binary files differ
diff --git a/fuzzers/corpora/packfile/13facd9b4b5b4509fee92c7ccc1c82ed90624172 b/fuzzers/corpora/packfile/13facd9b4b5b4509fee92c7ccc1c82ed90624172
new file mode 100644
index 000000000..82f4fa059
--- /dev/null
+++ b/fuzzers/corpora/packfile/13facd9b4b5b4509fee92c7ccc1c82ed90624172
Binary files differ
diff --git a/fuzzers/corpora/packfile/140092a21903fdc56c98de126725fa6bead98ab1 b/fuzzers/corpora/packfile/140092a21903fdc56c98de126725fa6bead98ab1
new file mode 100644
index 000000000..11006ca79
--- /dev/null
+++ b/fuzzers/corpora/packfile/140092a21903fdc56c98de126725fa6bead98ab1
Binary files differ
diff --git a/fuzzers/corpora/packfile/1489f923c4dca729178b3e3233458550d8dddf29 b/fuzzers/corpora/packfile/1489f923c4dca729178b3e3233458550d8dddf29
new file mode 100644
index 000000000..09f370e38
--- /dev/null
+++ b/fuzzers/corpora/packfile/1489f923c4dca729178b3e3233458550d8dddf29
Binary files differ
diff --git a/fuzzers/corpora/packfile/1501a58834f24f95442f190653a50dd67d01e19d b/fuzzers/corpora/packfile/1501a58834f24f95442f190653a50dd67d01e19d
new file mode 100644
index 000000000..3bbe254b7
--- /dev/null
+++ b/fuzzers/corpora/packfile/1501a58834f24f95442f190653a50dd67d01e19d
Binary files differ
diff --git a/fuzzers/corpora/packfile/15eddee57cafb11e927810d62230a6e104de1d5c b/fuzzers/corpora/packfile/15eddee57cafb11e927810d62230a6e104de1d5c
new file mode 100644
index 000000000..4c563e6cb
--- /dev/null
+++ b/fuzzers/corpora/packfile/15eddee57cafb11e927810d62230a6e104de1d5c
Binary files differ
diff --git a/fuzzers/corpora/packfile/1632aa4b049f1118306485b11c70c499a0200dd5 b/fuzzers/corpora/packfile/1632aa4b049f1118306485b11c70c499a0200dd5
new file mode 100644
index 000000000..677f3ab49
--- /dev/null
+++ b/fuzzers/corpora/packfile/1632aa4b049f1118306485b11c70c499a0200dd5
Binary files differ
diff --git a/fuzzers/corpora/packfile/18e1cf33b179a5cbaaf0baac8279ec4ed1cbdcf3 b/fuzzers/corpora/packfile/18e1cf33b179a5cbaaf0baac8279ec4ed1cbdcf3
new file mode 100644
index 000000000..844526230
--- /dev/null
+++ b/fuzzers/corpora/packfile/18e1cf33b179a5cbaaf0baac8279ec4ed1cbdcf3
Binary files differ
diff --git a/fuzzers/corpora/packfile/18e768865207e0b90047487b66532b20bc74b1a2 b/fuzzers/corpora/packfile/18e768865207e0b90047487b66532b20bc74b1a2
new file mode 100644
index 000000000..2069d5bb9
--- /dev/null
+++ b/fuzzers/corpora/packfile/18e768865207e0b90047487b66532b20bc74b1a2
Binary files differ
diff --git a/fuzzers/corpora/packfile/1940c66b45a3bd5c847330b207fd87aee6e96194 b/fuzzers/corpora/packfile/1940c66b45a3bd5c847330b207fd87aee6e96194
new file mode 100644
index 000000000..5b8513ee7
--- /dev/null
+++ b/fuzzers/corpora/packfile/1940c66b45a3bd5c847330b207fd87aee6e96194
Binary files differ
diff --git a/fuzzers/corpora/packfile/1966ab31dc80ab75196b0cbf28e3960a0eb3f6c5 b/fuzzers/corpora/packfile/1966ab31dc80ab75196b0cbf28e3960a0eb3f6c5
new file mode 100644
index 000000000..572d311d2
--- /dev/null
+++ b/fuzzers/corpora/packfile/1966ab31dc80ab75196b0cbf28e3960a0eb3f6c5
Binary files differ
diff --git a/fuzzers/corpora/packfile/19da91f2603889267dfd77786e07a5b8f067d62a b/fuzzers/corpora/packfile/19da91f2603889267dfd77786e07a5b8f067d62a
new file mode 100644
index 000000000..8b43ca9ac
--- /dev/null
+++ b/fuzzers/corpora/packfile/19da91f2603889267dfd77786e07a5b8f067d62a
@@ -0,0 +1 @@
+© \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/1a72795a3dffdfc999b030d9aab7237dea1e2bc1 b/fuzzers/corpora/packfile/1a72795a3dffdfc999b030d9aab7237dea1e2bc1
new file mode 100644
index 000000000..5a8a38b90
--- /dev/null
+++ b/fuzzers/corpora/packfile/1a72795a3dffdfc999b030d9aab7237dea1e2bc1
Binary files differ
diff --git a/fuzzers/corpora/packfile/1e29cf67a66f225b338610fbcdf1b8185a8f5b7d b/fuzzers/corpora/packfile/1e29cf67a66f225b338610fbcdf1b8185a8f5b7d
new file mode 100644
index 000000000..52219dec1
--- /dev/null
+++ b/fuzzers/corpora/packfile/1e29cf67a66f225b338610fbcdf1b8185a8f5b7d
Binary files differ
diff --git a/fuzzers/corpora/packfile/1eb8977ef8c3be9ee896d785663c762c7e32be28 b/fuzzers/corpora/packfile/1eb8977ef8c3be9ee896d785663c762c7e32be28
new file mode 100644
index 000000000..d924eb71b
--- /dev/null
+++ b/fuzzers/corpora/packfile/1eb8977ef8c3be9ee896d785663c762c7e32be28
Binary files differ
diff --git a/fuzzers/corpora/packfile/1f0837530c1c3d122157f2eaa9c2178dcc3580df b/fuzzers/corpora/packfile/1f0837530c1c3d122157f2eaa9c2178dcc3580df
new file mode 100644
index 000000000..26b0c6041
--- /dev/null
+++ b/fuzzers/corpora/packfile/1f0837530c1c3d122157f2eaa9c2178dcc3580df
Binary files differ
diff --git a/fuzzers/corpora/packfile/1f3c5fd6dc091faa397bce776aa97b457388fdae b/fuzzers/corpora/packfile/1f3c5fd6dc091faa397bce776aa97b457388fdae
new file mode 100644
index 000000000..5b5232da2
--- /dev/null
+++ b/fuzzers/corpora/packfile/1f3c5fd6dc091faa397bce776aa97b457388fdae
Binary files differ
diff --git a/fuzzers/corpora/packfile/20528983163f834108150a7191600ff94ae2c1d2 b/fuzzers/corpora/packfile/20528983163f834108150a7191600ff94ae2c1d2
new file mode 100644
index 000000000..05189f0f4
--- /dev/null
+++ b/fuzzers/corpora/packfile/20528983163f834108150a7191600ff94ae2c1d2
Binary files differ
diff --git a/fuzzers/corpora/packfile/20a725140a8ffbe11bb71c1b83f19452147e5180 b/fuzzers/corpora/packfile/20a725140a8ffbe11bb71c1b83f19452147e5180
new file mode 100644
index 000000000..f0337fac2
--- /dev/null
+++ b/fuzzers/corpora/packfile/20a725140a8ffbe11bb71c1b83f19452147e5180
Binary files differ
diff --git a/fuzzers/corpora/packfile/2149aa9e07dda9bbf502e088d8d0a38e8fb94f2e b/fuzzers/corpora/packfile/2149aa9e07dda9bbf502e088d8d0a38e8fb94f2e
new file mode 100644
index 000000000..e7754cae5
--- /dev/null
+++ b/fuzzers/corpora/packfile/2149aa9e07dda9bbf502e088d8d0a38e8fb94f2e
@@ -0,0 +1 @@
+À \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/21b664aa8c86aaee4007d9bdbc2d63bf82bd5109 b/fuzzers/corpora/packfile/21b664aa8c86aaee4007d9bdbc2d63bf82bd5109
new file mode 100644
index 000000000..44c66047c
--- /dev/null
+++ b/fuzzers/corpora/packfile/21b664aa8c86aaee4007d9bdbc2d63bf82bd5109
Binary files differ
diff --git a/fuzzers/corpora/packfile/21b9ec8a7d7ac4d542c9bf7b2e26581cfcfaaab6 b/fuzzers/corpora/packfile/21b9ec8a7d7ac4d542c9bf7b2e26581cfcfaaab6
new file mode 100644
index 000000000..c2f5439b3
--- /dev/null
+++ b/fuzzers/corpora/packfile/21b9ec8a7d7ac4d542c9bf7b2e26581cfcfaaab6
Binary files differ
diff --git a/fuzzers/corpora/packfile/21c07e2affed6b0134d5dc28ea6c4937e691c761 b/fuzzers/corpora/packfile/21c07e2affed6b0134d5dc28ea6c4937e691c761
new file mode 100644
index 000000000..ee9fc8981
--- /dev/null
+++ b/fuzzers/corpora/packfile/21c07e2affed6b0134d5dc28ea6c4937e691c761
Binary files differ
diff --git a/fuzzers/corpora/packfile/23841d4076641ebcb4f58d1fd03047528c9d359b b/fuzzers/corpora/packfile/23841d4076641ebcb4f58d1fd03047528c9d359b
new file mode 100644
index 000000000..76b0b49e5
--- /dev/null
+++ b/fuzzers/corpora/packfile/23841d4076641ebcb4f58d1fd03047528c9d359b
Binary files differ
diff --git a/fuzzers/corpora/packfile/23b9174c42560de6525b1f103125f599479f95cb b/fuzzers/corpora/packfile/23b9174c42560de6525b1f103125f599479f95cb
new file mode 100644
index 000000000..4bef2f6ed
--- /dev/null
+++ b/fuzzers/corpora/packfile/23b9174c42560de6525b1f103125f599479f95cb
Binary files differ
diff --git a/fuzzers/corpora/packfile/241cbd6dfb6e53c43c73b62f9384359091dcbf56 b/fuzzers/corpora/packfile/241cbd6dfb6e53c43c73b62f9384359091dcbf56
new file mode 100644
index 000000000..bd0fd3594
--- /dev/null
+++ b/fuzzers/corpora/packfile/241cbd6dfb6e53c43c73b62f9384359091dcbf56
@@ -0,0 +1 @@
+­ \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/245a2ddea41e6531944933c4420b8c9790ac351b b/fuzzers/corpora/packfile/245a2ddea41e6531944933c4420b8c9790ac351b
new file mode 100644
index 000000000..99cbc9beb
--- /dev/null
+++ b/fuzzers/corpora/packfile/245a2ddea41e6531944933c4420b8c9790ac351b
Binary files differ
diff --git a/fuzzers/corpora/packfile/2541e340271ea496a392870bcc20d3510287b9e9 b/fuzzers/corpora/packfile/2541e340271ea496a392870bcc20d3510287b9e9
new file mode 100644
index 000000000..ff63b2add
--- /dev/null
+++ b/fuzzers/corpora/packfile/2541e340271ea496a392870bcc20d3510287b9e9
Binary files differ
diff --git a/fuzzers/corpora/packfile/276af22d5bf94344737fb1a5eb5de7d335004493 b/fuzzers/corpora/packfile/276af22d5bf94344737fb1a5eb5de7d335004493
new file mode 100644
index 000000000..fd2b0774c
--- /dev/null
+++ b/fuzzers/corpora/packfile/276af22d5bf94344737fb1a5eb5de7d335004493
Binary files differ
diff --git a/fuzzers/corpora/packfile/27d5482eebd075de44389774fce28c69f45c8a75 b/fuzzers/corpora/packfile/27d5482eebd075de44389774fce28c69f45c8a75
new file mode 100644
index 000000000..be54354a9
--- /dev/null
+++ b/fuzzers/corpora/packfile/27d5482eebd075de44389774fce28c69f45c8a75
@@ -0,0 +1 @@
+h \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/28334bd612cb539de776370995f60c8032215434 b/fuzzers/corpora/packfile/28334bd612cb539de776370995f60c8032215434
new file mode 100644
index 000000000..6d67b283d
--- /dev/null
+++ b/fuzzers/corpora/packfile/28334bd612cb539de776370995f60c8032215434
Binary files differ
diff --git a/fuzzers/corpora/packfile/2973e2ac092cba077d7350bfffe1cf2e0644a6e1 b/fuzzers/corpora/packfile/2973e2ac092cba077d7350bfffe1cf2e0644a6e1
new file mode 100644
index 000000000..1066746d3
--- /dev/null
+++ b/fuzzers/corpora/packfile/2973e2ac092cba077d7350bfffe1cf2e0644a6e1
Binary files differ
diff --git a/fuzzers/corpora/packfile/2adcd01e876b12d867c858ffaec38c42c59c36c7 b/fuzzers/corpora/packfile/2adcd01e876b12d867c858ffaec38c42c59c36c7
new file mode 100644
index 000000000..4323d106b
--- /dev/null
+++ b/fuzzers/corpora/packfile/2adcd01e876b12d867c858ffaec38c42c59c36c7
Binary files differ
diff --git a/fuzzers/corpora/packfile/2b28470644f5d0323643da99c831d82f20a7a74f b/fuzzers/corpora/packfile/2b28470644f5d0323643da99c831d82f20a7a74f
new file mode 100644
index 000000000..a65ff490e
--- /dev/null
+++ b/fuzzers/corpora/packfile/2b28470644f5d0323643da99c831d82f20a7a74f
Binary files differ
diff --git a/fuzzers/corpora/packfile/2b86229020ba808df84e16f800dc152254f18f64 b/fuzzers/corpora/packfile/2b86229020ba808df84e16f800dc152254f18f64
new file mode 100644
index 000000000..bd650d245
--- /dev/null
+++ b/fuzzers/corpora/packfile/2b86229020ba808df84e16f800dc152254f18f64
Binary files differ
diff --git a/fuzzers/corpora/packfile/2cc5bf2f780cd85ad93d232890f418625f4d1274 b/fuzzers/corpora/packfile/2cc5bf2f780cd85ad93d232890f418625f4d1274
new file mode 100644
index 000000000..f45a38c22
--- /dev/null
+++ b/fuzzers/corpora/packfile/2cc5bf2f780cd85ad93d232890f418625f4d1274
@@ -0,0 +1 @@
+Pw \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/2d6ae8fa82b656879dd3371d0a6899e88ef34e76 b/fuzzers/corpora/packfile/2d6ae8fa82b656879dd3371d0a6899e88ef34e76
new file mode 100644
index 000000000..cd62a7ba7
--- /dev/null
+++ b/fuzzers/corpora/packfile/2d6ae8fa82b656879dd3371d0a6899e88ef34e76
Binary files differ
diff --git a/fuzzers/corpora/packfile/2e74d24e887678f0681d4c7c010477b8b9697f1a b/fuzzers/corpora/packfile/2e74d24e887678f0681d4c7c010477b8b9697f1a
new file mode 100644
index 000000000..ae9780bc6
--- /dev/null
+++ b/fuzzers/corpora/packfile/2e74d24e887678f0681d4c7c010477b8b9697f1a
@@ -0,0 +1 @@
+ˆ \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/2f436c68a7b0be43aa6d4ad5126ec9401a9f9211 b/fuzzers/corpora/packfile/2f436c68a7b0be43aa6d4ad5126ec9401a9f9211
new file mode 100644
index 000000000..4841ef55a
--- /dev/null
+++ b/fuzzers/corpora/packfile/2f436c68a7b0be43aa6d4ad5126ec9401a9f9211
Binary files differ
diff --git a/fuzzers/corpora/packfile/2fec48b0dcb45b98597bfec12bf0dc650543b3e3 b/fuzzers/corpora/packfile/2fec48b0dcb45b98597bfec12bf0dc650543b3e3
new file mode 100644
index 000000000..0ded0e308
--- /dev/null
+++ b/fuzzers/corpora/packfile/2fec48b0dcb45b98597bfec12bf0dc650543b3e3
Binary files differ
diff --git a/fuzzers/corpora/packfile/31bd25636a9807d6024e78b9b3d02fbb1a02835e b/fuzzers/corpora/packfile/31bd25636a9807d6024e78b9b3d02fbb1a02835e
new file mode 100644
index 000000000..15d175154
--- /dev/null
+++ b/fuzzers/corpora/packfile/31bd25636a9807d6024e78b9b3d02fbb1a02835e
@@ -0,0 +1 @@
+ÿÿÿ@ \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/323c88be36ecc20ff30b21cf417106554042db04 b/fuzzers/corpora/packfile/323c88be36ecc20ff30b21cf417106554042db04
new file mode 100644
index 000000000..0e5c2cbf5
--- /dev/null
+++ b/fuzzers/corpora/packfile/323c88be36ecc20ff30b21cf417106554042db04
Binary files differ
diff --git a/fuzzers/corpora/packfile/33b3aa957ca4fb31873033a7f460617f1fe81e32 b/fuzzers/corpora/packfile/33b3aa957ca4fb31873033a7f460617f1fe81e32
new file mode 100644
index 000000000..cea3b1217
--- /dev/null
+++ b/fuzzers/corpora/packfile/33b3aa957ca4fb31873033a7f460617f1fe81e32
Binary files differ
diff --git a/fuzzers/corpora/packfile/34303d14e37c9ddfb0bad130e006fec927e13785 b/fuzzers/corpora/packfile/34303d14e37c9ddfb0bad130e006fec927e13785
new file mode 100644
index 000000000..1adb6b18d
--- /dev/null
+++ b/fuzzers/corpora/packfile/34303d14e37c9ddfb0bad130e006fec927e13785
Binary files differ
diff --git a/fuzzers/corpora/packfile/34dac9466a4a2c15aaeef13a9567f6827ace7748 b/fuzzers/corpora/packfile/34dac9466a4a2c15aaeef13a9567f6827ace7748
new file mode 100644
index 000000000..2b0708eab
--- /dev/null
+++ b/fuzzers/corpora/packfile/34dac9466a4a2c15aaeef13a9567f6827ace7748
Binary files differ
diff --git a/fuzzers/corpora/packfile/356a192b7913b04c54574d18c28d46e6395428ab b/fuzzers/corpora/packfile/356a192b7913b04c54574d18c28d46e6395428ab
new file mode 100644
index 000000000..56a6051ca
--- /dev/null
+++ b/fuzzers/corpora/packfile/356a192b7913b04c54574d18c28d46e6395428ab
@@ -0,0 +1 @@
+1 \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/35bf585248be2c6d3940e15b85f72c4146903097 b/fuzzers/corpora/packfile/35bf585248be2c6d3940e15b85f72c4146903097
new file mode 100644
index 000000000..f17d4fa07
--- /dev/null
+++ b/fuzzers/corpora/packfile/35bf585248be2c6d3940e15b85f72c4146903097
Binary files differ
diff --git a/fuzzers/corpora/packfile/3725a1c4431714019827277deac8ec2efeed8f1d b/fuzzers/corpora/packfile/3725a1c4431714019827277deac8ec2efeed8f1d
new file mode 100644
index 000000000..f58c2719e
--- /dev/null
+++ b/fuzzers/corpora/packfile/3725a1c4431714019827277deac8ec2efeed8f1d
Binary files differ
diff --git a/fuzzers/corpora/packfile/37a2b7de1fadc9eab2d5fabf5dfe7007c245dbee b/fuzzers/corpora/packfile/37a2b7de1fadc9eab2d5fabf5dfe7007c245dbee
new file mode 100644
index 000000000..0c71198c3
--- /dev/null
+++ b/fuzzers/corpora/packfile/37a2b7de1fadc9eab2d5fabf5dfe7007c245dbee
Binary files differ
diff --git a/fuzzers/corpora/packfile/37ab8a0ca81fc62279057401761f7730a5a8f1b2 b/fuzzers/corpora/packfile/37ab8a0ca81fc62279057401761f7730a5a8f1b2
new file mode 100644
index 000000000..d9b74cf65
--- /dev/null
+++ b/fuzzers/corpora/packfile/37ab8a0ca81fc62279057401761f7730a5a8f1b2
Binary files differ
diff --git a/fuzzers/corpora/packfile/38011be20a664dcd2594e712a26c063c2d50efcd b/fuzzers/corpora/packfile/38011be20a664dcd2594e712a26c063c2d50efcd
new file mode 100644
index 000000000..bd8061653
--- /dev/null
+++ b/fuzzers/corpora/packfile/38011be20a664dcd2594e712a26c063c2d50efcd
Binary files differ
diff --git a/fuzzers/corpora/packfile/3838851a5da8239c2ae6cbbe869c81446c720e87 b/fuzzers/corpora/packfile/3838851a5da8239c2ae6cbbe869c81446c720e87
new file mode 100644
index 000000000..d1282b948
--- /dev/null
+++ b/fuzzers/corpora/packfile/3838851a5da8239c2ae6cbbe869c81446c720e87
Binary files differ
diff --git a/fuzzers/corpora/packfile/3921322ac01429b001f88d64c8319088fe49218e b/fuzzers/corpora/packfile/3921322ac01429b001f88d64c8319088fe49218e
new file mode 100644
index 000000000..6ed50ebd0
--- /dev/null
+++ b/fuzzers/corpora/packfile/3921322ac01429b001f88d64c8319088fe49218e
Binary files differ
diff --git a/fuzzers/corpora/packfile/395df8f7c51f007019cb30201c49e884b46b92fa b/fuzzers/corpora/packfile/395df8f7c51f007019cb30201c49e884b46b92fa
new file mode 100644
index 000000000..fa7af8bf5
--- /dev/null
+++ b/fuzzers/corpora/packfile/395df8f7c51f007019cb30201c49e884b46b92fa
@@ -0,0 +1 @@
+z \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/3e98eb4fd65d3f2c41fa979db0f5678b310e51fe b/fuzzers/corpora/packfile/3e98eb4fd65d3f2c41fa979db0f5678b310e51fe
new file mode 100644
index 000000000..8f1d1f526
--- /dev/null
+++ b/fuzzers/corpora/packfile/3e98eb4fd65d3f2c41fa979db0f5678b310e51fe
Binary files differ
diff --git a/fuzzers/corpora/packfile/3f9ec359d0cb573cb6d2b2df64c9f4048ea298b8 b/fuzzers/corpora/packfile/3f9ec359d0cb573cb6d2b2df64c9f4048ea298b8
new file mode 100644
index 000000000..3c1f737c1
--- /dev/null
+++ b/fuzzers/corpora/packfile/3f9ec359d0cb573cb6d2b2df64c9f4048ea298b8
Binary files differ
diff --git a/fuzzers/corpora/packfile/4067250457728bf775aa310ef253b223ae2fe4dc b/fuzzers/corpora/packfile/4067250457728bf775aa310ef253b223ae2fe4dc
new file mode 100644
index 000000000..1e9a88b68
--- /dev/null
+++ b/fuzzers/corpora/packfile/4067250457728bf775aa310ef253b223ae2fe4dc
Binary files differ
diff --git a/fuzzers/corpora/packfile/40818db87e110b29cb864f73265586cc054f5bbb b/fuzzers/corpora/packfile/40818db87e110b29cb864f73265586cc054f5bbb
new file mode 100644
index 000000000..e5e52b2bf
--- /dev/null
+++ b/fuzzers/corpora/packfile/40818db87e110b29cb864f73265586cc054f5bbb
Binary files differ
diff --git a/fuzzers/corpora/packfile/418f9fb9ce1d4efdf481ca8fff9dadd09caee9fc b/fuzzers/corpora/packfile/418f9fb9ce1d4efdf481ca8fff9dadd09caee9fc
new file mode 100644
index 000000000..93eb93508
--- /dev/null
+++ b/fuzzers/corpora/packfile/418f9fb9ce1d4efdf481ca8fff9dadd09caee9fc
Binary files differ
diff --git a/fuzzers/corpora/packfile/41ca0ae865b686089b8d99e9d661da291ce51019 b/fuzzers/corpora/packfile/41ca0ae865b686089b8d99e9d661da291ce51019
new file mode 100644
index 000000000..e6f394f02
--- /dev/null
+++ b/fuzzers/corpora/packfile/41ca0ae865b686089b8d99e9d661da291ce51019
Binary files differ
diff --git a/fuzzers/corpora/packfile/42099b4af021e53fd8fd4e056c2568d7c2e3ffa8 b/fuzzers/corpora/packfile/42099b4af021e53fd8fd4e056c2568d7c2e3ffa8
new file mode 100644
index 000000000..35ec3b9d7
--- /dev/null
+++ b/fuzzers/corpora/packfile/42099b4af021e53fd8fd4e056c2568d7c2e3ffa8
@@ -0,0 +1 @@
+/ \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/420ce645ce1c93cee59a06da2159cbbb251e4c01 b/fuzzers/corpora/packfile/420ce645ce1c93cee59a06da2159cbbb251e4c01
new file mode 100644
index 000000000..5e6efc2da
--- /dev/null
+++ b/fuzzers/corpora/packfile/420ce645ce1c93cee59a06da2159cbbb251e4c01
Binary files differ
diff --git a/fuzzers/corpora/packfile/4345cb1fa27885a8fbfe7c0c830a592cc76a552b b/fuzzers/corpora/packfile/4345cb1fa27885a8fbfe7c0c830a592cc76a552b
new file mode 100644
index 000000000..02691e352
--- /dev/null
+++ b/fuzzers/corpora/packfile/4345cb1fa27885a8fbfe7c0c830a592cc76a552b
@@ -0,0 +1 @@
+% \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/450718a71a93a1b5ff982595432400b0fa876fb6 b/fuzzers/corpora/packfile/450718a71a93a1b5ff982595432400b0fa876fb6
new file mode 100644
index 000000000..977e5950c
--- /dev/null
+++ b/fuzzers/corpora/packfile/450718a71a93a1b5ff982595432400b0fa876fb6
Binary files differ
diff --git a/fuzzers/corpora/packfile/453a312eb77b9d4198ac62faef10ecf3e283120c b/fuzzers/corpora/packfile/453a312eb77b9d4198ac62faef10ecf3e283120c
new file mode 100644
index 000000000..b25fe5376
--- /dev/null
+++ b/fuzzers/corpora/packfile/453a312eb77b9d4198ac62faef10ecf3e283120c
Binary files differ
diff --git a/fuzzers/corpora/packfile/45470317334b614ce4d119c05ed2d6250dbc6061 b/fuzzers/corpora/packfile/45470317334b614ce4d119c05ed2d6250dbc6061
new file mode 100644
index 000000000..4b9a0a91a
--- /dev/null
+++ b/fuzzers/corpora/packfile/45470317334b614ce4d119c05ed2d6250dbc6061
Binary files differ
diff --git a/fuzzers/corpora/packfile/45a65193e30784b0124f4fed659eb7e46552c2d0 b/fuzzers/corpora/packfile/45a65193e30784b0124f4fed659eb7e46552c2d0
new file mode 100644
index 000000000..5bd7dea14
--- /dev/null
+++ b/fuzzers/corpora/packfile/45a65193e30784b0124f4fed659eb7e46552c2d0
@@ -0,0 +1 @@
+¶ \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/45cff3494791ded181e1e3dab1c7a0e40130b57b b/fuzzers/corpora/packfile/45cff3494791ded181e1e3dab1c7a0e40130b57b
new file mode 100644
index 000000000..a92e1a51a
--- /dev/null
+++ b/fuzzers/corpora/packfile/45cff3494791ded181e1e3dab1c7a0e40130b57b
Binary files differ
diff --git a/fuzzers/corpora/packfile/481dedc2855981510024d48828af0fe35a1503dd b/fuzzers/corpora/packfile/481dedc2855981510024d48828af0fe35a1503dd
new file mode 100644
index 000000000..3d95cc33c
--- /dev/null
+++ b/fuzzers/corpora/packfile/481dedc2855981510024d48828af0fe35a1503dd
Binary files differ
diff --git a/fuzzers/corpora/packfile/49a6448a722742b1b392f0471542ee0c572c5a9a b/fuzzers/corpora/packfile/49a6448a722742b1b392f0471542ee0c572c5a9a
new file mode 100644
index 000000000..c767ee576
--- /dev/null
+++ b/fuzzers/corpora/packfile/49a6448a722742b1b392f0471542ee0c572c5a9a
Binary files differ
diff --git a/fuzzers/corpora/packfile/4a6e6af93dea13a5720be52b95f2948e0cab4602 b/fuzzers/corpora/packfile/4a6e6af93dea13a5720be52b95f2948e0cab4602
new file mode 100644
index 000000000..013d77bc5
--- /dev/null
+++ b/fuzzers/corpora/packfile/4a6e6af93dea13a5720be52b95f2948e0cab4602
Binary files differ
diff --git a/fuzzers/corpora/packfile/4ac25548f35e06eb9f91b0f15b89db3cb5bcb283 b/fuzzers/corpora/packfile/4ac25548f35e06eb9f91b0f15b89db3cb5bcb283
new file mode 100644
index 000000000..2ee658030
--- /dev/null
+++ b/fuzzers/corpora/packfile/4ac25548f35e06eb9f91b0f15b89db3cb5bcb283
Binary files differ
diff --git a/fuzzers/corpora/packfile/4b586169f192749a0aa023ad6e4edd2e15d67f53 b/fuzzers/corpora/packfile/4b586169f192749a0aa023ad6e4edd2e15d67f53
new file mode 100644
index 000000000..d517c58a9
--- /dev/null
+++ b/fuzzers/corpora/packfile/4b586169f192749a0aa023ad6e4edd2e15d67f53
Binary files differ
diff --git a/fuzzers/corpora/packfile/4c3c8ec0e25da9342dc87c2e78d3040c381514ce b/fuzzers/corpora/packfile/4c3c8ec0e25da9342dc87c2e78d3040c381514ce
new file mode 100644
index 000000000..c6a105949
--- /dev/null
+++ b/fuzzers/corpora/packfile/4c3c8ec0e25da9342dc87c2e78d3040c381514ce
Binary files differ
diff --git a/fuzzers/corpora/packfile/4d5189cd1411daaa579df34591c6a5946204c9a0 b/fuzzers/corpora/packfile/4d5189cd1411daaa579df34591c6a5946204c9a0
new file mode 100644
index 000000000..ac19046c8
--- /dev/null
+++ b/fuzzers/corpora/packfile/4d5189cd1411daaa579df34591c6a5946204c9a0
Binary files differ
diff --git a/fuzzers/corpora/packfile/4d7f1bfa928c0d3399598d562e346c6e23de6a03 b/fuzzers/corpora/packfile/4d7f1bfa928c0d3399598d562e346c6e23de6a03
new file mode 100644
index 000000000..712cf004b
--- /dev/null
+++ b/fuzzers/corpora/packfile/4d7f1bfa928c0d3399598d562e346c6e23de6a03
Binary files differ
diff --git a/fuzzers/corpora/packfile/4eee38183d6fce3f42224738be58d0e3975300f4 b/fuzzers/corpora/packfile/4eee38183d6fce3f42224738be58d0e3975300f4
new file mode 100644
index 000000000..4434b9327
--- /dev/null
+++ b/fuzzers/corpora/packfile/4eee38183d6fce3f42224738be58d0e3975300f4
Binary files differ
diff --git a/fuzzers/corpora/packfile/4f2e2af611d6567abcf5b6bfc579487ac417a8d4 b/fuzzers/corpora/packfile/4f2e2af611d6567abcf5b6bfc579487ac417a8d4
new file mode 100644
index 000000000..d16ad16ac
--- /dev/null
+++ b/fuzzers/corpora/packfile/4f2e2af611d6567abcf5b6bfc579487ac417a8d4
Binary files differ
diff --git a/fuzzers/corpora/packfile/4fa04b2c3ac839c36c4a3b51bf882eb99b7cd097 b/fuzzers/corpora/packfile/4fa04b2c3ac839c36c4a3b51bf882eb99b7cd097
new file mode 100644
index 000000000..0102fe32d
--- /dev/null
+++ b/fuzzers/corpora/packfile/4fa04b2c3ac839c36c4a3b51bf882eb99b7cd097
Binary files differ
diff --git a/fuzzers/corpora/packfile/4fbe10aede9fd9ce2030c6e567a9281e1a5338f4 b/fuzzers/corpora/packfile/4fbe10aede9fd9ce2030c6e567a9281e1a5338f4
new file mode 100644
index 000000000..83ca0198c
--- /dev/null
+++ b/fuzzers/corpora/packfile/4fbe10aede9fd9ce2030c6e567a9281e1a5338f4
Binary files differ
diff --git a/fuzzers/corpora/packfile/5037f4f74273aed9a09122af5f4acc10f42c033a b/fuzzers/corpora/packfile/5037f4f74273aed9a09122af5f4acc10f42c033a
new file mode 100644
index 000000000..cc94079d3
--- /dev/null
+++ b/fuzzers/corpora/packfile/5037f4f74273aed9a09122af5f4acc10f42c033a
Binary files differ
diff --git a/fuzzers/corpora/packfile/511993d3c99719e38a6779073019dacd7178ddb9 b/fuzzers/corpora/packfile/511993d3c99719e38a6779073019dacd7178ddb9
new file mode 100644
index 000000000..675f43ab4
--- /dev/null
+++ b/fuzzers/corpora/packfile/511993d3c99719e38a6779073019dacd7178ddb9
@@ -0,0 +1 @@
+P \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/520aa436eab6343c3729f51f0f8048e6b87f6aeb b/fuzzers/corpora/packfile/520aa436eab6343c3729f51f0f8048e6b87f6aeb
new file mode 100644
index 000000000..b5ec5afb8
--- /dev/null
+++ b/fuzzers/corpora/packfile/520aa436eab6343c3729f51f0f8048e6b87f6aeb
@@ -0,0 +1 @@
+ÏÏ \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/521e228f3b62dca81d87d2e7d5476657d7b5e0a9 b/fuzzers/corpora/packfile/521e228f3b62dca81d87d2e7d5476657d7b5e0a9
new file mode 100644
index 000000000..c0ea9e99f
--- /dev/null
+++ b/fuzzers/corpora/packfile/521e228f3b62dca81d87d2e7d5476657d7b5e0a9
Binary files differ
diff --git a/fuzzers/corpora/packfile/52e37dfd77d56769dc8a96388aa26695a8108dac b/fuzzers/corpora/packfile/52e37dfd77d56769dc8a96388aa26695a8108dac
new file mode 100644
index 000000000..57d12a9fb
--- /dev/null
+++ b/fuzzers/corpora/packfile/52e37dfd77d56769dc8a96388aa26695a8108dac
Binary files differ
diff --git a/fuzzers/corpora/packfile/5374fb6be0a406cf8d0e95771ecb032254d21305 b/fuzzers/corpora/packfile/5374fb6be0a406cf8d0e95771ecb032254d21305
new file mode 100644
index 000000000..42b16b0ea
--- /dev/null
+++ b/fuzzers/corpora/packfile/5374fb6be0a406cf8d0e95771ecb032254d21305
Binary files differ
diff --git a/fuzzers/corpora/packfile/53e1d4898c15c8ee3ef5e2fb279d151108725731 b/fuzzers/corpora/packfile/53e1d4898c15c8ee3ef5e2fb279d151108725731
new file mode 100644
index 000000000..516958e03
--- /dev/null
+++ b/fuzzers/corpora/packfile/53e1d4898c15c8ee3ef5e2fb279d151108725731
Binary files differ
diff --git a/fuzzers/corpora/packfile/53e61ad37ca92b7f6c0396e5fab1ed8743e73da0 b/fuzzers/corpora/packfile/53e61ad37ca92b7f6c0396e5fab1ed8743e73da0
new file mode 100644
index 000000000..ded29680c
--- /dev/null
+++ b/fuzzers/corpora/packfile/53e61ad37ca92b7f6c0396e5fab1ed8743e73da0
Binary files differ
diff --git a/fuzzers/corpora/packfile/55df2a59ed6a888ee2f0cdfdcc8582696702de7a b/fuzzers/corpora/packfile/55df2a59ed6a888ee2f0cdfdcc8582696702de7a
new file mode 100644
index 000000000..a4a063a15
--- /dev/null
+++ b/fuzzers/corpora/packfile/55df2a59ed6a888ee2f0cdfdcc8582696702de7a
@@ -0,0 +1 @@
+ï \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/56a2020f68c5eb72786ea168cc2a7e8ea34ad9c2 b/fuzzers/corpora/packfile/56a2020f68c5eb72786ea168cc2a7e8ea34ad9c2
new file mode 100644
index 000000000..be0ff0d1b
--- /dev/null
+++ b/fuzzers/corpora/packfile/56a2020f68c5eb72786ea168cc2a7e8ea34ad9c2
Binary files differ
diff --git a/fuzzers/corpora/packfile/578678e78b72f8bcb9f414e4129ae5d85a4af914 b/fuzzers/corpora/packfile/578678e78b72f8bcb9f414e4129ae5d85a4af914
new file mode 100644
index 000000000..74829542d
--- /dev/null
+++ b/fuzzers/corpora/packfile/578678e78b72f8bcb9f414e4129ae5d85a4af914
Binary files differ
diff --git a/fuzzers/corpora/packfile/5a8bc5597fd0b2b44194ffabce46e2fa94c1ffd7 b/fuzzers/corpora/packfile/5a8bc5597fd0b2b44194ffabce46e2fa94c1ffd7
new file mode 100644
index 000000000..4c88499ed
--- /dev/null
+++ b/fuzzers/corpora/packfile/5a8bc5597fd0b2b44194ffabce46e2fa94c1ffd7
Binary files differ
diff --git a/fuzzers/corpora/packfile/5bab61eb53176449e25c2c82f172b82cb13ffb9d b/fuzzers/corpora/packfile/5bab61eb53176449e25c2c82f172b82cb13ffb9d
new file mode 100644
index 000000000..0d758c9c7
--- /dev/null
+++ b/fuzzers/corpora/packfile/5bab61eb53176449e25c2c82f172b82cb13ffb9d
@@ -0,0 +1 @@
+? \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/5c2dd944dde9e08881bef0894fe7b22a5c9c4b06 b/fuzzers/corpora/packfile/5c2dd944dde9e08881bef0894fe7b22a5c9c4b06
new file mode 100644
index 000000000..0fe2fa50e
--- /dev/null
+++ b/fuzzers/corpora/packfile/5c2dd944dde9e08881bef0894fe7b22a5c9c4b06
@@ -0,0 +1 @@
+j \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/5cb4674f4468d39f061d1df3c95b9c2dca529c54 b/fuzzers/corpora/packfile/5cb4674f4468d39f061d1df3c95b9c2dca529c54
new file mode 100644
index 000000000..9b54d9fa2
--- /dev/null
+++ b/fuzzers/corpora/packfile/5cb4674f4468d39f061d1df3c95b9c2dca529c54
Binary files differ
diff --git a/fuzzers/corpora/packfile/60b6fbfe65dc1796a09a734e054223aba8c90260 b/fuzzers/corpora/packfile/60b6fbfe65dc1796a09a734e054223aba8c90260
new file mode 100644
index 000000000..a7df9a623
--- /dev/null
+++ b/fuzzers/corpora/packfile/60b6fbfe65dc1796a09a734e054223aba8c90260
Binary files differ
diff --git a/fuzzers/corpora/packfile/611f5b9368427ef823f7ed89ad23667b02a06435 b/fuzzers/corpora/packfile/611f5b9368427ef823f7ed89ad23667b02a06435
new file mode 100644
index 000000000..56ee38037
--- /dev/null
+++ b/fuzzers/corpora/packfile/611f5b9368427ef823f7ed89ad23667b02a06435
Binary files differ
diff --git a/fuzzers/corpora/packfile/6214b4afdbfe63400ce428d47a58a2e29f682738 b/fuzzers/corpora/packfile/6214b4afdbfe63400ce428d47a58a2e29f682738
new file mode 100644
index 000000000..09e3c4097
--- /dev/null
+++ b/fuzzers/corpora/packfile/6214b4afdbfe63400ce428d47a58a2e29f682738
Binary files differ
diff --git a/fuzzers/corpora/packfile/634b675b80d51b52c3c6fbc73181ed47f61749ba b/fuzzers/corpora/packfile/634b675b80d51b52c3c6fbc73181ed47f61749ba
new file mode 100644
index 000000000..9afac4f10
--- /dev/null
+++ b/fuzzers/corpora/packfile/634b675b80d51b52c3c6fbc73181ed47f61749ba
Binary files differ
diff --git a/fuzzers/corpora/packfile/6431f1b31dc492fad89732b7d3e511fa7361985d b/fuzzers/corpora/packfile/6431f1b31dc492fad89732b7d3e511fa7361985d
new file mode 100644
index 000000000..b68409e30
--- /dev/null
+++ b/fuzzers/corpora/packfile/6431f1b31dc492fad89732b7d3e511fa7361985d
Binary files differ
diff --git a/fuzzers/corpora/packfile/6442fd4bbb7656f142c92050da17b0e81e79fad1 b/fuzzers/corpora/packfile/6442fd4bbb7656f142c92050da17b0e81e79fad1
new file mode 100644
index 000000000..2ca2d9605
--- /dev/null
+++ b/fuzzers/corpora/packfile/6442fd4bbb7656f142c92050da17b0e81e79fad1
Binary files differ
diff --git a/fuzzers/corpora/packfile/6486c8cf6bcc2fca60502564924f6b266399df3d b/fuzzers/corpora/packfile/6486c8cf6bcc2fca60502564924f6b266399df3d
new file mode 100644
index 000000000..a80e2090c
--- /dev/null
+++ b/fuzzers/corpora/packfile/6486c8cf6bcc2fca60502564924f6b266399df3d
Binary files differ
diff --git a/fuzzers/corpora/packfile/651c573b6fdd393e97536a47f8b9e65226e29c33 b/fuzzers/corpora/packfile/651c573b6fdd393e97536a47f8b9e65226e29c33
new file mode 100644
index 000000000..ec11120dd
--- /dev/null
+++ b/fuzzers/corpora/packfile/651c573b6fdd393e97536a47f8b9e65226e29c33
Binary files differ
diff --git a/fuzzers/corpora/packfile/657fc646e93cb999417f43f0ec77fbad694e3e18 b/fuzzers/corpora/packfile/657fc646e93cb999417f43f0ec77fbad694e3e18
new file mode 100644
index 000000000..acb56a8b7
--- /dev/null
+++ b/fuzzers/corpora/packfile/657fc646e93cb999417f43f0ec77fbad694e3e18
Binary files differ
diff --git a/fuzzers/corpora/packfile/65cc90263dec0020ceabc727d33aa587e57fc175 b/fuzzers/corpora/packfile/65cc90263dec0020ceabc727d33aa587e57fc175
new file mode 100644
index 000000000..d14a6c30d
--- /dev/null
+++ b/fuzzers/corpora/packfile/65cc90263dec0020ceabc727d33aa587e57fc175
@@ -0,0 +1 @@
+ÿ÷ \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/688934845f22049cb14668832efa33d45013b6b9 b/fuzzers/corpora/packfile/688934845f22049cb14668832efa33d45013b6b9
new file mode 100644
index 000000000..15294a501
--- /dev/null
+++ b/fuzzers/corpora/packfile/688934845f22049cb14668832efa33d45013b6b9
Binary files differ
diff --git a/fuzzers/corpora/packfile/6b0d31c0d563223024da45691584643ac78c96e8 b/fuzzers/corpora/packfile/6b0d31c0d563223024da45691584643ac78c96e8
new file mode 100644
index 000000000..08b9811c9
--- /dev/null
+++ b/fuzzers/corpora/packfile/6b0d31c0d563223024da45691584643ac78c96e8
@@ -0,0 +1 @@
+m \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/6b4dc6028a3a684a20dbc427b15a37ea2fd12dd1 b/fuzzers/corpora/packfile/6b4dc6028a3a684a20dbc427b15a37ea2fd12dd1
new file mode 100644
index 000000000..d76aa6f32
--- /dev/null
+++ b/fuzzers/corpora/packfile/6b4dc6028a3a684a20dbc427b15a37ea2fd12dd1
Binary files differ
diff --git a/fuzzers/corpora/packfile/6b7486fc2a47a40eb5a85a5edf53af60d48be7d5 b/fuzzers/corpora/packfile/6b7486fc2a47a40eb5a85a5edf53af60d48be7d5
new file mode 100644
index 000000000..d1e0eedf9
--- /dev/null
+++ b/fuzzers/corpora/packfile/6b7486fc2a47a40eb5a85a5edf53af60d48be7d5
Binary files differ
diff --git a/fuzzers/corpora/packfile/6bace82ea640ac0a78963c79483faf0faa7fd168 b/fuzzers/corpora/packfile/6bace82ea640ac0a78963c79483faf0faa7fd168
new file mode 100644
index 000000000..8c53a7f5f
--- /dev/null
+++ b/fuzzers/corpora/packfile/6bace82ea640ac0a78963c79483faf0faa7fd168
@@ -0,0 +1 @@
+± \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/6ca38da5f096a5847776e4d50cb63121341fd67c b/fuzzers/corpora/packfile/6ca38da5f096a5847776e4d50cb63121341fd67c
new file mode 100644
index 000000000..628bda022
--- /dev/null
+++ b/fuzzers/corpora/packfile/6ca38da5f096a5847776e4d50cb63121341fd67c
Binary files differ
diff --git a/fuzzers/corpora/packfile/6d344a65b9edced36045f94215b6810799789334 b/fuzzers/corpora/packfile/6d344a65b9edced36045f94215b6810799789334
new file mode 100644
index 000000000..1c794422f
--- /dev/null
+++ b/fuzzers/corpora/packfile/6d344a65b9edced36045f94215b6810799789334
Binary files differ
diff --git a/fuzzers/corpora/packfile/6dd655e8ef0573eb1c41151af924974aa1e9c454 b/fuzzers/corpora/packfile/6dd655e8ef0573eb1c41151af924974aa1e9c454
new file mode 100644
index 000000000..53047563e
--- /dev/null
+++ b/fuzzers/corpora/packfile/6dd655e8ef0573eb1c41151af924974aa1e9c454
Binary files differ
diff --git a/fuzzers/corpora/packfile/6e118259c2940fafba0a9ceeef6308e12e881ae1 b/fuzzers/corpora/packfile/6e118259c2940fafba0a9ceeef6308e12e881ae1
new file mode 100644
index 000000000..23597c3e5
--- /dev/null
+++ b/fuzzers/corpora/packfile/6e118259c2940fafba0a9ceeef6308e12e881ae1
Binary files differ
diff --git a/fuzzers/corpora/packfile/6e4b5ef83333606a16a63b579f221f6ffb7b48ee b/fuzzers/corpora/packfile/6e4b5ef83333606a16a63b579f221f6ffb7b48ee
new file mode 100644
index 000000000..6d72c9a90
--- /dev/null
+++ b/fuzzers/corpora/packfile/6e4b5ef83333606a16a63b579f221f6ffb7b48ee
@@ -0,0 +1 @@
+è \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/6f47ff60d54c012103a0c28851ffa9eab3002511 b/fuzzers/corpora/packfile/6f47ff60d54c012103a0c28851ffa9eab3002511
new file mode 100644
index 000000000..a7efd537f
--- /dev/null
+++ b/fuzzers/corpora/packfile/6f47ff60d54c012103a0c28851ffa9eab3002511
Binary files differ
diff --git a/fuzzers/corpora/packfile/701a765befff451207517d56c3fe8609d059867d b/fuzzers/corpora/packfile/701a765befff451207517d56c3fe8609d059867d
new file mode 100644
index 000000000..ee936e331
--- /dev/null
+++ b/fuzzers/corpora/packfile/701a765befff451207517d56c3fe8609d059867d
Binary files differ
diff --git a/fuzzers/corpora/packfile/7050f56d64b28499c89d5430761f18a8a2a933d4 b/fuzzers/corpora/packfile/7050f56d64b28499c89d5430761f18a8a2a933d4
new file mode 100644
index 000000000..a3df39612
--- /dev/null
+++ b/fuzzers/corpora/packfile/7050f56d64b28499c89d5430761f18a8a2a933d4
Binary files differ
diff --git a/fuzzers/corpora/packfile/724fa0194f615e1a0f08184a9f1520123f8e2833 b/fuzzers/corpora/packfile/724fa0194f615e1a0f08184a9f1520123f8e2833
new file mode 100644
index 000000000..dd6df7850
--- /dev/null
+++ b/fuzzers/corpora/packfile/724fa0194f615e1a0f08184a9f1520123f8e2833
Binary files differ
diff --git a/fuzzers/corpora/packfile/72c52d0d98717e21dfee45418a046a19198b5d5d b/fuzzers/corpora/packfile/72c52d0d98717e21dfee45418a046a19198b5d5d
new file mode 100644
index 000000000..922e30683
--- /dev/null
+++ b/fuzzers/corpora/packfile/72c52d0d98717e21dfee45418a046a19198b5d5d
Binary files differ
diff --git a/fuzzers/corpora/packfile/72cec0949c5743ee1df67b41ece5d6806f9bede6 b/fuzzers/corpora/packfile/72cec0949c5743ee1df67b41ece5d6806f9bede6
new file mode 100644
index 000000000..366439dbb
--- /dev/null
+++ b/fuzzers/corpora/packfile/72cec0949c5743ee1df67b41ece5d6806f9bede6
Binary files differ
diff --git a/fuzzers/corpora/packfile/72e6bfb7b881befc0b461334411d70ae227a426a b/fuzzers/corpora/packfile/72e6bfb7b881befc0b461334411d70ae227a426a
new file mode 100644
index 000000000..c7986f687
--- /dev/null
+++ b/fuzzers/corpora/packfile/72e6bfb7b881befc0b461334411d70ae227a426a
Binary files differ
diff --git a/fuzzers/corpora/packfile/73b74736664ad85828ce1be2e29fb4a68d24402b b/fuzzers/corpora/packfile/73b74736664ad85828ce1be2e29fb4a68d24402b
new file mode 100644
index 000000000..009080e8e
--- /dev/null
+++ b/fuzzers/corpora/packfile/73b74736664ad85828ce1be2e29fb4a68d24402b
@@ -0,0 +1 @@
+÷ \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/745bedb79413d20844a8b0e96fbec51b4989c65d b/fuzzers/corpora/packfile/745bedb79413d20844a8b0e96fbec51b4989c65d
new file mode 100644
index 000000000..0022a3ee8
--- /dev/null
+++ b/fuzzers/corpora/packfile/745bedb79413d20844a8b0e96fbec51b4989c65d
@@ -0,0 +1 @@
+ø \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/748142c17e56d0f0ad9e4d6525b39294d81261d6 b/fuzzers/corpora/packfile/748142c17e56d0f0ad9e4d6525b39294d81261d6
new file mode 100644
index 000000000..7ac1cad4d
--- /dev/null
+++ b/fuzzers/corpora/packfile/748142c17e56d0f0ad9e4d6525b39294d81261d6
Binary files differ
diff --git a/fuzzers/corpora/packfile/74dfea2e26741a8778fb942d1d60a84d0759d7a0 b/fuzzers/corpora/packfile/74dfea2e26741a8778fb942d1d60a84d0759d7a0
new file mode 100644
index 000000000..fe307f6da
--- /dev/null
+++ b/fuzzers/corpora/packfile/74dfea2e26741a8778fb942d1d60a84d0759d7a0
@@ -0,0 +1 @@
+˜o \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/767b2efbb7502a2f652a448b471693d32c128677 b/fuzzers/corpora/packfile/767b2efbb7502a2f652a448b471693d32c128677
new file mode 100644
index 000000000..90a8f3a7d
--- /dev/null
+++ b/fuzzers/corpora/packfile/767b2efbb7502a2f652a448b471693d32c128677
Binary files differ
diff --git a/fuzzers/corpora/packfile/78abe558c4277852128d4b91282edcb68f86bdea b/fuzzers/corpora/packfile/78abe558c4277852128d4b91282edcb68f86bdea
new file mode 100644
index 000000000..30644d148
--- /dev/null
+++ b/fuzzers/corpora/packfile/78abe558c4277852128d4b91282edcb68f86bdea
Binary files differ
diff --git a/fuzzers/corpora/packfile/7960246c2db6d39e68dfe93ded358a3acba8f896 b/fuzzers/corpora/packfile/7960246c2db6d39e68dfe93ded358a3acba8f896
new file mode 100644
index 000000000..4d3703ac2
--- /dev/null
+++ b/fuzzers/corpora/packfile/7960246c2db6d39e68dfe93ded358a3acba8f896
Binary files differ
diff --git a/fuzzers/corpora/packfile/7a4ff814176b55af008ad9580201d5e659242f05 b/fuzzers/corpora/packfile/7a4ff814176b55af008ad9580201d5e659242f05
new file mode 100644
index 000000000..029e4fc32
--- /dev/null
+++ b/fuzzers/corpora/packfile/7a4ff814176b55af008ad9580201d5e659242f05
Binary files differ
diff --git a/fuzzers/corpora/packfile/7a752694fce29ded083fbabbc9ff95f5b92a3d9c b/fuzzers/corpora/packfile/7a752694fce29ded083fbabbc9ff95f5b92a3d9c
new file mode 100644
index 000000000..82b5593f6
--- /dev/null
+++ b/fuzzers/corpora/packfile/7a752694fce29ded083fbabbc9ff95f5b92a3d9c
Binary files differ
diff --git a/fuzzers/corpora/packfile/7a81af3e591ac713f81ea1efe93dcf36157d8376 b/fuzzers/corpora/packfile/7a81af3e591ac713f81ea1efe93dcf36157d8376
new file mode 100644
index 000000000..883ad6e8e
--- /dev/null
+++ b/fuzzers/corpora/packfile/7a81af3e591ac713f81ea1efe93dcf36157d8376
@@ -0,0 +1 @@
+o \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/7c957a1fd650f9ae0eadc112837ea451a692affc b/fuzzers/corpora/packfile/7c957a1fd650f9ae0eadc112837ea451a692affc
new file mode 100644
index 000000000..251bc956c
--- /dev/null
+++ b/fuzzers/corpora/packfile/7c957a1fd650f9ae0eadc112837ea451a692affc
Binary files differ
diff --git a/fuzzers/corpora/packfile/7cda4ab6a0daf50f675d5225cbc166c86a8ef95f b/fuzzers/corpora/packfile/7cda4ab6a0daf50f675d5225cbc166c86a8ef95f
new file mode 100644
index 000000000..9e58e190e
--- /dev/null
+++ b/fuzzers/corpora/packfile/7cda4ab6a0daf50f675d5225cbc166c86a8ef95f
Binary files differ
diff --git a/fuzzers/corpora/packfile/7cf184f4c67ad58283ecb19349720b0cae756829 b/fuzzers/corpora/packfile/7cf184f4c67ad58283ecb19349720b0cae756829
new file mode 100644
index 000000000..8ac2eb508
--- /dev/null
+++ b/fuzzers/corpora/packfile/7cf184f4c67ad58283ecb19349720b0cae756829
@@ -0,0 +1 @@
+H \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/7df1ea8d86d601c3bd39977ea85e5f74c9db6acb b/fuzzers/corpora/packfile/7df1ea8d86d601c3bd39977ea85e5f74c9db6acb
new file mode 100644
index 000000000..0865a4aad
--- /dev/null
+++ b/fuzzers/corpora/packfile/7df1ea8d86d601c3bd39977ea85e5f74c9db6acb
Binary files differ
diff --git a/fuzzers/corpora/packfile/820ec3e39089d863641a1be6942445db3ff34270 b/fuzzers/corpora/packfile/820ec3e39089d863641a1be6942445db3ff34270
new file mode 100644
index 000000000..a7a949a73
--- /dev/null
+++ b/fuzzers/corpora/packfile/820ec3e39089d863641a1be6942445db3ff34270
Binary files differ
diff --git a/fuzzers/corpora/packfile/827704fd978bd02a46268b7396b202a52ad261ed b/fuzzers/corpora/packfile/827704fd978bd02a46268b7396b202a52ad261ed
new file mode 100644
index 000000000..855e5fcd6
--- /dev/null
+++ b/fuzzers/corpora/packfile/827704fd978bd02a46268b7396b202a52ad261ed
Binary files differ
diff --git a/fuzzers/corpora/packfile/828acfc1d49a0fdbcd9f238138ff65582c2a9fc8 b/fuzzers/corpora/packfile/828acfc1d49a0fdbcd9f238138ff65582c2a9fc8
new file mode 100644
index 000000000..cf479adb0
--- /dev/null
+++ b/fuzzers/corpora/packfile/828acfc1d49a0fdbcd9f238138ff65582c2a9fc8
Binary files differ
diff --git a/fuzzers/corpora/packfile/8306a2f04a47fe4c95098675ffa25c074ecd89de b/fuzzers/corpora/packfile/8306a2f04a47fe4c95098675ffa25c074ecd89de
new file mode 100644
index 000000000..44cda73a2
--- /dev/null
+++ b/fuzzers/corpora/packfile/8306a2f04a47fe4c95098675ffa25c074ecd89de
Binary files differ
diff --git a/fuzzers/corpora/packfile/8327db1c6a884d8b3e3cefd94cec9eb94bffae0a b/fuzzers/corpora/packfile/8327db1c6a884d8b3e3cefd94cec9eb94bffae0a
new file mode 100644
index 000000000..315e1e666
--- /dev/null
+++ b/fuzzers/corpora/packfile/8327db1c6a884d8b3e3cefd94cec9eb94bffae0a
Binary files differ
diff --git a/fuzzers/corpora/packfile/847f4e42f8f2730a48d19951d8829621b2e70082 b/fuzzers/corpora/packfile/847f4e42f8f2730a48d19951d8829621b2e70082
new file mode 100644
index 000000000..22952d506
--- /dev/null
+++ b/fuzzers/corpora/packfile/847f4e42f8f2730a48d19951d8829621b2e70082
Binary files differ
diff --git a/fuzzers/corpora/packfile/84a516841ba77a5b4648de2cd0dfcb30ea46dbb4 b/fuzzers/corpora/packfile/84a516841ba77a5b4648de2cd0dfcb30ea46dbb4
new file mode 100644
index 000000000..3410062ba
--- /dev/null
+++ b/fuzzers/corpora/packfile/84a516841ba77a5b4648de2cd0dfcb30ea46dbb4
@@ -0,0 +1 @@
+c \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/8552526f5aba95119c0b95b61cd40386e7a3738b b/fuzzers/corpora/packfile/8552526f5aba95119c0b95b61cd40386e7a3738b
new file mode 100644
index 000000000..6a29f0f41
--- /dev/null
+++ b/fuzzers/corpora/packfile/8552526f5aba95119c0b95b61cd40386e7a3738b
Binary files differ
diff --git a/fuzzers/corpora/packfile/8565db62ac64209ff009ac40e7c2d2ac4ae944eb b/fuzzers/corpora/packfile/8565db62ac64209ff009ac40e7c2d2ac4ae944eb
new file mode 100644
index 000000000..066b1daa9
--- /dev/null
+++ b/fuzzers/corpora/packfile/8565db62ac64209ff009ac40e7c2d2ac4ae944eb
Binary files differ
diff --git a/fuzzers/corpora/packfile/859b3346967c5c3c136459e565b402f9a936aa0d b/fuzzers/corpora/packfile/859b3346967c5c3c136459e565b402f9a936aa0d
new file mode 100644
index 000000000..9c10c980f
--- /dev/null
+++ b/fuzzers/corpora/packfile/859b3346967c5c3c136459e565b402f9a936aa0d
Binary files differ
diff --git a/fuzzers/corpora/packfile/86a69caf3c5866d78d80da087b1b843cfea5e907 b/fuzzers/corpora/packfile/86a69caf3c5866d78d80da087b1b843cfea5e907
new file mode 100644
index 000000000..b122e3788
--- /dev/null
+++ b/fuzzers/corpora/packfile/86a69caf3c5866d78d80da087b1b843cfea5e907
Binary files differ
diff --git a/fuzzers/corpora/packfile/86e1fb54a04fc18ee482b794ba3b2b306f6515d4 b/fuzzers/corpora/packfile/86e1fb54a04fc18ee482b794ba3b2b306f6515d4
new file mode 100644
index 000000000..7d3105517
--- /dev/null
+++ b/fuzzers/corpora/packfile/86e1fb54a04fc18ee482b794ba3b2b306f6515d4
Binary files differ
diff --git a/fuzzers/corpora/packfile/86f217ee467d31ad9ad2a8c502b91279cd7f1c40 b/fuzzers/corpora/packfile/86f217ee467d31ad9ad2a8c502b91279cd7f1c40
new file mode 100644
index 000000000..9951e2666
--- /dev/null
+++ b/fuzzers/corpora/packfile/86f217ee467d31ad9ad2a8c502b91279cd7f1c40
Binary files differ
diff --git a/fuzzers/corpora/packfile/8768a53e1d4c182907306300f9ca90cfd8018383 b/fuzzers/corpora/packfile/8768a53e1d4c182907306300f9ca90cfd8018383
new file mode 100644
index 000000000..3ea63c2cc
--- /dev/null
+++ b/fuzzers/corpora/packfile/8768a53e1d4c182907306300f9ca90cfd8018383
@@ -0,0 +1 @@
+… \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/8834a7aac170c494f45aa4da71b9605a52d82435 b/fuzzers/corpora/packfile/8834a7aac170c494f45aa4da71b9605a52d82435
new file mode 100644
index 000000000..40d2f6059
--- /dev/null
+++ b/fuzzers/corpora/packfile/8834a7aac170c494f45aa4da71b9605a52d82435
Binary files differ
diff --git a/fuzzers/corpora/packfile/883f023f38a031d8a8e8ce2cba6614b9bff5d41f b/fuzzers/corpora/packfile/883f023f38a031d8a8e8ce2cba6614b9bff5d41f
new file mode 100644
index 000000000..30928b6e0
--- /dev/null
+++ b/fuzzers/corpora/packfile/883f023f38a031d8a8e8ce2cba6614b9bff5d41f
Binary files differ
diff --git a/fuzzers/corpora/packfile/88738071086eb04e47b77d1ca28b35ddbfaa0968 b/fuzzers/corpora/packfile/88738071086eb04e47b77d1ca28b35ddbfaa0968
new file mode 100644
index 000000000..7c1f28e44
--- /dev/null
+++ b/fuzzers/corpora/packfile/88738071086eb04e47b77d1ca28b35ddbfaa0968
Binary files differ
diff --git a/fuzzers/corpora/packfile/892aef744c87c6ee4ba3dd457c7ca02ba3d359bd b/fuzzers/corpora/packfile/892aef744c87c6ee4ba3dd457c7ca02ba3d359bd
new file mode 100644
index 000000000..16e6f0a7b
--- /dev/null
+++ b/fuzzers/corpora/packfile/892aef744c87c6ee4ba3dd457c7ca02ba3d359bd
Binary files differ
diff --git a/fuzzers/corpora/packfile/8afb5c282d23c4055500f88a10b26383c682c900 b/fuzzers/corpora/packfile/8afb5c282d23c4055500f88a10b26383c682c900
new file mode 100644
index 000000000..cf91507b4
--- /dev/null
+++ b/fuzzers/corpora/packfile/8afb5c282d23c4055500f88a10b26383c682c900
Binary files differ
diff --git a/fuzzers/corpora/packfile/8b3dfce4cd7b8942eedb52af0e9ca4caa5c6de61 b/fuzzers/corpora/packfile/8b3dfce4cd7b8942eedb52af0e9ca4caa5c6de61
new file mode 100644
index 000000000..4c8cc0c22
--- /dev/null
+++ b/fuzzers/corpora/packfile/8b3dfce4cd7b8942eedb52af0e9ca4caa5c6de61
Binary files differ
diff --git a/fuzzers/corpora/packfile/8c2cccf751bb5844bea8dc63c22e3f8e4489411e b/fuzzers/corpora/packfile/8c2cccf751bb5844bea8dc63c22e3f8e4489411e
new file mode 100644
index 000000000..70e2d300a
--- /dev/null
+++ b/fuzzers/corpora/packfile/8c2cccf751bb5844bea8dc63c22e3f8e4489411e
Binary files differ
diff --git a/fuzzers/corpora/packfile/8e30894298502ba4d43af98f1ec3088f9b8f29d5 b/fuzzers/corpora/packfile/8e30894298502ba4d43af98f1ec3088f9b8f29d5
new file mode 100644
index 000000000..c4df8023c
--- /dev/null
+++ b/fuzzers/corpora/packfile/8e30894298502ba4d43af98f1ec3088f9b8f29d5
Binary files differ
diff --git a/fuzzers/corpora/packfile/8eb4d738f7170d2e0594b779f782eb3171c9d421 b/fuzzers/corpora/packfile/8eb4d738f7170d2e0594b779f782eb3171c9d421
new file mode 100644
index 000000000..410a7d63a
--- /dev/null
+++ b/fuzzers/corpora/packfile/8eb4d738f7170d2e0594b779f782eb3171c9d421
Binary files differ
diff --git a/fuzzers/corpora/packfile/8f46a043da3aa5d466ade170e62b0b9f362b4c5b b/fuzzers/corpora/packfile/8f46a043da3aa5d466ade170e62b0b9f362b4c5b
new file mode 100644
index 000000000..172736f8c
--- /dev/null
+++ b/fuzzers/corpora/packfile/8f46a043da3aa5d466ade170e62b0b9f362b4c5b
Binary files differ
diff --git a/fuzzers/corpora/packfile/9295f39686016bf3abb1d6e9924d6725c1263920 b/fuzzers/corpora/packfile/9295f39686016bf3abb1d6e9924d6725c1263920
new file mode 100644
index 000000000..04be53351
--- /dev/null
+++ b/fuzzers/corpora/packfile/9295f39686016bf3abb1d6e9924d6725c1263920
Binary files differ
diff --git a/fuzzers/corpora/packfile/92fa2c2237724e7ba49e9c59adad8d61ce400bbf b/fuzzers/corpora/packfile/92fa2c2237724e7ba49e9c59adad8d61ce400bbf
new file mode 100644
index 000000000..b890df0d3
--- /dev/null
+++ b/fuzzers/corpora/packfile/92fa2c2237724e7ba49e9c59adad8d61ce400bbf
Binary files differ
diff --git a/fuzzers/corpora/packfile/936548b53e1a1e30cb30747a87203abd4eae78ea b/fuzzers/corpora/packfile/936548b53e1a1e30cb30747a87203abd4eae78ea
new file mode 100644
index 000000000..21717701c
--- /dev/null
+++ b/fuzzers/corpora/packfile/936548b53e1a1e30cb30747a87203abd4eae78ea
Binary files differ
diff --git a/fuzzers/corpora/packfile/9835ad3ff27939bc1315632d6a22980b377c36e4 b/fuzzers/corpora/packfile/9835ad3ff27939bc1315632d6a22980b377c36e4
new file mode 100644
index 000000000..025ad5085
--- /dev/null
+++ b/fuzzers/corpora/packfile/9835ad3ff27939bc1315632d6a22980b377c36e4
@@ -0,0 +1 @@
+˜Pÿðÿðïÿðï \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/9857740c36a95415fa3be04cdf184db7b41a8b3e b/fuzzers/corpora/packfile/9857740c36a95415fa3be04cdf184db7b41a8b3e
new file mode 100644
index 000000000..7d3242f10
--- /dev/null
+++ b/fuzzers/corpora/packfile/9857740c36a95415fa3be04cdf184db7b41a8b3e
Binary files differ
diff --git a/fuzzers/corpora/packfile/98c35b9d5e7b430d0d4ef70f642d8e2f3266b6d4 b/fuzzers/corpora/packfile/98c35b9d5e7b430d0d4ef70f642d8e2f3266b6d4
new file mode 100644
index 000000000..ea7c76eb1
--- /dev/null
+++ b/fuzzers/corpora/packfile/98c35b9d5e7b430d0d4ef70f642d8e2f3266b6d4
Binary files differ
diff --git a/fuzzers/corpora/packfile/9929b50ac145c0781a0347be1559764edc668173 b/fuzzers/corpora/packfile/9929b50ac145c0781a0347be1559764edc668173
new file mode 100644
index 000000000..33f1e92c4
--- /dev/null
+++ b/fuzzers/corpora/packfile/9929b50ac145c0781a0347be1559764edc668173
@@ -0,0 +1 @@
+žPACK³³ \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/9bf6a450d87badf2d495c2df37081ea16156915a b/fuzzers/corpora/packfile/9bf6a450d87badf2d495c2df37081ea16156915a
new file mode 100644
index 000000000..ff4c48389
--- /dev/null
+++ b/fuzzers/corpora/packfile/9bf6a450d87badf2d495c2df37081ea16156915a
Binary files differ
diff --git a/fuzzers/corpora/packfile/9bffb3ff7a4429144305b770162074bbffe39ce9 b/fuzzers/corpora/packfile/9bffb3ff7a4429144305b770162074bbffe39ce9
new file mode 100644
index 000000000..aa9c335f5
--- /dev/null
+++ b/fuzzers/corpora/packfile/9bffb3ff7a4429144305b770162074bbffe39ce9
Binary files differ
diff --git a/fuzzers/corpora/packfile/9c040d3207196e3aeee0df389170d6e59733ba0f b/fuzzers/corpora/packfile/9c040d3207196e3aeee0df389170d6e59733ba0f
new file mode 100644
index 000000000..4c4e68adb
--- /dev/null
+++ b/fuzzers/corpora/packfile/9c040d3207196e3aeee0df389170d6e59733ba0f
Binary files differ
diff --git a/fuzzers/corpora/packfile/9c740d0f3b8875a3b19f1cf1a88d5192a997a68d b/fuzzers/corpora/packfile/9c740d0f3b8875a3b19f1cf1a88d5192a997a68d
new file mode 100644
index 000000000..1f1ea6537
--- /dev/null
+++ b/fuzzers/corpora/packfile/9c740d0f3b8875a3b19f1cf1a88d5192a997a68d
Binary files differ
diff --git a/fuzzers/corpora/packfile/9cf72097400efb70d06179e6b00abb4cdec74e66 b/fuzzers/corpora/packfile/9cf72097400efb70d06179e6b00abb4cdec74e66
new file mode 100644
index 000000000..25cfb391f
--- /dev/null
+++ b/fuzzers/corpora/packfile/9cf72097400efb70d06179e6b00abb4cdec74e66
Binary files differ
diff --git a/fuzzers/corpora/packfile/9d36c270ef1f14214742562238dc747242d4756e b/fuzzers/corpora/packfile/9d36c270ef1f14214742562238dc747242d4756e
new file mode 100644
index 000000000..c54dc55fa
--- /dev/null
+++ b/fuzzers/corpora/packfile/9d36c270ef1f14214742562238dc747242d4756e
Binary files differ
diff --git a/fuzzers/corpora/packfile/9fb415ccadc8e7b0f38646ec5782d5895111e259 b/fuzzers/corpora/packfile/9fb415ccadc8e7b0f38646ec5782d5895111e259
new file mode 100644
index 000000000..473ebb708
--- /dev/null
+++ b/fuzzers/corpora/packfile/9fb415ccadc8e7b0f38646ec5782d5895111e259
Binary files differ
diff --git a/fuzzers/corpora/packfile/a13b7fbb454fe3bdebd07a51d466484aa41ee142 b/fuzzers/corpora/packfile/a13b7fbb454fe3bdebd07a51d466484aa41ee142
new file mode 100644
index 000000000..48edf15f5
--- /dev/null
+++ b/fuzzers/corpora/packfile/a13b7fbb454fe3bdebd07a51d466484aa41ee142
Binary files differ
diff --git a/fuzzers/corpora/packfile/a1a7715c7596c77b892dc6d4debb7c108ca4ef97 b/fuzzers/corpora/packfile/a1a7715c7596c77b892dc6d4debb7c108ca4ef97
new file mode 100644
index 000000000..395831125
--- /dev/null
+++ b/fuzzers/corpora/packfile/a1a7715c7596c77b892dc6d4debb7c108ca4ef97
@@ -0,0 +1 @@
+ù \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/a1ac8b656af02b56aefe6029db36b1af9fb664ef b/fuzzers/corpora/packfile/a1ac8b656af02b56aefe6029db36b1af9fb664ef
new file mode 100644
index 000000000..eeae76972
--- /dev/null
+++ b/fuzzers/corpora/packfile/a1ac8b656af02b56aefe6029db36b1af9fb664ef
Binary files differ
diff --git a/fuzzers/corpora/packfile/a343687e2522222c2d49e8cb18d3feda64cf1d66 b/fuzzers/corpora/packfile/a343687e2522222c2d49e8cb18d3feda64cf1d66
new file mode 100644
index 000000000..7d24f8cde
--- /dev/null
+++ b/fuzzers/corpora/packfile/a343687e2522222c2d49e8cb18d3feda64cf1d66
Binary files differ
diff --git a/fuzzers/corpora/packfile/a6f57425137e9aa54537f0b3f5364ce165aedb0a b/fuzzers/corpora/packfile/a6f57425137e9aa54537f0b3f5364ce165aedb0a
new file mode 100644
index 000000000..d50394efd
--- /dev/null
+++ b/fuzzers/corpora/packfile/a6f57425137e9aa54537f0b3f5364ce165aedb0a
@@ -0,0 +1 @@
+Ì \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/a73df4ce29f75cc638a7a2d823fee57d909ab681 b/fuzzers/corpora/packfile/a73df4ce29f75cc638a7a2d823fee57d909ab681
new file mode 100644
index 000000000..1a443b910
--- /dev/null
+++ b/fuzzers/corpora/packfile/a73df4ce29f75cc638a7a2d823fee57d909ab681
Binary files differ
diff --git a/fuzzers/corpora/packfile/a7ee38bb7be4fc44198cb2685d9601dcf2b9f569 b/fuzzers/corpora/packfile/a7ee38bb7be4fc44198cb2685d9601dcf2b9f569
new file mode 100644
index 000000000..449e49efc
--- /dev/null
+++ b/fuzzers/corpora/packfile/a7ee38bb7be4fc44198cb2685d9601dcf2b9f569
@@ -0,0 +1 @@
+K \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/a8b9b91157274e617bf4ac5045fc0c6ac97e76f7 b/fuzzers/corpora/packfile/a8b9b91157274e617bf4ac5045fc0c6ac97e76f7
new file mode 100644
index 000000000..8e4277ba8
--- /dev/null
+++ b/fuzzers/corpora/packfile/a8b9b91157274e617bf4ac5045fc0c6ac97e76f7
Binary files differ
diff --git a/fuzzers/corpora/packfile/a9c697f383f59a3b0642cd55b88190bce6201bae b/fuzzers/corpora/packfile/a9c697f383f59a3b0642cd55b88190bce6201bae
new file mode 100644
index 000000000..990de0a2a
--- /dev/null
+++ b/fuzzers/corpora/packfile/a9c697f383f59a3b0642cd55b88190bce6201bae
Binary files differ
diff --git a/fuzzers/corpora/packfile/ab064cd6847c0fa546bbec4241eb9b095e0e73da b/fuzzers/corpora/packfile/ab064cd6847c0fa546bbec4241eb9b095e0e73da
new file mode 100644
index 000000000..b95307b1c
--- /dev/null
+++ b/fuzzers/corpora/packfile/ab064cd6847c0fa546bbec4241eb9b095e0e73da
Binary files differ
diff --git a/fuzzers/corpora/packfile/ab2c64588d3d9dc5c54c48d414e6d46d6a78cfa6 b/fuzzers/corpora/packfile/ab2c64588d3d9dc5c54c48d414e6d46d6a78cfa6
new file mode 100644
index 000000000..02f5e7953
--- /dev/null
+++ b/fuzzers/corpora/packfile/ab2c64588d3d9dc5c54c48d414e6d46d6a78cfa6
Binary files differ
diff --git a/fuzzers/corpora/packfile/abe729b06750880778312618dcebb43257ec03e0 b/fuzzers/corpora/packfile/abe729b06750880778312618dcebb43257ec03e0
new file mode 100644
index 000000000..fc1860b0f
--- /dev/null
+++ b/fuzzers/corpora/packfile/abe729b06750880778312618dcebb43257ec03e0
Binary files differ
diff --git a/fuzzers/corpora/packfile/ac1bf5a5fe61e5784f72b364ef1bcddfb0d13716 b/fuzzers/corpora/packfile/ac1bf5a5fe61e5784f72b364ef1bcddfb0d13716
new file mode 100644
index 000000000..5b9fb92c3
--- /dev/null
+++ b/fuzzers/corpora/packfile/ac1bf5a5fe61e5784f72b364ef1bcddfb0d13716
Binary files differ
diff --git a/fuzzers/corpora/packfile/ac47b6d3f0e479df3292131535f8e0d99c288de9 b/fuzzers/corpora/packfile/ac47b6d3f0e479df3292131535f8e0d99c288de9
new file mode 100644
index 000000000..def06efe6
--- /dev/null
+++ b/fuzzers/corpora/packfile/ac47b6d3f0e479df3292131535f8e0d99c288de9
Binary files differ
diff --git a/fuzzers/corpora/packfile/ac9231da4082430afe8f4d40127814c613648d8e b/fuzzers/corpora/packfile/ac9231da4082430afe8f4d40127814c613648d8e
new file mode 100644
index 000000000..501a6bbaf
--- /dev/null
+++ b/fuzzers/corpora/packfile/ac9231da4082430afe8f4d40127814c613648d8e
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/ace9ffcaa273c01c0eb60381321e47edf4842332 b/fuzzers/corpora/packfile/ace9ffcaa273c01c0eb60381321e47edf4842332
new file mode 100644
index 000000000..783b97f1a
--- /dev/null
+++ b/fuzzers/corpora/packfile/ace9ffcaa273c01c0eb60381321e47edf4842332
Binary files differ
diff --git a/fuzzers/corpora/packfile/ad6ba9b0bc076987efbeb11ce3fc92bc1df69d0a b/fuzzers/corpora/packfile/ad6ba9b0bc076987efbeb11ce3fc92bc1df69d0a
new file mode 100644
index 000000000..d6e99fca8
--- /dev/null
+++ b/fuzzers/corpora/packfile/ad6ba9b0bc076987efbeb11ce3fc92bc1df69d0a
Binary files differ
diff --git a/fuzzers/corpora/packfile/ae99dcb9b5e1b09aa5df6bb2fada3a3de61268fe b/fuzzers/corpora/packfile/ae99dcb9b5e1b09aa5df6bb2fada3a3de61268fe
new file mode 100644
index 000000000..09e47fd9b
--- /dev/null
+++ b/fuzzers/corpora/packfile/ae99dcb9b5e1b09aa5df6bb2fada3a3de61268fe
Binary files differ
diff --git a/fuzzers/corpora/packfile/aeeacf0499ace69549fe2c76757d4948ba65a10b b/fuzzers/corpora/packfile/aeeacf0499ace69549fe2c76757d4948ba65a10b
new file mode 100644
index 000000000..4832b6e5f
--- /dev/null
+++ b/fuzzers/corpora/packfile/aeeacf0499ace69549fe2c76757d4948ba65a10b
Binary files differ
diff --git a/fuzzers/corpora/packfile/af6614c37604ee5d3f7b00cddca761a8776283b5 b/fuzzers/corpora/packfile/af6614c37604ee5d3f7b00cddca761a8776283b5
new file mode 100644
index 000000000..f41a79900
--- /dev/null
+++ b/fuzzers/corpora/packfile/af6614c37604ee5d3f7b00cddca761a8776283b5
Binary files differ
diff --git a/fuzzers/corpora/packfile/afd44f8c385a922c8caacc1ea5688d324bad5b39 b/fuzzers/corpora/packfile/afd44f8c385a922c8caacc1ea5688d324bad5b39
new file mode 100644
index 000000000..eec211030
--- /dev/null
+++ b/fuzzers/corpora/packfile/afd44f8c385a922c8caacc1ea5688d324bad5b39
Binary files differ
diff --git a/fuzzers/corpora/packfile/aff024fe4ab0fece4091de044c58c9ae4233383a b/fuzzers/corpora/packfile/aff024fe4ab0fece4091de044c58c9ae4233383a
new file mode 100644
index 000000000..6bf0c97a7
--- /dev/null
+++ b/fuzzers/corpora/packfile/aff024fe4ab0fece4091de044c58c9ae4233383a
@@ -0,0 +1 @@
+w \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/b1f86f05d4928c8393fe0f138c0714df3978f0bb b/fuzzers/corpora/packfile/b1f86f05d4928c8393fe0f138c0714df3978f0bb
new file mode 100644
index 000000000..a36092c18
--- /dev/null
+++ b/fuzzers/corpora/packfile/b1f86f05d4928c8393fe0f138c0714df3978f0bb
Binary files differ
diff --git a/fuzzers/corpora/packfile/b452cd4b70f2827e3cbd6d5dd20f678b6e55f813 b/fuzzers/corpora/packfile/b452cd4b70f2827e3cbd6d5dd20f678b6e55f813
new file mode 100644
index 000000000..f763b0d07
--- /dev/null
+++ b/fuzzers/corpora/packfile/b452cd4b70f2827e3cbd6d5dd20f678b6e55f813
Binary files differ
diff --git a/fuzzers/corpora/packfile/b491dbad4c3edc87aa5a7f12b2c9a447a712c20d b/fuzzers/corpora/packfile/b491dbad4c3edc87aa5a7f12b2c9a447a712c20d
new file mode 100644
index 000000000..9e7d3e050
--- /dev/null
+++ b/fuzzers/corpora/packfile/b491dbad4c3edc87aa5a7f12b2c9a447a712c20d
Binary files differ
diff --git a/fuzzers/corpora/packfile/b54664965911c6fe91e18cd01b68a75c8183b530 b/fuzzers/corpora/packfile/b54664965911c6fe91e18cd01b68a75c8183b530
new file mode 100644
index 000000000..39e8d6602
--- /dev/null
+++ b/fuzzers/corpora/packfile/b54664965911c6fe91e18cd01b68a75c8183b530
@@ -0,0 +1 @@
+ý \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/b68542373c05c0ed25231d09955b2c699d37c45b b/fuzzers/corpora/packfile/b68542373c05c0ed25231d09955b2c699d37c45b
new file mode 100644
index 000000000..050ac90ec
--- /dev/null
+++ b/fuzzers/corpora/packfile/b68542373c05c0ed25231d09955b2c699d37c45b
@@ -0,0 +1 @@
+þ \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/b706e78cf7110a78dfccce991cd4ce22c6fd898a b/fuzzers/corpora/packfile/b706e78cf7110a78dfccce991cd4ce22c6fd898a
new file mode 100644
index 000000000..e905006d6
--- /dev/null
+++ b/fuzzers/corpora/packfile/b706e78cf7110a78dfccce991cd4ce22c6fd898a
Binary files differ
diff --git a/fuzzers/corpora/packfile/b8d3910a75ad8a7058f9c3f202f8eb27419137d7 b/fuzzers/corpora/packfile/b8d3910a75ad8a7058f9c3f202f8eb27419137d7
new file mode 100644
index 000000000..0a0adc4ea
--- /dev/null
+++ b/fuzzers/corpora/packfile/b8d3910a75ad8a7058f9c3f202f8eb27419137d7
Binary files differ
diff --git a/fuzzers/corpora/packfile/b93abe6094fb4ebbfa7414fbceb7199ce766075b b/fuzzers/corpora/packfile/b93abe6094fb4ebbfa7414fbceb7199ce766075b
new file mode 100644
index 000000000..fb7b65106
--- /dev/null
+++ b/fuzzers/corpora/packfile/b93abe6094fb4ebbfa7414fbceb7199ce766075b
Binary files differ
diff --git a/fuzzers/corpora/packfile/b9a64cc0694f3ac4a3c530c721bbf69026192187 b/fuzzers/corpora/packfile/b9a64cc0694f3ac4a3c530c721bbf69026192187
new file mode 100644
index 000000000..c775b6fdb
--- /dev/null
+++ b/fuzzers/corpora/packfile/b9a64cc0694f3ac4a3c530c721bbf69026192187
Binary files differ
diff --git a/fuzzers/corpora/packfile/b9e5319eca8fbc26e5c322e0b151ed8ed60628d1 b/fuzzers/corpora/packfile/b9e5319eca8fbc26e5c322e0b151ed8ed60628d1
new file mode 100644
index 000000000..54e04316a
--- /dev/null
+++ b/fuzzers/corpora/packfile/b9e5319eca8fbc26e5c322e0b151ed8ed60628d1
Binary files differ
diff --git a/fuzzers/corpora/packfile/ba390745a04c5394601f7aa73fe795097b814d1a b/fuzzers/corpora/packfile/ba390745a04c5394601f7aa73fe795097b814d1a
new file mode 100644
index 000000000..1738d2d27
--- /dev/null
+++ b/fuzzers/corpora/packfile/ba390745a04c5394601f7aa73fe795097b814d1a
Binary files differ
diff --git a/fuzzers/corpora/packfile/bb7d065b776833337d3e1a3071de4d5d2759d78b b/fuzzers/corpora/packfile/bb7d065b776833337d3e1a3071de4d5d2759d78b
new file mode 100644
index 000000000..2882b1818
--- /dev/null
+++ b/fuzzers/corpora/packfile/bb7d065b776833337d3e1a3071de4d5d2759d78b
@@ -0,0 +1 @@
+“ \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/bb99cf0bb3e5d75d59300e6ca9cb1f67ce315e3a b/fuzzers/corpora/packfile/bb99cf0bb3e5d75d59300e6ca9cb1f67ce315e3a
new file mode 100644
index 000000000..7450e2654
--- /dev/null
+++ b/fuzzers/corpora/packfile/bb99cf0bb3e5d75d59300e6ca9cb1f67ce315e3a
Binary files differ
diff --git a/fuzzers/corpora/packfile/bd9722d91e0615cbdae3cee3476ec6181fbad98d b/fuzzers/corpora/packfile/bd9722d91e0615cbdae3cee3476ec6181fbad98d
new file mode 100644
index 000000000..a8f95b69a
--- /dev/null
+++ b/fuzzers/corpora/packfile/bd9722d91e0615cbdae3cee3476ec6181fbad98d
Binary files differ
diff --git a/fuzzers/corpora/packfile/bf8b4530d8d246dd74ac53a13471bba17941dff7 b/fuzzers/corpora/packfile/bf8b4530d8d246dd74ac53a13471bba17941dff7
new file mode 100644
index 000000000..6b2aaa764
--- /dev/null
+++ b/fuzzers/corpora/packfile/bf8b4530d8d246dd74ac53a13471bba17941dff7
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/bffc4698ad4aaddd977fe857da20858aa6654263 b/fuzzers/corpora/packfile/bffc4698ad4aaddd977fe857da20858aa6654263
new file mode 100644
index 000000000..b7cde14f5
--- /dev/null
+++ b/fuzzers/corpora/packfile/bffc4698ad4aaddd977fe857da20858aa6654263
Binary files differ
diff --git a/fuzzers/corpora/packfile/c0ea828d8f9c4a2c0fc6253908cd283f6c7994a1 b/fuzzers/corpora/packfile/c0ea828d8f9c4a2c0fc6253908cd283f6c7994a1
new file mode 100644
index 000000000..ab567632e
--- /dev/null
+++ b/fuzzers/corpora/packfile/c0ea828d8f9c4a2c0fc6253908cd283f6c7994a1
Binary files differ
diff --git a/fuzzers/corpora/packfile/c151b760696d665265187501c51f38cd84503634 b/fuzzers/corpora/packfile/c151b760696d665265187501c51f38cd84503634
new file mode 100644
index 000000000..4be246088
--- /dev/null
+++ b/fuzzers/corpora/packfile/c151b760696d665265187501c51f38cd84503634
@@ -0,0 +1 @@
+Ô \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/c16f90096603258174790bc85f076413dad0e228 b/fuzzers/corpora/packfile/c16f90096603258174790bc85f076413dad0e228
new file mode 100644
index 000000000..d736f273c
--- /dev/null
+++ b/fuzzers/corpora/packfile/c16f90096603258174790bc85f076413dad0e228
Binary files differ
diff --git a/fuzzers/corpora/packfile/c20fc8fb8f1d44050c281089191b8eac2dc9444c b/fuzzers/corpora/packfile/c20fc8fb8f1d44050c281089191b8eac2dc9444c
new file mode 100644
index 000000000..221c4826e
--- /dev/null
+++ b/fuzzers/corpora/packfile/c20fc8fb8f1d44050c281089191b8eac2dc9444c
Binary files differ
diff --git a/fuzzers/corpora/packfile/c2143b1a0db17957bec1b41bb2e5f75aa135981e b/fuzzers/corpora/packfile/c2143b1a0db17957bec1b41bb2e5f75aa135981e
new file mode 100644
index 000000000..52e60b449
--- /dev/null
+++ b/fuzzers/corpora/packfile/c2143b1a0db17957bec1b41bb2e5f75aa135981e
@@ -0,0 +1 @@
+ \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/c22c3fba53bb2c5579b47852fa9ec54a88c03472 b/fuzzers/corpora/packfile/c22c3fba53bb2c5579b47852fa9ec54a88c03472
new file mode 100644
index 000000000..45df7781a
--- /dev/null
+++ b/fuzzers/corpora/packfile/c22c3fba53bb2c5579b47852fa9ec54a88c03472
Binary files differ
diff --git a/fuzzers/corpora/packfile/c297564cff1bb4f7933221050cfcffa36c59f691 b/fuzzers/corpora/packfile/c297564cff1bb4f7933221050cfcffa36c59f691
new file mode 100644
index 000000000..751e6bb63
--- /dev/null
+++ b/fuzzers/corpora/packfile/c297564cff1bb4f7933221050cfcffa36c59f691
Binary files differ
diff --git a/fuzzers/corpora/packfile/c2c4da76233acd3efe08eaebb7ae8dc9b3036527 b/fuzzers/corpora/packfile/c2c4da76233acd3efe08eaebb7ae8dc9b3036527
new file mode 100644
index 000000000..5533ee378
--- /dev/null
+++ b/fuzzers/corpora/packfile/c2c4da76233acd3efe08eaebb7ae8dc9b3036527
Binary files differ
diff --git a/fuzzers/corpora/packfile/c3d47118536d19a8d1a601978510cc24344aa8df b/fuzzers/corpora/packfile/c3d47118536d19a8d1a601978510cc24344aa8df
new file mode 100644
index 000000000..dac425171
--- /dev/null
+++ b/fuzzers/corpora/packfile/c3d47118536d19a8d1a601978510cc24344aa8df
Binary files differ
diff --git a/fuzzers/corpora/packfile/c4cbb032db94c57061003a85d30bdf4117979b1e b/fuzzers/corpora/packfile/c4cbb032db94c57061003a85d30bdf4117979b1e
new file mode 100644
index 000000000..e46252ee4
--- /dev/null
+++ b/fuzzers/corpora/packfile/c4cbb032db94c57061003a85d30bdf4117979b1e
Binary files differ
diff --git a/fuzzers/corpora/packfile/c7090127a03c0e7230c11a649e4f98fcb4ca2b75 b/fuzzers/corpora/packfile/c7090127a03c0e7230c11a649e4f98fcb4ca2b75
new file mode 100644
index 000000000..7009494e7
--- /dev/null
+++ b/fuzzers/corpora/packfile/c7090127a03c0e7230c11a649e4f98fcb4ca2b75
Binary files differ
diff --git a/fuzzers/corpora/packfile/c8b839665bd381ff7d006b1b08c35f94f1818556 b/fuzzers/corpora/packfile/c8b839665bd381ff7d006b1b08c35f94f1818556
new file mode 100644
index 000000000..234b26a69
--- /dev/null
+++ b/fuzzers/corpora/packfile/c8b839665bd381ff7d006b1b08c35f94f1818556
Binary files differ
diff --git a/fuzzers/corpora/packfile/ca8c7c16d1d6b60e951dcfb558cc97e14231c750 b/fuzzers/corpora/packfile/ca8c7c16d1d6b60e951dcfb558cc97e14231c750
new file mode 100644
index 000000000..e0b7aecf4
--- /dev/null
+++ b/fuzzers/corpora/packfile/ca8c7c16d1d6b60e951dcfb558cc97e14231c750
Binary files differ
diff --git a/fuzzers/corpora/packfile/cb46c744c83541a0900e1e61780c18d43031a08b b/fuzzers/corpora/packfile/cb46c744c83541a0900e1e61780c18d43031a08b
new file mode 100644
index 000000000..825026bf2
--- /dev/null
+++ b/fuzzers/corpora/packfile/cb46c744c83541a0900e1e61780c18d43031a08b
@@ -0,0 +1 @@
+Á \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/cbf1e454dc7ac878bd23e3dfd0b6a28a50b2155d b/fuzzers/corpora/packfile/cbf1e454dc7ac878bd23e3dfd0b6a28a50b2155d
new file mode 100644
index 000000000..7e60ba4e8
--- /dev/null
+++ b/fuzzers/corpora/packfile/cbf1e454dc7ac878bd23e3dfd0b6a28a50b2155d
Binary files differ
diff --git a/fuzzers/corpora/packfile/cbfb8cae82ddd82c04996f474fdb4f1b80dcb6db b/fuzzers/corpora/packfile/cbfb8cae82ddd82c04996f474fdb4f1b80dcb6db
new file mode 100644
index 000000000..7bd0640dc
--- /dev/null
+++ b/fuzzers/corpora/packfile/cbfb8cae82ddd82c04996f474fdb4f1b80dcb6db
Binary files differ
diff --git a/fuzzers/corpora/packfile/cf74f755c004ca634818f8ba44c99fffbaa950a1 b/fuzzers/corpora/packfile/cf74f755c004ca634818f8ba44c99fffbaa950a1
new file mode 100644
index 000000000..6c8a3e28f
--- /dev/null
+++ b/fuzzers/corpora/packfile/cf74f755c004ca634818f8ba44c99fffbaa950a1
Binary files differ
diff --git a/fuzzers/corpora/packfile/d07e4bc786c88b8d2304f84c7db2098666f822c0 b/fuzzers/corpora/packfile/d07e4bc786c88b8d2304f84c7db2098666f822c0
new file mode 100644
index 000000000..5639b6ddc
--- /dev/null
+++ b/fuzzers/corpora/packfile/d07e4bc786c88b8d2304f84c7db2098666f822c0
@@ -0,0 +1 @@
+û \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/d17ab0db9edea68e8f9f51f471decae84b192a1a b/fuzzers/corpora/packfile/d17ab0db9edea68e8f9f51f471decae84b192a1a
new file mode 100644
index 000000000..e3ec67ed4
--- /dev/null
+++ b/fuzzers/corpora/packfile/d17ab0db9edea68e8f9f51f471decae84b192a1a
Binary files differ
diff --git a/fuzzers/corpora/packfile/d1854cae891ec7b29161ccaf79a24b00c274bdaa b/fuzzers/corpora/packfile/d1854cae891ec7b29161ccaf79a24b00c274bdaa
new file mode 100644
index 000000000..ef073cc45
--- /dev/null
+++ b/fuzzers/corpora/packfile/d1854cae891ec7b29161ccaf79a24b00c274bdaa
@@ -0,0 +1 @@
+n \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/d22aac18f8b435fc34566fe0d3f42464aec9458c b/fuzzers/corpora/packfile/d22aac18f8b435fc34566fe0d3f42464aec9458c
new file mode 100644
index 000000000..766a32678
--- /dev/null
+++ b/fuzzers/corpora/packfile/d22aac18f8b435fc34566fe0d3f42464aec9458c
Binary files differ
diff --git a/fuzzers/corpora/packfile/d446a50788c32053358495358696f9d595358bcf b/fuzzers/corpora/packfile/d446a50788c32053358495358696f9d595358bcf
new file mode 100644
index 000000000..1015f8ede
--- /dev/null
+++ b/fuzzers/corpora/packfile/d446a50788c32053358495358696f9d595358bcf
Binary files differ
diff --git a/fuzzers/corpora/packfile/d461cbcff85c87b0068f0e9c15d2056197cdfa52 b/fuzzers/corpora/packfile/d461cbcff85c87b0068f0e9c15d2056197cdfa52
new file mode 100644
index 000000000..e475e616d
--- /dev/null
+++ b/fuzzers/corpora/packfile/d461cbcff85c87b0068f0e9c15d2056197cdfa52
Binary files differ
diff --git a/fuzzers/corpora/packfile/d54709a1b46002c81f57da533379e57f00afe942 b/fuzzers/corpora/packfile/d54709a1b46002c81f57da533379e57f00afe942
new file mode 100644
index 000000000..010a294b2
--- /dev/null
+++ b/fuzzers/corpora/packfile/d54709a1b46002c81f57da533379e57f00afe942
Binary files differ
diff --git a/fuzzers/corpora/packfile/d567007f84b83e82df7069838bf8b6c5826b18a8 b/fuzzers/corpora/packfile/d567007f84b83e82df7069838bf8b6c5826b18a8
new file mode 100644
index 000000000..feb21a2c2
--- /dev/null
+++ b/fuzzers/corpora/packfile/d567007f84b83e82df7069838bf8b6c5826b18a8
Binary files differ
diff --git a/fuzzers/corpora/packfile/d5e60b9f94126a9ec865fda83feb6835d294b76b b/fuzzers/corpora/packfile/d5e60b9f94126a9ec865fda83feb6835d294b76b
new file mode 100644
index 000000000..63dd39504
--- /dev/null
+++ b/fuzzers/corpora/packfile/d5e60b9f94126a9ec865fda83feb6835d294b76b
Binary files differ
diff --git a/fuzzers/corpora/packfile/d81092a4f3607ddbba85862facf2285459696078 b/fuzzers/corpora/packfile/d81092a4f3607ddbba85862facf2285459696078
new file mode 100644
index 000000000..0074e177e
--- /dev/null
+++ b/fuzzers/corpora/packfile/d81092a4f3607ddbba85862facf2285459696078
Binary files differ
diff --git a/fuzzers/corpora/packfile/d898eb860ceac044950605db88429e029ea278ef b/fuzzers/corpora/packfile/d898eb860ceac044950605db88429e029ea278ef
new file mode 100644
index 000000000..a74a67e56
--- /dev/null
+++ b/fuzzers/corpora/packfile/d898eb860ceac044950605db88429e029ea278ef
Binary files differ
diff --git a/fuzzers/corpora/packfile/d8fc60ccdd8f555c1858b9f0820f263e3d2b58ec b/fuzzers/corpora/packfile/d8fc60ccdd8f555c1858b9f0820f263e3d2b58ec
new file mode 100644
index 000000000..9d3cd6889
--- /dev/null
+++ b/fuzzers/corpora/packfile/d8fc60ccdd8f555c1858b9f0820f263e3d2b58ec
@@ -0,0 +1 @@
+® \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/d9b69c63cdc0c1622f2fab84d1307f9e0c0fa3b9 b/fuzzers/corpora/packfile/d9b69c63cdc0c1622f2fab84d1307f9e0c0fa3b9
new file mode 100644
index 000000000..1f4966d57
--- /dev/null
+++ b/fuzzers/corpora/packfile/d9b69c63cdc0c1622f2fab84d1307f9e0c0fa3b9
Binary files differ
diff --git a/fuzzers/corpora/packfile/db1bb4b7348d387623dcaf0a743d0b11fa18409f b/fuzzers/corpora/packfile/db1bb4b7348d387623dcaf0a743d0b11fa18409f
new file mode 100644
index 000000000..bed137b82
--- /dev/null
+++ b/fuzzers/corpora/packfile/db1bb4b7348d387623dcaf0a743d0b11fa18409f
Binary files differ
diff --git a/fuzzers/corpora/packfile/db291360a195c79ae504a3dfb2cd0f71cbc11902 b/fuzzers/corpora/packfile/db291360a195c79ae504a3dfb2cd0f71cbc11902
new file mode 100644
index 000000000..aaebf73f8
--- /dev/null
+++ b/fuzzers/corpora/packfile/db291360a195c79ae504a3dfb2cd0f71cbc11902
Binary files differ
diff --git a/fuzzers/corpora/packfile/dc98359b3ef2ced9c3d07636c89d475a564c39d9 b/fuzzers/corpora/packfile/dc98359b3ef2ced9c3d07636c89d475a564c39d9
new file mode 100644
index 000000000..44b5bbe70
--- /dev/null
+++ b/fuzzers/corpora/packfile/dc98359b3ef2ced9c3d07636c89d475a564c39d9
Binary files differ
diff --git a/fuzzers/corpora/packfile/dccc5642917b20b4dd64d3e44b71d08da30445e9 b/fuzzers/corpora/packfile/dccc5642917b20b4dd64d3e44b71d08da30445e9
new file mode 100644
index 000000000..d6430c257
--- /dev/null
+++ b/fuzzers/corpora/packfile/dccc5642917b20b4dd64d3e44b71d08da30445e9
Binary files differ
diff --git a/fuzzers/corpora/packfile/dd79c8cfb8beeacd0460429944b4ecbe95a31561 b/fuzzers/corpora/packfile/dd79c8cfb8beeacd0460429944b4ecbe95a31561
new file mode 100644
index 000000000..8a908eccd
--- /dev/null
+++ b/fuzzers/corpora/packfile/dd79c8cfb8beeacd0460429944b4ecbe95a31561
@@ -0,0 +1 @@
+â \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/de9550264c4e2dbef14e1281ff3693f2d19dc1c9 b/fuzzers/corpora/packfile/de9550264c4e2dbef14e1281ff3693f2d19dc1c9
new file mode 100644
index 000000000..2c096ffd2
--- /dev/null
+++ b/fuzzers/corpora/packfile/de9550264c4e2dbef14e1281ff3693f2d19dc1c9
Binary files differ
diff --git a/fuzzers/corpora/packfile/df8b4d163e9ed75634eb56467343bde73b13263e b/fuzzers/corpora/packfile/df8b4d163e9ed75634eb56467343bde73b13263e
new file mode 100644
index 000000000..5c3529e12
--- /dev/null
+++ b/fuzzers/corpora/packfile/df8b4d163e9ed75634eb56467343bde73b13263e
Binary files differ
diff --git a/fuzzers/corpora/packfile/e0184adedf913b076626646d3f52c3b49c39ad6d b/fuzzers/corpora/packfile/e0184adedf913b076626646d3f52c3b49c39ad6d
new file mode 100644
index 000000000..9fb75b8d4
--- /dev/null
+++ b/fuzzers/corpora/packfile/e0184adedf913b076626646d3f52c3b49c39ad6d
@@ -0,0 +1 @@
+E \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/e0905bac594c818b9cfa909269114977c4d6d1b2 b/fuzzers/corpora/packfile/e0905bac594c818b9cfa909269114977c4d6d1b2
new file mode 100644
index 000000000..40f2025d3
--- /dev/null
+++ b/fuzzers/corpora/packfile/e0905bac594c818b9cfa909269114977c4d6d1b2
Binary files differ
diff --git a/fuzzers/corpora/packfile/e0bcb16cd6b42128201e1b6454323175a7e412f0 b/fuzzers/corpora/packfile/e0bcb16cd6b42128201e1b6454323175a7e412f0
new file mode 100644
index 000000000..7386ac1f8
--- /dev/null
+++ b/fuzzers/corpora/packfile/e0bcb16cd6b42128201e1b6454323175a7e412f0
Binary files differ
diff --git a/fuzzers/corpora/packfile/e1ac9563c33f4f31b3e147b9d2fef80fca550948 b/fuzzers/corpora/packfile/e1ac9563c33f4f31b3e147b9d2fef80fca550948
new file mode 100644
index 000000000..c87f08b9b
--- /dev/null
+++ b/fuzzers/corpora/packfile/e1ac9563c33f4f31b3e147b9d2fef80fca550948
Binary files differ
diff --git a/fuzzers/corpora/packfile/e230c91352f1b07f6f34da803d07e75c06897b30 b/fuzzers/corpora/packfile/e230c91352f1b07f6f34da803d07e75c06897b30
new file mode 100644
index 000000000..ff1376fe8
--- /dev/null
+++ b/fuzzers/corpora/packfile/e230c91352f1b07f6f34da803d07e75c06897b30
Binary files differ
diff --git a/fuzzers/corpora/packfile/e26b3bacbfd6603d021d4ddadbac94b7b7aa0034 b/fuzzers/corpora/packfile/e26b3bacbfd6603d021d4ddadbac94b7b7aa0034
new file mode 100644
index 000000000..e6bdb3a79
--- /dev/null
+++ b/fuzzers/corpora/packfile/e26b3bacbfd6603d021d4ddadbac94b7b7aa0034
@@ -0,0 +1 @@
+! \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/e2a6f8dc3dc5d6c859f19d6e0fa64745201df0a6 b/fuzzers/corpora/packfile/e2a6f8dc3dc5d6c859f19d6e0fa64745201df0a6
new file mode 100644
index 000000000..3afd5ca89
--- /dev/null
+++ b/fuzzers/corpora/packfile/e2a6f8dc3dc5d6c859f19d6e0fa64745201df0a6
Binary files differ
diff --git a/fuzzers/corpora/packfile/e2ba004118345660b379df5147bfa7a39d884dbc b/fuzzers/corpora/packfile/e2ba004118345660b379df5147bfa7a39d884dbc
new file mode 100644
index 000000000..cb1ff9443
--- /dev/null
+++ b/fuzzers/corpora/packfile/e2ba004118345660b379df5147bfa7a39d884dbc
Binary files differ
diff --git a/fuzzers/corpora/packfile/e45aaf139d726366a18dce9e4854ee6c82901677 b/fuzzers/corpora/packfile/e45aaf139d726366a18dce9e4854ee6c82901677
new file mode 100644
index 000000000..0ba1db8d6
--- /dev/null
+++ b/fuzzers/corpora/packfile/e45aaf139d726366a18dce9e4854ee6c82901677
Binary files differ
diff --git a/fuzzers/corpora/packfile/e4b3ab7e8c18de815fc8bd6ebfd5d52cf1924a8e b/fuzzers/corpora/packfile/e4b3ab7e8c18de815fc8bd6ebfd5d52cf1924a8e
new file mode 100644
index 000000000..786d94bbb
--- /dev/null
+++ b/fuzzers/corpora/packfile/e4b3ab7e8c18de815fc8bd6ebfd5d52cf1924a8e
Binary files differ
diff --git a/fuzzers/corpora/packfile/e6818b96c50bb749911248959af81a9c412a0223 b/fuzzers/corpora/packfile/e6818b96c50bb749911248959af81a9c412a0223
new file mode 100644
index 000000000..b8ac98e08
--- /dev/null
+++ b/fuzzers/corpora/packfile/e6818b96c50bb749911248959af81a9c412a0223
Binary files differ
diff --git a/fuzzers/corpora/packfile/e69f20e9f683920d3fb4329abd951e878b1f9372 b/fuzzers/corpora/packfile/e69f20e9f683920d3fb4329abd951e878b1f9372
new file mode 100644
index 000000000..c137216fe
--- /dev/null
+++ b/fuzzers/corpora/packfile/e69f20e9f683920d3fb4329abd951e878b1f9372
@@ -0,0 +1 @@
+F \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/e6eb439fef7d5461bc3552aa7c064d24e44c5f32 b/fuzzers/corpora/packfile/e6eb439fef7d5461bc3552aa7c064d24e44c5f32
new file mode 100644
index 000000000..9ab1a4ddb
--- /dev/null
+++ b/fuzzers/corpora/packfile/e6eb439fef7d5461bc3552aa7c064d24e44c5f32
Binary files differ
diff --git a/fuzzers/corpora/packfile/e9d9930dc3fea44fbc7acb0d1ef4bd867f1c902b b/fuzzers/corpora/packfile/e9d9930dc3fea44fbc7acb0d1ef4bd867f1c902b
new file mode 100644
index 000000000..bd8ffbe20
--- /dev/null
+++ b/fuzzers/corpora/packfile/e9d9930dc3fea44fbc7acb0d1ef4bd867f1c902b
Binary files differ
diff --git a/fuzzers/corpora/packfile/eb05b6ad73fb1f69ef750d0b9cb6c606ab9d949f b/fuzzers/corpora/packfile/eb05b6ad73fb1f69ef750d0b9cb6c606ab9d949f
new file mode 100644
index 000000000..aaba356e4
--- /dev/null
+++ b/fuzzers/corpora/packfile/eb05b6ad73fb1f69ef750d0b9cb6c606ab9d949f
Binary files differ
diff --git a/fuzzers/corpora/packfile/eb0814ae767e5f28b87c998b0f44dcf80814db1b b/fuzzers/corpora/packfile/eb0814ae767e5f28b87c998b0f44dcf80814db1b
new file mode 100644
index 000000000..f834b0bf0
--- /dev/null
+++ b/fuzzers/corpora/packfile/eb0814ae767e5f28b87c998b0f44dcf80814db1b
Binary files differ
diff --git a/fuzzers/corpora/packfile/ebbd9763912dd557d08abd1373c867a4b56e6a41 b/fuzzers/corpora/packfile/ebbd9763912dd557d08abd1373c867a4b56e6a41
new file mode 100644
index 000000000..9a5a0eda7
--- /dev/null
+++ b/fuzzers/corpora/packfile/ebbd9763912dd557d08abd1373c867a4b56e6a41
Binary files differ
diff --git a/fuzzers/corpora/packfile/ebcdcb7effcc3f06e0d503638ac621de877fc554 b/fuzzers/corpora/packfile/ebcdcb7effcc3f06e0d503638ac621de877fc554
new file mode 100644
index 000000000..ef6080906
--- /dev/null
+++ b/fuzzers/corpora/packfile/ebcdcb7effcc3f06e0d503638ac621de877fc554
@@ -0,0 +1 @@
+Ä \ No newline at end of file
diff --git a/fuzzers/corpora/packfile/eddccafb2716adafb9ad48203f0621bb00ebc73f b/fuzzers/corpora/packfile/eddccafb2716adafb9ad48203f0621bb00ebc73f
new file mode 100644
index 000000000..9b1c9fbb3
--- /dev/null
+++ b/fuzzers/corpora/packfile/eddccafb2716adafb9ad48203f0621bb00ebc73f
Binary files differ
diff --git a/fuzzers/corpora/packfile/edfbf20c83d3cec45470105581f7dc8b7e0889da b/fuzzers/corpora/packfile/edfbf20c83d3cec45470105581f7dc8b7e0889da
new file mode 100644
index 000000000..bf9c3901d
--- /dev/null
+++ b/fuzzers/corpora/packfile/edfbf20c83d3cec45470105581f7dc8b7e0889da
Binary files differ
diff --git a/fuzzers/corpora/packfile/f03218467b1c74e465cebb3b8092e21a5122f31d b/fuzzers/corpora/packfile/f03218467b1c74e465cebb3b8092e21a5122f31d
new file mode 100644
index 000000000..d7539e4c9
--- /dev/null
+++ b/fuzzers/corpora/packfile/f03218467b1c74e465cebb3b8092e21a5122f31d
Binary files differ
diff --git a/fuzzers/corpora/packfile/f28600befd899a94bed8e62853e90655d614f439 b/fuzzers/corpora/packfile/f28600befd899a94bed8e62853e90655d614f439
new file mode 100644
index 000000000..5087f32e8
--- /dev/null
+++ b/fuzzers/corpora/packfile/f28600befd899a94bed8e62853e90655d614f439
Binary files differ
diff --git a/fuzzers/corpora/packfile/f3b15185b7a9a10716752d58434fe656d839092e b/fuzzers/corpora/packfile/f3b15185b7a9a10716752d58434fe656d839092e
new file mode 100644
index 000000000..857524445
--- /dev/null
+++ b/fuzzers/corpora/packfile/f3b15185b7a9a10716752d58434fe656d839092e
Binary files differ
diff --git a/fuzzers/corpora/packfile/f436ed7933482610e08e18b40e9eec102b63b7d4 b/fuzzers/corpora/packfile/f436ed7933482610e08e18b40e9eec102b63b7d4
new file mode 100644
index 000000000..4a7dcffb4
--- /dev/null
+++ b/fuzzers/corpora/packfile/f436ed7933482610e08e18b40e9eec102b63b7d4
Binary files differ
diff --git a/fuzzers/corpora/packfile/f55ea5b7c1cf5400aae56d7faf65a42320d0323a b/fuzzers/corpora/packfile/f55ea5b7c1cf5400aae56d7faf65a42320d0323a
new file mode 100644
index 000000000..c5e313730
--- /dev/null
+++ b/fuzzers/corpora/packfile/f55ea5b7c1cf5400aae56d7faf65a42320d0323a
Binary files differ
diff --git a/fuzzers/corpora/packfile/f5eeab2d009aa4984378df6bfdd89366b7ecbb32 b/fuzzers/corpora/packfile/f5eeab2d009aa4984378df6bfdd89366b7ecbb32
new file mode 100644
index 000000000..15828cfa6
--- /dev/null
+++ b/fuzzers/corpora/packfile/f5eeab2d009aa4984378df6bfdd89366b7ecbb32
Binary files differ
diff --git a/fuzzers/corpora/packfile/f6250c8b3cc0510e0f8f621100be83f018e2d234 b/fuzzers/corpora/packfile/f6250c8b3cc0510e0f8f621100be83f018e2d234
new file mode 100644
index 000000000..ab03a5e31
--- /dev/null
+++ b/fuzzers/corpora/packfile/f6250c8b3cc0510e0f8f621100be83f018e2d234
Binary files differ
diff --git a/fuzzers/corpora/packfile/f7168410c7158ff7331698930937f9cdc54f4d8a b/fuzzers/corpora/packfile/f7168410c7158ff7331698930937f9cdc54f4d8a
new file mode 100644
index 000000000..e42053d0c
--- /dev/null
+++ b/fuzzers/corpora/packfile/f7168410c7158ff7331698930937f9cdc54f4d8a
Binary files differ
diff --git a/fuzzers/corpora/packfile/f91847640af285c1b8a6df27f5c50686ed0deb70 b/fuzzers/corpora/packfile/f91847640af285c1b8a6df27f5c50686ed0deb70
new file mode 100644
index 000000000..615255fd6
--- /dev/null
+++ b/fuzzers/corpora/packfile/f91847640af285c1b8a6df27f5c50686ed0deb70
Binary files differ
diff --git a/fuzzers/corpora/packfile/fa58a6b2d3286a136a43afeeaac589d2dde0a2a6 b/fuzzers/corpora/packfile/fa58a6b2d3286a136a43afeeaac589d2dde0a2a6
new file mode 100644
index 000000000..860053ee9
--- /dev/null
+++ b/fuzzers/corpora/packfile/fa58a6b2d3286a136a43afeeaac589d2dde0a2a6
Binary files differ
diff --git a/fuzzers/corpora/packfile/fe3667be5fd2ffdd553ae04a534a2e9ce5445188 b/fuzzers/corpora/packfile/fe3667be5fd2ffdd553ae04a534a2e9ce5445188
new file mode 100644
index 000000000..d92e5748e
--- /dev/null
+++ b/fuzzers/corpora/packfile/fe3667be5fd2ffdd553ae04a534a2e9ce5445188
Binary files differ
diff --git a/fuzzers/corpora/packfile/ff21cad92ddd105224408fa696e91080a8cf98fb b/fuzzers/corpora/packfile/ff21cad92ddd105224408fa696e91080a8cf98fb
new file mode 100644
index 000000000..c1cfc00c2
--- /dev/null
+++ b/fuzzers/corpora/packfile/ff21cad92ddd105224408fa696e91080a8cf98fb
Binary files differ
diff --git a/fuzzers/corpora/packfile/ff9804ac04790bd58cdd124526c00b920469b812 b/fuzzers/corpora/packfile/ff9804ac04790bd58cdd124526c00b920469b812
new file mode 100644
index 000000000..4280c829c
--- /dev/null
+++ b/fuzzers/corpora/packfile/ff9804ac04790bd58cdd124526c00b920469b812
Binary files differ
diff --git a/fuzzers/corpora/packfile/ffc54ca808e7666f250133ad0ae2185ad688a826 b/fuzzers/corpora/packfile/ffc54ca808e7666f250133ad0ae2185ad688a826
new file mode 100644
index 000000000..4489a6500
--- /dev/null
+++ b/fuzzers/corpora/packfile/ffc54ca808e7666f250133ad0ae2185ad688a826
@@ -0,0 +1 @@
+² \ No newline at end of file
diff --git a/fuzzers/download_refs_fuzzer.c b/fuzzers/download_refs_fuzzer.c
new file mode 100644
index 000000000..3807c09b3
--- /dev/null
+++ b/fuzzers/download_refs_fuzzer.c
@@ -0,0 +1,211 @@
+/*
+ * libgit2 raw packfile fuzz target.
+ *
+ * Copyright (C) the libgit2 contributors. All rights reserved.
+ *
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
+ * a Linking Exception. For full terms see the included COPYING file.
+ */
+
+#include <string.h>
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include <unistd.h>
+
+#include "git2.h"
+#include "git2/sys/transport.h"
+
+#define UNUSED(x) (void)(x)
+
+struct fuzzer_buffer {
+ const unsigned char *data;
+ size_t size;
+};
+
+struct fuzzer_stream {
+ git_smart_subtransport_stream base;
+ const unsigned char *readp;
+ const unsigned char *endp;
+};
+
+struct fuzzer_subtransport {
+ git_smart_subtransport base;
+ git_transport *owner;
+ struct fuzzer_buffer data;
+};
+
+static git_repository *repo;
+
+static int fuzzer_stream_read(git_smart_subtransport_stream *stream,
+ char *buffer,
+ size_t buf_size,
+ size_t *bytes_read)
+{
+ struct fuzzer_stream *fs = (struct fuzzer_stream *) stream;
+ size_t avail = fs->endp - fs->readp;
+
+ *bytes_read = (buf_size > avail) ? avail : buf_size;
+ memcpy(buffer, fs->readp, *bytes_read);
+ fs->readp += *bytes_read;
+
+ return 0;
+}
+
+static int fuzzer_stream_write(git_smart_subtransport_stream *stream,
+ const char *buffer, size_t len)
+{
+ UNUSED(stream);
+ UNUSED(buffer);
+ UNUSED(len);
+ return 0;
+}
+
+static void fuzzer_stream_free(git_smart_subtransport_stream *stream)
+{
+ free(stream);
+}
+
+static int fuzzer_stream_new(
+ struct fuzzer_stream **out,
+ const struct fuzzer_buffer *data)
+{
+ struct fuzzer_stream *stream = malloc(sizeof(*stream));
+ if (!stream)
+ return -1;
+
+ stream->readp = data->data;
+ stream->endp = data->data + data->size;
+ stream->base.read = fuzzer_stream_read;
+ stream->base.write = fuzzer_stream_write;
+ stream->base.free = fuzzer_stream_free;
+
+ *out = stream;
+
+ return 0;
+}
+
+static int fuzzer_subtransport_action(
+ git_smart_subtransport_stream **out,
+ git_smart_subtransport *transport,
+ const char *url,
+ git_smart_service_t action)
+{
+ struct fuzzer_subtransport *ft = (struct fuzzer_subtransport *) transport;
+
+ UNUSED(url);
+ UNUSED(action);
+
+ return fuzzer_stream_new((struct fuzzer_stream **) out, &ft->data);
+}
+
+static int fuzzer_subtransport_close(git_smart_subtransport *transport)
+{
+ UNUSED(transport);
+ return 0;
+}
+
+static void fuzzer_subtransport_free(git_smart_subtransport *transport)
+{
+ free(transport);
+}
+
+static int fuzzer_subtransport_new(
+ struct fuzzer_subtransport **out,
+ git_transport *owner,
+ const struct fuzzer_buffer *data)
+{
+ struct fuzzer_subtransport *sub = malloc(sizeof(*sub));
+ if (!sub)
+ return -1;
+
+ sub->owner = owner;
+ sub->data.data = data->data;
+ sub->data.size = data->size;
+ sub->base.action = fuzzer_subtransport_action;
+ sub->base.close = fuzzer_subtransport_close;
+ sub->base.free = fuzzer_subtransport_free;
+
+ *out = sub;
+
+ return 0;
+}
+
+int fuzzer_subtransport_cb(
+ git_smart_subtransport **out,
+ git_transport *owner,
+ void *payload)
+{
+ struct fuzzer_buffer *buf = (struct fuzzer_buffer *) payload;
+ struct fuzzer_subtransport *sub;
+
+ if (fuzzer_subtransport_new(&sub, owner, buf) < 0)
+ return -1;
+
+ *out = &sub->base;
+ return 0;
+}
+
+int fuzzer_transport_cb(git_transport **out, git_remote *owner, void *param)
+{
+ git_smart_subtransport_definition def = {
+ fuzzer_subtransport_cb,
+ 1,
+ param
+ };
+ return git_transport_smart(out, owner, &def);
+}
+
+void fuzzer_git_abort(const char *op)
+{
+ const git_error *err = giterr_last();
+ fprintf(stderr, "unexpected libgit error: %s: %s\n",
+ op, err ? err->message : "<none>");
+ abort();
+}
+
+int LLVMFuzzerInitialize(int *argc, char ***argv)
+{
+ char tmp[] = "/tmp/git2.XXXXXX";
+
+ UNUSED(argc);
+ UNUSED(argv);
+
+ if (git_libgit2_init() < 0)
+ abort();
+
+ if (git_libgit2_opts(GIT_OPT_SET_PACK_MAX_OBJECTS, 10000000) < 0)
+ abort();
+
+ if (mkdtemp(tmp) != tmp)
+ abort();
+
+ if (git_repository_init(&repo, tmp, 1) < 0)
+ fuzzer_git_abort("git_repository_init");
+
+ return 0;
+}
+
+int LLVMFuzzerTestOneInput(const unsigned char *data, size_t size)
+{
+ struct fuzzer_buffer buffer = { data, size };
+ git_remote_callbacks callbacks = GIT_REMOTE_CALLBACKS_INIT;
+ git_remote *remote;
+
+ if (git_remote_create_anonymous(&remote, repo, "fuzzer://remote-url") < 0)
+ fuzzer_git_abort("git_remote_create");
+
+ callbacks.transport = fuzzer_transport_cb;
+ callbacks.payload = &buffer;
+
+ if (git_remote_connect(remote, GIT_DIRECTION_FETCH,
+ &callbacks, NULL, NULL) < 0)
+ goto out;
+
+ git_remote_download(remote, NULL, NULL);
+
+ out:
+ git_remote_free(remote);
+
+ return 0;
+}
diff --git a/fuzzers/packfile_fuzzer.c b/fuzzers/packfile_fuzzer.c
new file mode 100644
index 000000000..a59d28330
--- /dev/null
+++ b/fuzzers/packfile_fuzzer.c
@@ -0,0 +1,122 @@
+/*
+ * libgit2 packfile fuzzer target.
+ *
+ * Copyright (C) the libgit2 contributors. All rights reserved.
+ *
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
+ * a Linking Exception. For full terms see the included COPYING file.
+ */
+
+#include <stdbool.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <limits.h>
+#include <unistd.h>
+
+#include "git2.h"
+#include "git2/sys/mempack.h"
+
+#define UNUSED(x) (void)(x)
+
+static git_odb *odb = NULL;
+static git_odb_backend *mempack = NULL;
+
+/* Arbitrary object to seed the ODB. */
+static const unsigned char base_obj[] = { 07, 076 };
+static const unsigned int base_obj_len = 2;
+
+int LLVMFuzzerInitialize(int *argc, char ***argv)
+{
+ UNUSED(argc);
+ UNUSED(argv);
+ if (git_libgit2_init() < 0) {
+ fprintf(stderr, "Failed to initialize libgit2\n");
+ abort();
+ }
+ if (git_libgit2_opts(GIT_OPT_SET_PACK_MAX_OBJECTS, 10000000) < 0) {
+ fprintf(stderr, "Failed to limit maximum pack object count\n");
+ abort();
+ }
+ if (git_odb_new(&odb) < 0) {
+ fprintf(stderr, "Failed to create the odb\n");
+ abort();
+ }
+ if (git_mempack_new(&mempack) < 0) {
+ fprintf(stderr, "Failed to create the mempack\n");
+ abort();
+ }
+ if (git_odb_add_backend(odb, mempack, 999) < 0) {
+ fprintf(stderr, "Failed to add the mempack\n");
+ abort();
+ }
+ return 0;
+}
+
+int LLVMFuzzerTestOneInput(const uint8_t *data, size_t size)
+{
+ git_indexer *indexer = NULL;
+ git_transfer_progress stats = {0, 0};
+ bool append_hash = false;
+ git_oid id;
+ char hash[GIT_OID_HEXSZ + 1] = {0};
+ char path[PATH_MAX];
+
+ if (size == 0)
+ return 0;
+
+ if (!odb || !mempack) {
+ fprintf(stderr, "Global state not initialized\n");
+ abort();
+ }
+ git_mempack_reset(mempack);
+
+ if (git_odb_write(&id, odb, base_obj, base_obj_len, GIT_OBJ_BLOB) < 0) {
+ fprintf(stderr, "Failed to add an object to the odb\n");
+ abort();
+ }
+
+ if (git_indexer_new(&indexer, ".", 0, odb, NULL, NULL) < 0) {
+ fprintf(stderr, "Failed to create the indexer: %s\n",
+ giterr_last()->message);
+ abort();
+ }
+
+ /*
+ * If the first byte in the stream has the high bit set, append the
+ * SHA1 hash so that the packfile is somewhat valid.
+ */
+ append_hash = *data & 0x80;
+ ++data;
+ --size;
+
+ if (git_indexer_append(indexer, data, size, &stats) < 0)
+ goto cleanup;
+ if (append_hash) {
+ git_oid oid;
+ if (git_odb_hash(&oid, data, size, GIT_OBJ_BLOB) < 0) {
+ fprintf(stderr, "Failed to compute the SHA1 hash\n");
+ abort();
+ }
+ if (git_indexer_append(indexer, &oid, sizeof(oid), &stats) < 0) {
+ goto cleanup;
+ }
+ }
+ if (git_indexer_commit(indexer, &stats) < 0)
+ goto cleanup;
+
+ /*
+ * We made it! We managed to produce a valid packfile.
+ * Let's clean it up.
+ */
+ git_oid_fmt(hash, git_indexer_hash(indexer));
+ printf("Generated packfile %s\n", hash);
+ snprintf(path, sizeof(path), "pack-%s.idx", hash);
+ unlink(path);
+ snprintf(path, sizeof(path), "pack-%s.pack", hash);
+ unlink(path);
+
+cleanup:
+ git_mempack_reset(mempack);
+ git_indexer_free(indexer);
+ return 0;
+}
diff --git a/fuzzers/standalone_driver.c b/fuzzers/standalone_driver.c
new file mode 100644
index 000000000..fd8453d8b
--- /dev/null
+++ b/fuzzers/standalone_driver.c
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) the libgit2 contributors. All rights reserved.
+ *
+ * This file is part of libgit2, distributed under the GNU GPL v2 with
+ * a Linking Exception. For full terms see the included COPYING file.
+ */
+
+#include <assert.h>
+#include <dirent.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/types.h>
+
+#include "fileops.h"
+#include "path.h"
+
+extern int LLVMFuzzerTestOneInput(const unsigned char *data, size_t size);
+extern int LLVMFuzzerInitialize(int *argc, char ***argv);
+
+static int run_one_file(const char *filename)
+{
+ git_buf buf = GIT_BUF_INIT;
+ int error = 0;
+
+ if (git_futils_readbuffer(&buf, filename) < 0) {
+ fprintf(stderr, "Failed to read %s: %m\n", filename);
+ error = -1;
+ goto exit;
+ }
+
+ LLVMFuzzerTestOneInput((const unsigned char *)buf.ptr, buf.size);
+exit:
+ git_buf_dispose(&buf);
+ return error;
+}
+
+int main(int argc, char **argv)
+{
+ git_vector corpus_files = GIT_VECTOR_INIT;
+ char *filename = NULL;
+ unsigned i = 0;
+ int error = 0;
+
+ if (argc != 2) {
+ fprintf(stderr, "Usage: %s <corpus directory>\n", argv[0]);
+ error = -1;
+ goto exit;
+ }
+
+ fprintf(stderr, "Running %s against %s\n", argv[0], argv[1]);
+ LLVMFuzzerInitialize(&argc, &argv);
+
+ if (git_path_dirload(&corpus_files, argv[1], 0, 0x0) < 0) {
+ fprintf(stderr, "Failed to scan corpus directory: %m\n");
+ error = -1;
+ goto exit;
+ }
+ git_vector_foreach(&corpus_files, i, filename) {
+ fprintf(stderr, "\tRunning %s...\n", filename);
+ if (run_one_file(filename) < 0) {
+ error = -1;
+ goto exit;
+ }
+ }
+ fprintf(stderr, "Done %d runs\n", i);
+
+exit:
+ git_vector_free_deep(&corpus_files);
+ return error;
+}