From 4f03aa0af877ad11f805e4306f5c5e80e137a36e Mon Sep 17 00:00:00 2001 From: forkless Date: Wed, 3 Jun 2026 00:41:01 +0200 Subject: [PATCH] v0.4.0: bump version, changelog, fuzz target for backup round-trip --- CHANGELOG.md | 25 +++++ Cargo.lock | 2 +- Cargo.toml | 2 +- _release.md | 14 ++- fuzz/Cargo.lock | 99 +++++++++++++++++- fuzz/Cargo.toml | 7 ++ .../00375065763ad15e0a040210fcc6a75e14be67dc | 1 + .../032b3d15041f03dbd006844b823cd7126b556bc0 | Bin 0 -> 25 bytes .../0346abc3ab53a2969524e1087e202a8a51e99494 | Bin 0 -> 8 bytes .../037511fa9fa48c1ee67992fbfc59f09fba7b3b3d | Bin 0 -> 24 bytes .../082736e67e56018e6391be1fc06089fb207edc54 | 1 + .../09fc0a4fe15bea513ea8508d169180181f53e9f3 | Bin 0 -> 6 bytes .../0b832ffe11d2337ca3efd79aa32140076d90dc67 | Bin 0 -> 3 bytes .../0dcd89913dc99f3bb7a5d569202e52649e853bd5 | Bin 0 -> 22 bytes .../0fe989db61671a168541c0359e65c690e5e5b345 | Bin 0 -> 6 bytes .../1196b7d560041a9d0abfd805d58dc716a27716db | Bin 0 -> 10 bytes .../1296a504cbacc7da903b9a60033fc8ebcb969498 | 1 + .../151000914f15e7b8f1520ca2c14984dc6e660ee9 | Bin 0 -> 21 bytes .../15a7ea2aa657c56e1f3924ddc513053eda4ee86c | Bin 0 -> 8 bytes .../178746ad37342913168064c5697c45def1772b5d | Bin 0 -> 24 bytes .../1b6453892473a467d07372d45eb05abc2031647a | 1 + .../223fd7f7045ebe351ae2d2da420be6d387a6cf35 | Bin 0 -> 10 bytes .../23e54686b5c01fb7674ba3a6b48129738b0f5186 | Bin 0 -> 3 bytes .../2ad8102ef897a11f5c34702d41db8a5ea8d824d5 | 1 + .../2b16aab19cae6cdcd54a33aa0325508e79302926 | Bin 0 -> 10 bytes .../2c0ab0ab8e7d4e5dde15c135813a3e70dfc32400 | 1 + .../2c91860cce9fbe5f9ce73ed6836bbe789a7d0589 | Bin 0 -> 18 bytes .../2e622b0c32f96f49a83836b82d727c51c657079d | Bin 0 -> 10 bytes .../2f1952914960f6f0ad959ea647241b3a71d90c64 | Bin 0 -> 12 bytes .../316e69ba9e8d3c827b05a4036817aaf88cae3d2b | Bin 0 -> 12 bytes .../3b484d1bad41855e5b61729f6aac1125b068ca4f | Bin 0 -> 14 bytes .../3c49eff7d2e536583784d4b018eec583d3173c93 | Bin 0 -> 17 bytes .../3cedf42c03a95e8e3a880559b370525543e1b324 | 1 + .../3e0ba38c0e772f30cd4dc2ba9c0c86156b20ff8f | 1 + .../3f103388f76aedfe6e3d84212154a7e2d2328d08 | 1 + .../4075570331c964ffcfe40237c1a67fcb2e022ae3 | 1 + .../426f8bfcf1f135e9cb0fac2a2bec862474583dbd | Bin 0 -> 15 bytes .../4359ece2bf96771557a783e54f14f985349cc3e2 | Bin 0 -> 20 bytes .../43d1b6363769af9504536fd705a787b333150c8d | Bin 0 -> 4 bytes .../4413ff48e04a4cb2ff59d28f85cadf92bbeb27e4 | Bin 0 -> 14 bytes .../4d751776e559e8157cd11c3d0a02d4e8eb1ef88b | Bin 0 -> 8 bytes .../4e4ea65be63cdf1f663ca2e464a1bd5611d4596b | 1 + .../4fe538f83835fb2d8a67e52c77fbcc6f8e951303 | Bin 0 -> 24 bytes .../512e07326c6cf3a7c598e0ba1c8bfd17eb37cc7c | 1 + .../528a6960fee133d18f29f36edb80d28b1495805d | 1 + .../52a719f9d01e6a1882f97bc011e52c80f807e955 | 1 + .../52da4b5960b203f3a0651f00da153cdb197f7925 | Bin 0 -> 8 bytes .../57f31bbcbea154085738569737c2f04e8861c3fd | Bin 0 -> 24 bytes .../584931419cc9a74b0a63855918ce225b42cf8f98 | Bin 0 -> 6 bytes .../5966d1891aaa30a9985e25a816f16b226593a91e | Bin 0 -> 16 bytes .../5b6dd333ba7b333c804ce80a657150b5735bd881 | 1 + .../5e55fb95abcb756721b21bfadb77c2053e0fa913 | 1 + .../606d08c55e3a27356326d9ac3b268d7b90d7b8d0 | 1 + .../61cb6970f84fa19ac7e63645cdad4e8adb295143 | Bin 0 -> 20 bytes .../62d84a8a7963c991c97b17ed83243fa9da665781 | Bin 0 -> 23 bytes .../642c5d3fb55f87d2873f89b1ab9a3890a6528d62 | Bin 0 -> 6 bytes .../668a73857146391ad0c9cea3ed52f174db2809c1 | Bin 0 -> 11 bytes .../6845d20d042b3d863f972547c38648ccf70a19c4 | Bin 0 -> 5 bytes .../6851bd83a1c5ee8f44421bf5a2c42388d83dd6f8 | Bin 0 -> 10 bytes .../6acfd663830de54a5d707831cf4c5e962a62778e | 1 + .../6b2f6a4b6578438e7a05b64b404ba8fbc31ae3a8 | Bin 0 -> 19 bytes .../6e28ab0c7668f84eabaf45986c639a96eec56b2d | 1 + .../6e32f6c9f14717fe7bd9679f3151a40e93575b4b | Bin 0 -> 23 bytes .../71853c6197a6a7f222db0f1978c7cb232b87c5ee | 2 + .../74cd6ea771c205e76e167653937e851ccd01a6fd | Bin 0 -> 8 bytes .../75d586e6bbfc42dcf869fbf1b0de196c4761c5de | Bin 0 -> 10 bytes .../77009a6085435b62ef92c6f1d5b343e9cc06e080 | Bin 0 -> 24 bytes .../77ce0377defbd11b77b1f4ad54ca40ea5ef28490 | Bin 0 -> 7 bytes .../785c30dd5c81882f90c41c51df628445f0e0929e | 1 + .../788ffe80ba52ac35784a978677f4e202034a4d0c | 1 + .../7992d7ed3aae27204896feddcdb2e614a0e923bd | 1 + .../7ae9d3a87a851febe01f3b22cc1a5d93b252c458 | 1 + .../7e0e5bf6bfe7e8b9ff63847137cdf3da542ba61a | Bin 0 -> 5 bytes .../81674b942a99a418107956520fc5ccf33d51572b | Bin 0 -> 5 bytes .../829e4032a7a2d435c86fa85bd46ec2025730ca69 | Bin 0 -> 15 bytes .../8379666a3f6db52fb1b873b9bd401d2a7c4be35b | Bin 0 -> 25 bytes .../8a68633b1cb42641b7bc6709ac92b08b7ec07056 | 1 + .../8ba7fa1a38dbf1557792368b8e72f751a380bc1e | Bin 0 -> 3 bytes .../8bed8ca867a8502dcffaaae94f81b81c9ed30f0f | Bin 0 -> 4 bytes .../8dd247113681fdfd089314e60f382b3458099951 | 1 + .../9159cb8bcee7fcb95582f140960cdae72788d326 | 1 + .../91be66245ffc01a429a7e4ad28274ab30acf5dd4 | 1 + .../91cfe05ccf305fd54cd2470abfccbf44feefe543 | 1 + .../987194c88d1c88aec074cb463686c09555d60286 | 1 + .../9a78211436f6d425ec38f5c4e02270801f3524f8 | 1 + .../9a9b1ced5cbeb23b9a7a436e3c4c2a4978aa912c | 1 + .../9ac8792078da533f300de095464a3815abab3146 | 1 + .../9d4dda65871caa0b0c0040c054abd41c00096733 | Bin 0 -> 10 bytes .../9dd43e92cb5f675dde987fe23df3b505d4b66fab | Bin 0 -> 18 bytes .../9f511931cf34e1ffb681c58306a5a7475a8fcc88 | Bin 0 -> 13 bytes .../9f730e87a0e47fef76edddf2be02bbb6f3843ae2 | Bin 0 -> 20 bytes .../a96e542745a7b5a705eaa953a6e7d62447e19805 | Bin 0 -> 10 bytes .../ab461f6b8a6842a473257a2561c1fbdf91bdfe77 | 1 + .../acb7846b378126240c4c1df45e3bff4f467879d2 | 1 + .../aea09bb502802c9e49e0e082bbeb6cddf1c1b619 | Bin 0 -> 6 bytes .../b0d8b474467ef0cf2c4b357185423096289a24c5 | 1 + .../b48f491783e98de10682f2d4455dfce5bdc3c233 | 1 + .../bb9a91283973fc411bab48af18fa7d99a736f699 | 1 + .../bce5569a802b7234f56b4c81344a702e2283d26f | Bin 0 -> 7 bytes .../bed14a1dc4e6111e0da227dd5b08d20a16a03dad | Bin 0 -> 8 bytes .../bf8b4530d8d246dd74ac53a13471bba17941dff7 | 1 + .../c09aef9f45c0639bc2e49feea98a9449f2b42001 | 1 + .../c1fdffd67e96e5d4c0f4f2f2afd9d8af8d13a509 | Bin 0 -> 8 bytes .../c398a1d6e7744204c82f7103c55e437ee0522fb3 | Bin 0 -> 5 bytes .../c39a5fabbf5d941ff6a356d2dba04e9f8e6e0789 | Bin 0 -> 9 bytes .../c3f8b81ac3ce712176f486809d06f4206f6d1c00 | Bin 0 -> 11 bytes .../c61eedf38f9e2026fb936f314dd816ee28b82218 | Bin 0 -> 24 bytes .../c6a81894fe0ee6c20b60881e4a5af05bea4a01a2 | 1 + .../c8cc338c4f7247fcd6544b277a898f6ef7bbc08a | Bin 0 -> 24 bytes .../c9f814aca47abf29f849367c4d8175fdd54342bd | Bin 0 -> 24 bytes .../caf2be64e785a9672685a42a88e9a8a2bc252a00 | Bin 0 -> 17 bytes .../cb305244cedd8e3d262dc6b2b7f3868fefc61e76 | 1 + .../cc3b603f6ccc9479b814f96451649baae014d782 | Bin 0 -> 5 bytes .../cc94fed09010138232028de27209ef93a4e1acdc | Bin 0 -> 10 bytes .../d08f88df745fa7950b104e4a707a31cfce7b5841 | 1 + .../d198281adfae04fda9608acdf45437b588ce7ec6 | 1 + .../d1f71f9492e870b14b8e32fc35611d20d7116fb6 | Bin 0 -> 12 bytes .../d264f157ca1df350c982345235e494667ea115d4 | 1 + .../d2e9113109a23c9ada1c8c262d81a440de84099a | Bin 0 -> 21 bytes .../d56ddef3702dec9b11de617314aa04c6e5faf6de | 1 + .../d648b57848620d1ebb56e24965247a956924070b | Bin 0 -> 18 bytes .../d86bca9ccd60ee64ffef8627679c46419eb480b7 | 1 + .../da534ca7303b10df11df9081af797ee7750aad77 | 1 + .../dcf138229d6789c73f7969dccd743ed882c8a4c1 | Bin 0 -> 5 bytes .../dd679d555ae04cd2462a61ff4aad02a73b7eea7a | Bin 0 -> 11 bytes .../ddb9fdb16db21d1288cf39ac982926447a58f4c0 | 1 + .../ddbc55fe4465fa9d69a9e4d888afd73c49f8867a | Bin 0 -> 18 bytes .../e12eeb3c29d4e22d896e42af48ca8816dfadd3b8 | Bin 0 -> 11 bytes .../e2901792677087494cb98a717b0a7e6179966413 | 1 + .../e47aea3140df9bcd504c1473af09ecc1030567f6 | 1 + .../e51e40716d17fe17e7079ded7f2dea03e6d84c55 | 1 + .../e5bf41dcede48e9df626b852dd139c3f31ab8545 | Bin 0 -> 17 bytes .../e5ca6bb6da524a1ce24ac678b1295090c8f642a1 | 1 + .../e632b36853518cf2c86175a46d249c122f4fd9d6 | Bin 0 -> 8 bytes .../e910345c261713fff55aa46164aa2caa4851d2f9 | 1 + .../eb55642c118d9f2eb6ccaaa7fa37b268da1834cc | Bin 0 -> 25 bytes .../ee504363e00c71f68e02722f0f07840bdf329510 | Bin 0 -> 3 bytes .../efc4d6f46a7eacd78889a1351e9a88fc7bfc9b17 | Bin 0 -> 18 bytes .../f703cf00fe973daf9555cd026edb46e53de47856 | 1 + .../f7f48269dc8ca49d56f73068efca7574d07cb906 | Bin 0 -> 5 bytes .../f9b4b95bcd2519ee98574e85ab4158aba53fb5b5 | 1 + .../fadeff742dc7ae024de664dd0e2539c9a6a4f156 | Bin 0 -> 6 bytes .../fc77d71e66d25af7069297909c80c0e949167809 | Bin 0 -> 5 bytes .../fc95a970ff582095ce54e1459b2694ef66ee93e9 | Bin 0 -> 13 bytes .../fd6f5aa90211853e795941406d2ad180c56b93c0 | Bin 0 -> 6 bytes fuzz/fuzz_targets/backup_roundtrip.rs | 35 +++++++ 146 files changed, 231 insertions(+), 10 deletions(-) create mode 100644 fuzz/corpus/backup_roundtrip/00375065763ad15e0a040210fcc6a75e14be67dc create mode 100644 fuzz/corpus/backup_roundtrip/032b3d15041f03dbd006844b823cd7126b556bc0 create mode 100644 fuzz/corpus/backup_roundtrip/0346abc3ab53a2969524e1087e202a8a51e99494 create mode 100644 fuzz/corpus/backup_roundtrip/037511fa9fa48c1ee67992fbfc59f09fba7b3b3d create mode 100644 fuzz/corpus/backup_roundtrip/082736e67e56018e6391be1fc06089fb207edc54 create mode 100644 fuzz/corpus/backup_roundtrip/09fc0a4fe15bea513ea8508d169180181f53e9f3 create mode 100644 fuzz/corpus/backup_roundtrip/0b832ffe11d2337ca3efd79aa32140076d90dc67 create mode 100644 fuzz/corpus/backup_roundtrip/0dcd89913dc99f3bb7a5d569202e52649e853bd5 create mode 100644 fuzz/corpus/backup_roundtrip/0fe989db61671a168541c0359e65c690e5e5b345 create mode 100644 fuzz/corpus/backup_roundtrip/1196b7d560041a9d0abfd805d58dc716a27716db create mode 100644 fuzz/corpus/backup_roundtrip/1296a504cbacc7da903b9a60033fc8ebcb969498 create mode 100644 fuzz/corpus/backup_roundtrip/151000914f15e7b8f1520ca2c14984dc6e660ee9 create mode 100644 fuzz/corpus/backup_roundtrip/15a7ea2aa657c56e1f3924ddc513053eda4ee86c create mode 100644 fuzz/corpus/backup_roundtrip/178746ad37342913168064c5697c45def1772b5d create mode 100644 fuzz/corpus/backup_roundtrip/1b6453892473a467d07372d45eb05abc2031647a create mode 100644 fuzz/corpus/backup_roundtrip/223fd7f7045ebe351ae2d2da420be6d387a6cf35 create mode 100644 fuzz/corpus/backup_roundtrip/23e54686b5c01fb7674ba3a6b48129738b0f5186 create mode 100644 fuzz/corpus/backup_roundtrip/2ad8102ef897a11f5c34702d41db8a5ea8d824d5 create mode 100644 fuzz/corpus/backup_roundtrip/2b16aab19cae6cdcd54a33aa0325508e79302926 create mode 100644 fuzz/corpus/backup_roundtrip/2c0ab0ab8e7d4e5dde15c135813a3e70dfc32400 create mode 100644 fuzz/corpus/backup_roundtrip/2c91860cce9fbe5f9ce73ed6836bbe789a7d0589 create mode 100644 fuzz/corpus/backup_roundtrip/2e622b0c32f96f49a83836b82d727c51c657079d create mode 100644 fuzz/corpus/backup_roundtrip/2f1952914960f6f0ad959ea647241b3a71d90c64 create mode 100644 fuzz/corpus/backup_roundtrip/316e69ba9e8d3c827b05a4036817aaf88cae3d2b create mode 100644 fuzz/corpus/backup_roundtrip/3b484d1bad41855e5b61729f6aac1125b068ca4f create mode 100644 fuzz/corpus/backup_roundtrip/3c49eff7d2e536583784d4b018eec583d3173c93 create mode 100644 fuzz/corpus/backup_roundtrip/3cedf42c03a95e8e3a880559b370525543e1b324 create mode 100644 fuzz/corpus/backup_roundtrip/3e0ba38c0e772f30cd4dc2ba9c0c86156b20ff8f create mode 100644 fuzz/corpus/backup_roundtrip/3f103388f76aedfe6e3d84212154a7e2d2328d08 create mode 100644 fuzz/corpus/backup_roundtrip/4075570331c964ffcfe40237c1a67fcb2e022ae3 create mode 100644 fuzz/corpus/backup_roundtrip/426f8bfcf1f135e9cb0fac2a2bec862474583dbd create mode 100644 fuzz/corpus/backup_roundtrip/4359ece2bf96771557a783e54f14f985349cc3e2 create mode 100644 fuzz/corpus/backup_roundtrip/43d1b6363769af9504536fd705a787b333150c8d create mode 100644 fuzz/corpus/backup_roundtrip/4413ff48e04a4cb2ff59d28f85cadf92bbeb27e4 create mode 100644 fuzz/corpus/backup_roundtrip/4d751776e559e8157cd11c3d0a02d4e8eb1ef88b create mode 100644 fuzz/corpus/backup_roundtrip/4e4ea65be63cdf1f663ca2e464a1bd5611d4596b create mode 100644 fuzz/corpus/backup_roundtrip/4fe538f83835fb2d8a67e52c77fbcc6f8e951303 create mode 100644 fuzz/corpus/backup_roundtrip/512e07326c6cf3a7c598e0ba1c8bfd17eb37cc7c create mode 100644 fuzz/corpus/backup_roundtrip/528a6960fee133d18f29f36edb80d28b1495805d create mode 100644 fuzz/corpus/backup_roundtrip/52a719f9d01e6a1882f97bc011e52c80f807e955 create mode 100644 fuzz/corpus/backup_roundtrip/52da4b5960b203f3a0651f00da153cdb197f7925 create mode 100644 fuzz/corpus/backup_roundtrip/57f31bbcbea154085738569737c2f04e8861c3fd create mode 100644 fuzz/corpus/backup_roundtrip/584931419cc9a74b0a63855918ce225b42cf8f98 create mode 100644 fuzz/corpus/backup_roundtrip/5966d1891aaa30a9985e25a816f16b226593a91e create mode 100644 fuzz/corpus/backup_roundtrip/5b6dd333ba7b333c804ce80a657150b5735bd881 create mode 100644 fuzz/corpus/backup_roundtrip/5e55fb95abcb756721b21bfadb77c2053e0fa913 create mode 100644 fuzz/corpus/backup_roundtrip/606d08c55e3a27356326d9ac3b268d7b90d7b8d0 create mode 100644 fuzz/corpus/backup_roundtrip/61cb6970f84fa19ac7e63645cdad4e8adb295143 create mode 100644 fuzz/corpus/backup_roundtrip/62d84a8a7963c991c97b17ed83243fa9da665781 create mode 100644 fuzz/corpus/backup_roundtrip/642c5d3fb55f87d2873f89b1ab9a3890a6528d62 create mode 100644 fuzz/corpus/backup_roundtrip/668a73857146391ad0c9cea3ed52f174db2809c1 create mode 100644 fuzz/corpus/backup_roundtrip/6845d20d042b3d863f972547c38648ccf70a19c4 create mode 100644 fuzz/corpus/backup_roundtrip/6851bd83a1c5ee8f44421bf5a2c42388d83dd6f8 create mode 100644 fuzz/corpus/backup_roundtrip/6acfd663830de54a5d707831cf4c5e962a62778e create mode 100644 fuzz/corpus/backup_roundtrip/6b2f6a4b6578438e7a05b64b404ba8fbc31ae3a8 create mode 100644 fuzz/corpus/backup_roundtrip/6e28ab0c7668f84eabaf45986c639a96eec56b2d create mode 100644 fuzz/corpus/backup_roundtrip/6e32f6c9f14717fe7bd9679f3151a40e93575b4b create mode 100644 fuzz/corpus/backup_roundtrip/71853c6197a6a7f222db0f1978c7cb232b87c5ee create mode 100644 fuzz/corpus/backup_roundtrip/74cd6ea771c205e76e167653937e851ccd01a6fd create mode 100644 fuzz/corpus/backup_roundtrip/75d586e6bbfc42dcf869fbf1b0de196c4761c5de create mode 100644 fuzz/corpus/backup_roundtrip/77009a6085435b62ef92c6f1d5b343e9cc06e080 create mode 100644 fuzz/corpus/backup_roundtrip/77ce0377defbd11b77b1f4ad54ca40ea5ef28490 create mode 100644 fuzz/corpus/backup_roundtrip/785c30dd5c81882f90c41c51df628445f0e0929e create mode 100644 fuzz/corpus/backup_roundtrip/788ffe80ba52ac35784a978677f4e202034a4d0c create mode 100644 fuzz/corpus/backup_roundtrip/7992d7ed3aae27204896feddcdb2e614a0e923bd create mode 100644 fuzz/corpus/backup_roundtrip/7ae9d3a87a851febe01f3b22cc1a5d93b252c458 create mode 100644 fuzz/corpus/backup_roundtrip/7e0e5bf6bfe7e8b9ff63847137cdf3da542ba61a create mode 100644 fuzz/corpus/backup_roundtrip/81674b942a99a418107956520fc5ccf33d51572b create mode 100644 fuzz/corpus/backup_roundtrip/829e4032a7a2d435c86fa85bd46ec2025730ca69 create mode 100644 fuzz/corpus/backup_roundtrip/8379666a3f6db52fb1b873b9bd401d2a7c4be35b create mode 100644 fuzz/corpus/backup_roundtrip/8a68633b1cb42641b7bc6709ac92b08b7ec07056 create mode 100644 fuzz/corpus/backup_roundtrip/8ba7fa1a38dbf1557792368b8e72f751a380bc1e create mode 100644 fuzz/corpus/backup_roundtrip/8bed8ca867a8502dcffaaae94f81b81c9ed30f0f create mode 100644 fuzz/corpus/backup_roundtrip/8dd247113681fdfd089314e60f382b3458099951 create mode 100644 fuzz/corpus/backup_roundtrip/9159cb8bcee7fcb95582f140960cdae72788d326 create mode 100644 fuzz/corpus/backup_roundtrip/91be66245ffc01a429a7e4ad28274ab30acf5dd4 create mode 100644 fuzz/corpus/backup_roundtrip/91cfe05ccf305fd54cd2470abfccbf44feefe543 create mode 100644 fuzz/corpus/backup_roundtrip/987194c88d1c88aec074cb463686c09555d60286 create mode 100644 fuzz/corpus/backup_roundtrip/9a78211436f6d425ec38f5c4e02270801f3524f8 create mode 100644 fuzz/corpus/backup_roundtrip/9a9b1ced5cbeb23b9a7a436e3c4c2a4978aa912c create mode 100644 fuzz/corpus/backup_roundtrip/9ac8792078da533f300de095464a3815abab3146 create mode 100644 fuzz/corpus/backup_roundtrip/9d4dda65871caa0b0c0040c054abd41c00096733 create mode 100644 fuzz/corpus/backup_roundtrip/9dd43e92cb5f675dde987fe23df3b505d4b66fab create mode 100644 fuzz/corpus/backup_roundtrip/9f511931cf34e1ffb681c58306a5a7475a8fcc88 create mode 100644 fuzz/corpus/backup_roundtrip/9f730e87a0e47fef76edddf2be02bbb6f3843ae2 create mode 100644 fuzz/corpus/backup_roundtrip/a96e542745a7b5a705eaa953a6e7d62447e19805 create mode 100644 fuzz/corpus/backup_roundtrip/ab461f6b8a6842a473257a2561c1fbdf91bdfe77 create mode 100644 fuzz/corpus/backup_roundtrip/acb7846b378126240c4c1df45e3bff4f467879d2 create mode 100644 fuzz/corpus/backup_roundtrip/aea09bb502802c9e49e0e082bbeb6cddf1c1b619 create mode 100644 fuzz/corpus/backup_roundtrip/b0d8b474467ef0cf2c4b357185423096289a24c5 create mode 100644 fuzz/corpus/backup_roundtrip/b48f491783e98de10682f2d4455dfce5bdc3c233 create mode 100644 fuzz/corpus/backup_roundtrip/bb9a91283973fc411bab48af18fa7d99a736f699 create mode 100644 fuzz/corpus/backup_roundtrip/bce5569a802b7234f56b4c81344a702e2283d26f create mode 100644 fuzz/corpus/backup_roundtrip/bed14a1dc4e6111e0da227dd5b08d20a16a03dad create mode 100644 fuzz/corpus/backup_roundtrip/bf8b4530d8d246dd74ac53a13471bba17941dff7 create mode 100644 fuzz/corpus/backup_roundtrip/c09aef9f45c0639bc2e49feea98a9449f2b42001 create mode 100644 fuzz/corpus/backup_roundtrip/c1fdffd67e96e5d4c0f4f2f2afd9d8af8d13a509 create mode 100644 fuzz/corpus/backup_roundtrip/c398a1d6e7744204c82f7103c55e437ee0522fb3 create mode 100644 fuzz/corpus/backup_roundtrip/c39a5fabbf5d941ff6a356d2dba04e9f8e6e0789 create mode 100644 fuzz/corpus/backup_roundtrip/c3f8b81ac3ce712176f486809d06f4206f6d1c00 create mode 100644 fuzz/corpus/backup_roundtrip/c61eedf38f9e2026fb936f314dd816ee28b82218 create mode 100644 fuzz/corpus/backup_roundtrip/c6a81894fe0ee6c20b60881e4a5af05bea4a01a2 create mode 100644 fuzz/corpus/backup_roundtrip/c8cc338c4f7247fcd6544b277a898f6ef7bbc08a create mode 100644 fuzz/corpus/backup_roundtrip/c9f814aca47abf29f849367c4d8175fdd54342bd create mode 100644 fuzz/corpus/backup_roundtrip/caf2be64e785a9672685a42a88e9a8a2bc252a00 create mode 100644 fuzz/corpus/backup_roundtrip/cb305244cedd8e3d262dc6b2b7f3868fefc61e76 create mode 100644 fuzz/corpus/backup_roundtrip/cc3b603f6ccc9479b814f96451649baae014d782 create mode 100644 fuzz/corpus/backup_roundtrip/cc94fed09010138232028de27209ef93a4e1acdc create mode 100644 fuzz/corpus/backup_roundtrip/d08f88df745fa7950b104e4a707a31cfce7b5841 create mode 100644 fuzz/corpus/backup_roundtrip/d198281adfae04fda9608acdf45437b588ce7ec6 create mode 100644 fuzz/corpus/backup_roundtrip/d1f71f9492e870b14b8e32fc35611d20d7116fb6 create mode 100644 fuzz/corpus/backup_roundtrip/d264f157ca1df350c982345235e494667ea115d4 create mode 100644 fuzz/corpus/backup_roundtrip/d2e9113109a23c9ada1c8c262d81a440de84099a create mode 100644 fuzz/corpus/backup_roundtrip/d56ddef3702dec9b11de617314aa04c6e5faf6de create mode 100644 fuzz/corpus/backup_roundtrip/d648b57848620d1ebb56e24965247a956924070b create mode 100644 fuzz/corpus/backup_roundtrip/d86bca9ccd60ee64ffef8627679c46419eb480b7 create mode 100644 fuzz/corpus/backup_roundtrip/da534ca7303b10df11df9081af797ee7750aad77 create mode 100644 fuzz/corpus/backup_roundtrip/dcf138229d6789c73f7969dccd743ed882c8a4c1 create mode 100644 fuzz/corpus/backup_roundtrip/dd679d555ae04cd2462a61ff4aad02a73b7eea7a create mode 100644 fuzz/corpus/backup_roundtrip/ddb9fdb16db21d1288cf39ac982926447a58f4c0 create mode 100644 fuzz/corpus/backup_roundtrip/ddbc55fe4465fa9d69a9e4d888afd73c49f8867a create mode 100644 fuzz/corpus/backup_roundtrip/e12eeb3c29d4e22d896e42af48ca8816dfadd3b8 create mode 100644 fuzz/corpus/backup_roundtrip/e2901792677087494cb98a717b0a7e6179966413 create mode 100644 fuzz/corpus/backup_roundtrip/e47aea3140df9bcd504c1473af09ecc1030567f6 create mode 100644 fuzz/corpus/backup_roundtrip/e51e40716d17fe17e7079ded7f2dea03e6d84c55 create mode 100644 fuzz/corpus/backup_roundtrip/e5bf41dcede48e9df626b852dd139c3f31ab8545 create mode 100644 fuzz/corpus/backup_roundtrip/e5ca6bb6da524a1ce24ac678b1295090c8f642a1 create mode 100644 fuzz/corpus/backup_roundtrip/e632b36853518cf2c86175a46d249c122f4fd9d6 create mode 100644 fuzz/corpus/backup_roundtrip/e910345c261713fff55aa46164aa2caa4851d2f9 create mode 100644 fuzz/corpus/backup_roundtrip/eb55642c118d9f2eb6ccaaa7fa37b268da1834cc create mode 100644 fuzz/corpus/backup_roundtrip/ee504363e00c71f68e02722f0f07840bdf329510 create mode 100644 fuzz/corpus/backup_roundtrip/efc4d6f46a7eacd78889a1351e9a88fc7bfc9b17 create mode 100644 fuzz/corpus/backup_roundtrip/f703cf00fe973daf9555cd026edb46e53de47856 create mode 100644 fuzz/corpus/backup_roundtrip/f7f48269dc8ca49d56f73068efca7574d07cb906 create mode 100644 fuzz/corpus/backup_roundtrip/f9b4b95bcd2519ee98574e85ab4158aba53fb5b5 create mode 100644 fuzz/corpus/backup_roundtrip/fadeff742dc7ae024de664dd0e2539c9a6a4f156 create mode 100644 fuzz/corpus/backup_roundtrip/fc77d71e66d25af7069297909c80c0e949167809 create mode 100644 fuzz/corpus/backup_roundtrip/fc95a970ff582095ce54e1459b2694ef66ee93e9 create mode 100644 fuzz/corpus/backup_roundtrip/fd6f5aa90211853e795941406d2ad180c56b93c0 create mode 100644 fuzz/fuzz_targets/backup_roundtrip.rs diff --git a/CHANGELOG.md b/CHANGELOG.md index 31ffb6e..b880692 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,31 @@ All notable changes to NotAlterra are documented in this file. --- +## [v0.4.0] — 2026-06-03 + +### Added +- **`--help` / `-h` flag** — displays usage information +- **tar.gz backup format** — one archive per backup event, all slots in one + file. Standard `tar -xzf` recovers data without the tool (no vendor lock-in). + Safeguards: atomic write (`.tmp` → rename), per-file SHA256 manifest, + per-entry restore without full decompress. +- **Migration path** — old `NotAlterra_Backups/` directory-tree backups are + automatically detected and imported into the new tar.gz format +- **Bus factor mitigation** — documented in GOVERNANCE.md: emergency signing + key stored with a non-technical trusted person, revocable if compromised + +### Changed +- **File layout** — backups stored in `backups/saves/` (tar.gz), + `backups/config/` (.ini archives), logs in `logs/transaction.log` +- **Stale `config.ini` removed** on first launch from prior versions +- **Dependencies** — added `tar` + `flate2` (pure Rust, +~150KB binary) + +### Testing +- 6 migration unit tests (basic, empty, nonexistent, integrity, filtering, idempotency) +- Full round-trip integration tests for tar.gz backup/restore +- Fuzz target for backup round-trip (10s: 11,717 runs, zero crashes) +- File permissions fixed in tar headers (`0o644` instead of `0o000`) + ## [v0.3.2] — 2026-06-02 ### Added diff --git a/Cargo.lock b/Cargo.lock index 2c6e90c..8997d89 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -540,7 +540,7 @@ dependencies = [ [[package]] name = "notalterra" -version = "0.3.2" +version = "0.4.0" dependencies = [ "anyhow", "chrono", diff --git a/Cargo.toml b/Cargo.toml index 7ae4db8..4487395 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "notalterra" -version = "0.3.2" +version = "0.4.0" edition = "2021" authors = ["NotAlterra"] license = "MIT" diff --git a/_release.md b/_release.md index b7558fd..5d01e12 100644 --- a/_release.md +++ b/_release.md @@ -4,11 +4,15 @@ Cross-platform terminal application. No admin permissions or network access req Pre-compiled binaries — no installation, no dependencies. Just download, extract, and run. -### What's new in v0.3.2 +### What's new in v0.4.0 -• `config.ini` removed entirely — no paths written to disk -• Save folder is session-only, entered via `Set save folder` -• Disclaimer tracked via 0-byte sentinel file (`NotAlterra_LICENSE_ACCEPTED`) -• Lightweight startup check for common save paths (no profile/drive scans) +• tar.gz backup format — one archive per backup event, standard `tar -xzf` recovers data without the tool +• File restructure: `backups/saves/`, `backups/config/`, `logs/` +• Automatic migration from old `NotAlterra_Backups/` directory-tree format +• `--help` / `-h` flag +• Stale `config.ini` auto-removed from prior versions +• Bus factor mitigation plan documented in GOVERNANCE.md +• 6 migration tests, full round-trip tar.gz integration tests +• `tar` + `flate2` dependencies added (pure Rust, ~150KB increase) _Builds: Linux (amd64) • Windows x64_ diff --git a/fuzz/Cargo.lock b/fuzz/Cargo.lock index ba6080c..f31f382 100644 --- a/fuzz/Cargo.lock +++ b/fuzz/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "adler2" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "320119579fcad9c21884f5c4861d16174d0e06250625266f50fe6898340abefa" + [[package]] name = "aho-corasick" version = "1.1.4" @@ -122,6 +128,15 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" +[[package]] +name = "crc32fast" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" +dependencies = [ + "cfg-if", +] + [[package]] name = "crossterm" version = "0.28.1" @@ -132,7 +147,7 @@ dependencies = [ "crossterm_winapi", "mio", "parking_lot", - "rustix", + "rustix 0.38.44", "signal-hook", "signal-hook-mio", "winapi", @@ -224,12 +239,32 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "filetime" +version = "0.2.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c287a33c7f0a620c38e641e7f60827713987b3c0f26e8ddc9462cc69cf75759" +dependencies = [ + "cfg-if", + "libc", +] + [[package]] name = "find-msvc-tools" version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5baebc0774151f905a1a2cc41989300b1e6fbb29aff0ceffa1064fdd3088d582" +[[package]] +name = "flate2" +version = "1.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "843fba2746e448b37e26a819579957415c8cef339bf08564fe8b7ddbd959573c" +dependencies = [ + "crc32fast", + "miniz_oxide", +] + [[package]] name = "foldhash" version = "0.1.5" @@ -420,6 +455,12 @@ version = "0.4.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d26c52dbd32dccf2d10cac7725f8eae5296885fb5703b261f7d0a0739ec807ab" +[[package]] +name = "linux-raw-sys" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a66949e030da00e8c7d4434b251670a91556f4144941d37452769c25d58a53" + [[package]] name = "lock_api" version = "0.4.14" @@ -456,6 +497,16 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" +[[package]] +name = "miniz_oxide" +version = "0.8.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1fa76a2c86f704bdb222d66965fb3d63269ce38518b83cb0575fca855ebb6316" +dependencies = [ + "adler2", + "simd-adler32", +] + [[package]] name = "mio" version = "1.2.1" @@ -480,15 +531,17 @@ dependencies = [ [[package]] name = "notalterra" -version = "0.2.3" +version = "0.4.0" dependencies = [ "anyhow", "chrono", "crossterm", "dirs", + "flate2", "nom", "ratatui", "regex", + "tar", "unicode-width 0.2.0", ] @@ -659,10 +712,23 @@ dependencies = [ "bitflags", "errno", "libc", - "linux-raw-sys", + "linux-raw-sys 0.4.15", "windows-sys 0.59.0", ] +[[package]] +name = "rustix" +version = "1.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6fe4565b9518b83ef4f91bb47ce29620ca828bd32cb7e408f0062e9930ba190" +dependencies = [ + "bitflags", + "errno", + "libc", + "linux-raw-sys 0.12.1", + "windows-sys 0.61.2", +] + [[package]] name = "rustversion" version = "1.0.22" @@ -718,6 +784,12 @@ dependencies = [ "libc", ] +[[package]] +name = "simd-adler32" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "703d5c7ef118737c72f1af64ad2f6f8c5e1921f818cdcb97b8fe6fc69bf66214" + [[package]] name = "slab" version = "0.4.12" @@ -775,6 +847,17 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "tar" +version = "0.4.46" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f6221d9a6003c78398e3b239969f352578258df48c8eb051caadae0015bc840" +dependencies = [ + "filetime", + "libc", + "xattr", +] + [[package]] name = "thiserror" version = "1.0.69" @@ -1124,3 +1207,13 @@ name = "wit-bindgen" version = "0.57.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ebf944e87a7c253233ad6766e082e3cd714b5d03812acc24c318f549614536e" + +[[package]] +name = "xattr" +version = "1.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e45ad4206f6d2479085147f02bc2ef834ac85886624a23575ae137c8aa8156" +dependencies = [ + "libc", + "rustix 1.1.4", +] diff --git a/fuzz/Cargo.toml b/fuzz/Cargo.toml index 1b061ff..3e412df 100644 --- a/fuzz/Cargo.toml +++ b/fuzz/Cargo.toml @@ -26,3 +26,10 @@ path = "fuzz_targets/full_metadata.rs" test = false doc = false bench = false + +[[bin]] +name = "backup_roundtrip" +path = "fuzz_targets/backup_roundtrip.rs" +test = false +doc = false +bench = false diff --git a/fuzz/corpus/backup_roundtrip/00375065763ad15e0a040210fcc6a75e14be67dc b/fuzz/corpus/backup_roundtrip/00375065763ad15e0a040210fcc6a75e14be67dc new file mode 100644 index 0000000..1238cbf --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/00375065763ad15e0a040210fcc6a75e14be67dc @@ -0,0 +1 @@ +GGGG \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/032b3d15041f03dbd006844b823cd7126b556bc0 b/fuzz/corpus/backup_roundtrip/032b3d15041f03dbd006844b823cd7126b556bc0 new file mode 100644 index 0000000000000000000000000000000000000000..f25e15b6d74f07ac61973aecdb9caf5457291ad9 GIT binary patch literal 25 acmdNeV%)%}zyJd33`}5}f$^z=Is*V8{sMyl literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/0346abc3ab53a2969524e1087e202a8a51e99494 b/fuzz/corpus/backup_roundtrip/0346abc3ab53a2969524e1087e202a8a51e99494 new file mode 100644 index 0000000000000000000000000000000000000000..4584cf767b5a12b45dc63e15c5729ce139426555 GIT binary patch literal 8 PcmY#kP+(9{P+$N60|)@6 literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/037511fa9fa48c1ee67992fbfc59f09fba7b3b3d b/fuzz/corpus/backup_roundtrip/037511fa9fa48c1ee67992fbfc59f09fba7b3b3d new file mode 100644 index 0000000000000000000000000000000000000000..ed6e48cdc832d0470b55fa1a47a3bddd4bbe1abd GIT binary patch literal 24 ZcmdNeV%)%}z`+0l|Net12F9lf8UQoc1YiIF literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/082736e67e56018e6391be1fc06089fb207edc54 b/fuzz/corpus/backup_roundtrip/082736e67e56018e6391be1fc06089fb207edc54 new file mode 100644 index 0000000..f6a5055 --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/082736e67e56018e6391be1fc06089fb207edc54 @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/09fc0a4fe15bea513ea8508d169180181f53e9f3 b/fuzz/corpus/backup_roundtrip/09fc0a4fe15bea513ea8508d169180181f53e9f3 new file mode 100644 index 0000000000000000000000000000000000000000..ddb4f36bb95cca1003eac8e94aead1807b12091d GIT binary patch literal 6 NcmZQjU{FwC1ONd?0Ac_D literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/0b832ffe11d2337ca3efd79aa32140076d90dc67 b/fuzz/corpus/backup_roundtrip/0b832ffe11d2337ca3efd79aa32140076d90dc67 new file mode 100644 index 0000000000000000000000000000000000000000..4d0d40121c66b56579b333a7fe9a7319b3cf7783 GIT binary patch literal 3 KcmZQzPyhe`BLE=) literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/0dcd89913dc99f3bb7a5d569202e52649e853bd5 b/fuzz/corpus/backup_roundtrip/0dcd89913dc99f3bb7a5d569202e52649e853bd5 new file mode 100644 index 0000000000000000000000000000000000000000..dce3d385a45e28d8ab2d66f662862e913f3b412a GIT binary patch literal 22 dcma!yjEu}z78U)^V93BAD$2khZ^fjg4gfss1SbFh literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/0fe989db61671a168541c0359e65c690e5e5b345 b/fuzz/corpus/backup_roundtrip/0fe989db61671a168541c0359e65c690e5e5b345 new file mode 100644 index 0000000000000000000000000000000000000000..a8164cb61eb554dbc7475b4fa5cbdba43f71a35b GIT binary patch literal 6 NcmZQzU|`^Q0002?0OA( literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/15a7ea2aa657c56e1f3924ddc513053eda4ee86c b/fuzz/corpus/backup_roundtrip/15a7ea2aa657c56e1f3924ddc513053eda4ee86c new file mode 100644 index 0000000000000000000000000000000000000000..f46622e111f0d92c63ff49a574ad1b025945ea07 GIT binary patch literal 8 McmZQ#WB>s!001cf4gdfE literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/178746ad37342913168064c5697c45def1772b5d b/fuzz/corpus/backup_roundtrip/178746ad37342913168064c5697c45def1772b5d new file mode 100644 index 0000000000000000000000000000000000000000..d3bed84049f65d3af91cecd17ecb77531f2799af GIT binary patch literal 24 bcmdNeWZb~0zyJd33`{_hgTax3@u>m;9<&0a literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/1b6453892473a467d07372d45eb05abc2031647a b/fuzz/corpus/backup_roundtrip/1b6453892473a467d07372d45eb05abc2031647a new file mode 100644 index 0000000..bf0d87a --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/1b6453892473a467d07372d45eb05abc2031647a @@ -0,0 +1 @@ +4 \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/223fd7f7045ebe351ae2d2da420be6d387a6cf35 b/fuzz/corpus/backup_roundtrip/223fd7f7045ebe351ae2d2da420be6d387a6cf35 new file mode 100644 index 0000000000000000000000000000000000000000..2934e3d025b191b5eb6578359c88797e3dbb46d6 GIT binary patch literal 10 McmZSh&&2=%00~h63IG5A literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/23e54686b5c01fb7674ba3a6b48129738b0f5186 b/fuzz/corpus/backup_roundtrip/23e54686b5c01fb7674ba3a6b48129738b0f5186 new file mode 100644 index 0000000000000000000000000000000000000000..6266ea40c11ddbcfcc9e688b784f70d48717f126 GIT binary patch literal 3 KcmZQzQ~&?~B>*A- literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/2ad8102ef897a11f5c34702d41db8a5ea8d824d5 b/fuzz/corpus/backup_roundtrip/2ad8102ef897a11f5c34702d41db8a5ea8d824d5 new file mode 100644 index 0000000..c7125b0 --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/2ad8102ef897a11f5c34702d41db8a5ea8d824d5 @@ -0,0 +1 @@ +ïþÿ; \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/2b16aab19cae6cdcd54a33aa0325508e79302926 b/fuzz/corpus/backup_roundtrip/2b16aab19cae6cdcd54a33aa0325508e79302926 new file mode 100644 index 0000000000000000000000000000000000000000..1a3ae2ab60b7185e62185e0beda5826f48c0c5cf GIT binary patch literal 10 McmZQzfB=pM008;`=>Px# literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/2c0ab0ab8e7d4e5dde15c135813a3e70dfc32400 b/fuzz/corpus/backup_roundtrip/2c0ab0ab8e7d4e5dde15c135813a3e70dfc32400 new file mode 100644 index 0000000..5dfa5e6 --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/2c0ab0ab8e7d4e5dde15c135813a3e70dfc32400 @@ -0,0 +1 @@ +–4 \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/2c91860cce9fbe5f9ce73ed6836bbe789a7d0589 b/fuzz/corpus/backup_roundtrip/2c91860cce9fbe5f9ce73ed6836bbe789a7d0589 new file mode 100644 index 0000000000000000000000000000000000000000..246ab46ed4091b360a9591b1a2ab65704db152ee GIT binary patch literal 18 QcmZSh&wvE}`u{ru02rbK4gdfE literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/2e622b0c32f96f49a83836b82d727c51c657079d b/fuzz/corpus/backup_roundtrip/2e622b0c32f96f49a83836b82d727c51c657079d new file mode 100644 index 0000000000000000000000000000000000000000..9a3c10e35d5135c675a66fe9590787afc27c3c28 GIT binary patch literal 10 RcmY#pP-b9cV321}1^@#F0Ez$r literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/2f1952914960f6f0ad959ea647241b3a71d90c64 b/fuzz/corpus/backup_roundtrip/2f1952914960f6f0ad959ea647241b3a71d90c64 new file mode 100644 index 0000000000000000000000000000000000000000..6b6a778e0c4cd7fff68eaf46097609fbc6fb04ec GIT binary patch literal 12 TcmY!iU{K)lQeaR}U~~Zh3UC38 literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/316e69ba9e8d3c827b05a4036817aaf88cae3d2b b/fuzz/corpus/backup_roundtrip/316e69ba9e8d3c827b05a4036817aaf88cae3d2b new file mode 100644 index 0000000000000000000000000000000000000000..bdd9db053e1677cf2afa529bf5c0953f4cf56225 GIT binary patch literal 12 ScmdnM$Z(GV2sj>aJOBU_)dOGv literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/3b484d1bad41855e5b61729f6aac1125b068ca4f b/fuzz/corpus/backup_roundtrip/3b484d1bad41855e5b61729f6aac1125b068ca4f new file mode 100644 index 0000000000000000000000000000000000000000..98767db5296e2c55f2f0a42abec9c660f339b56e GIT binary patch literal 14 VcmZQjc+bedz{tVCz_5Tp0RRsz0onin literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/3c49eff7d2e536583784d4b018eec583d3173c93 b/fuzz/corpus/backup_roundtrip/3c49eff7d2e536583784d4b018eec583d3173c93 new file mode 100644 index 0000000000000000000000000000000000000000..0a03c387ba5cd2002c5895308ae8fb590f4a9a85 GIT binary patch literal 17 ScmZQz00A=%FvY;Apa1{_Rsf&? literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/3cedf42c03a95e8e3a880559b370525543e1b324 b/fuzz/corpus/backup_roundtrip/3cedf42c03a95e8e3a880559b370525543e1b324 new file mode 100644 index 0000000..d717825 --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/3cedf42c03a95e8e3a880559b370525543e1b324 @@ -0,0 +1 @@ +à \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/3e0ba38c0e772f30cd4dc2ba9c0c86156b20ff8f b/fuzz/corpus/backup_roundtrip/3e0ba38c0e772f30cd4dc2ba9c0c86156b20ff8f new file mode 100644 index 0000000..bb413e2 --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/3e0ba38c0e772f30cd4dc2ba9c0c86156b20ff8f @@ -0,0 +1 @@ +YYYYo#ÿ:*: \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/3f103388f76aedfe6e3d84212154a7e2d2328d08 b/fuzz/corpus/backup_roundtrip/3f103388f76aedfe6e3d84212154a7e2d2328d08 new file mode 100644 index 0000000..862b03e --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/3f103388f76aedfe6e3d84212154a7e2d2328d08 @@ -0,0 +1 @@ +RRRRRRRRR.RRRJRR4 \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/4075570331c964ffcfe40237c1a67fcb2e022ae3 b/fuzz/corpus/backup_roundtrip/4075570331c964ffcfe40237c1a67fcb2e022ae3 new file mode 100644 index 0000000..405f6f8 --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/4075570331c964ffcfe40237c1a67fcb2e022ae3 @@ -0,0 +1 @@ +#ø#ø#ø \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/426f8bfcf1f135e9cb0fac2a2bec862474583dbd b/fuzz/corpus/backup_roundtrip/426f8bfcf1f135e9cb0fac2a2bec862474583dbd new file mode 100644 index 0000000000000000000000000000000000000000..053e80c5ce3fea32303ca14824862d70a3d0858d GIT binary patch literal 15 NcmY#pfCB{}3jhL~07L)) literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/4359ece2bf96771557a783e54f14f985349cc3e2 b/fuzz/corpus/backup_roundtrip/4359ece2bf96771557a783e54f14f985349cc3e2 new file mode 100644 index 0000000000000000000000000000000000000000..3afd690ffeaa601bbd7aff2764f2cb6d98dc14ef GIT binary patch literal 20 bcmb1SWMp9UV)}3W*Z0)zkn literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/584931419cc9a74b0a63855918ce225b42cf8f98 b/fuzz/corpus/backup_roundtrip/584931419cc9a74b0a63855918ce225b42cf8f98 new file mode 100644 index 0000000000000000000000000000000000000000..133b4133b5655a416a8894216942183f7fa9c250 GIT binary patch literal 6 NcmZQjF#5yA000Db0a*Y5 literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/5966d1891aaa30a9985e25a816f16b226593a91e b/fuzz/corpus/backup_roundtrip/5966d1891aaa30a9985e25a816f16b226593a91e new file mode 100644 index 0000000000000000000000000000000000000000..f4f151fdbab65fa4667eddecd2371974f3a859e4 GIT binary patch literal 16 PcmZQzfCDoPMg;``0wDmP literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/5b6dd333ba7b333c804ce80a657150b5735bd881 b/fuzz/corpus/backup_roundtrip/5b6dd333ba7b333c804ce80a657150b5735bd881 new file mode 100644 index 0000000..3de39c7 --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/5b6dd333ba7b333c804ce80a657150b5735bd881 @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/5e55fb95abcb756721b21bfadb77c2053e0fa913 b/fuzz/corpus/backup_roundtrip/5e55fb95abcb756721b21bfadb77c2053e0fa913 new file mode 100644 index 0000000..3695ae0 --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/5e55fb95abcb756721b21bfadb77c2053e0fa913 @@ -0,0 +1 @@ +? \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/606d08c55e3a27356326d9ac3b268d7b90d7b8d0 b/fuzz/corpus/backup_roundtrip/606d08c55e3a27356326d9ac3b268d7b90d7b8d0 new file mode 100644 index 0000000..62dd736 --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/606d08c55e3a27356326d9ac3b268d7b90d7b8d0 @@ -0,0 +1 @@ +ïþÿ°; \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/61cb6970f84fa19ac7e63645cdad4e8adb295143 b/fuzz/corpus/backup_roundtrip/61cb6970f84fa19ac7e63645cdad4e8adb295143 new file mode 100644 index 0000000000000000000000000000000000000000..00b1bad1af9fd7f7acdba2c61a53d7149db82081 GIT binary patch literal 20 Zcma!yjEu}z76pR;h71f0@>Wb*Rsb}s1Udi! literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/62d84a8a7963c991c97b17ed83243fa9da665781 b/fuzz/corpus/backup_roundtrip/62d84a8a7963c991c97b17ed83243fa9da665781 new file mode 100644 index 0000000000000000000000000000000000000000..3ae7dc1b2e2012872f86a6c611464edfd5b91658 GIT binary patch literal 23 YcmdNeV%)%}zyJd33`}5}f$^yV02}xMTmS$7 literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/642c5d3fb55f87d2873f89b1ab9a3890a6528d62 b/fuzz/corpus/backup_roundtrip/642c5d3fb55f87d2873f89b1ab9a3890a6528d62 new file mode 100644 index 0000000000000000000000000000000000000000..0a71a62fc5b73bc0e7c826a25eaa0cc37e096fc7 GIT binary patch literal 6 NcmZQzU|?`}2LJ%u0FM9w literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/668a73857146391ad0c9cea3ed52f174db2809c1 b/fuzz/corpus/backup_roundtrip/668a73857146391ad0c9cea3ed52f174db2809c1 new file mode 100644 index 0000000000000000000000000000000000000000..5f44d487600df2c3c1f393a6931bd57117370418 GIT binary patch literal 11 McmY#ZW`F`^00RvGY5)KL literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/6845d20d042b3d863f972547c38648ccf70a19c4 b/fuzz/corpus/backup_roundtrip/6845d20d042b3d863f972547c38648ccf70a19c4 new file mode 100644 index 0000000000000000000000000000000000000000..5fd922a5ebcbfaa40489576efd4ef5ceffca88e1 GIT binary patch literal 5 Mcmey*^`GHC00|@m2mk;8 literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/6851bd83a1c5ee8f44421bf5a2c42388d83dd6f8 b/fuzz/corpus/backup_roundtrip/6851bd83a1c5ee8f44421bf5a2c42388d83dd6f8 new file mode 100644 index 0000000000000000000000000000000000000000..a1a440b06ac636cef82fcabc2fcd25453b61e8fd GIT binary patch literal 10 RcmZQzaA#m(6kuR*2LJ-j0H6Q> literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/6acfd663830de54a5d707831cf4c5e962a62778e b/fuzz/corpus/backup_roundtrip/6acfd663830de54a5d707831cf4c5e962a62778e new file mode 100644 index 0000000..bec856f --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/6acfd663830de54a5d707831cf4c5e962a62778e @@ -0,0 +1 @@ +2ü \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/6b2f6a4b6578438e7a05b64b404ba8fbc31ae3a8 b/fuzz/corpus/backup_roundtrip/6b2f6a4b6578438e7a05b64b404ba8fbc31ae3a8 new file mode 100644 index 0000000000000000000000000000000000000000..c271fe5135041e55e208630b450984ebca5594a7 GIT binary patch literal 19 Wcmb3D|Ns91AO->^1_cFqAPoSG4h=N` literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/6e28ab0c7668f84eabaf45986c639a96eec56b2d b/fuzz/corpus/backup_roundtrip/6e28ab0c7668f84eabaf45986c639a96eec56b2d new file mode 100644 index 0000000..b2ab8de --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/6e28ab0c7668f84eabaf45986c639a96eec56b2d @@ -0,0 +1 @@ +( \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/6e32f6c9f14717fe7bd9679f3151a40e93575b4b b/fuzz/corpus/backup_roundtrip/6e32f6c9f14717fe7bd9679f3151a40e93575b4b new file mode 100644 index 0000000000000000000000000000000000000000..2a671a40a1a20e44f18f231b51df33cfafc6512c GIT binary patch literal 23 XcmXqHU|{&??hYgw7&$;B7`OufA-Dn# literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/71853c6197a6a7f222db0f1978c7cb232b87c5ee b/fuzz/corpus/backup_roundtrip/71853c6197a6a7f222db0f1978c7cb232b87c5ee new file mode 100644 index 0000000..139597f --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/71853c6197a6a7f222db0f1978c7cb232b87c5ee @@ -0,0 +1,2 @@ + + diff --git a/fuzz/corpus/backup_roundtrip/74cd6ea771c205e76e167653937e851ccd01a6fd b/fuzz/corpus/backup_roundtrip/74cd6ea771c205e76e167653937e851ccd01a6fd new file mode 100644 index 0000000000000000000000000000000000000000..0555d41830730194af68e4016b9db351376738dd GIT binary patch literal 8 PcmZQ#P*70#FV6@71vCMI literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/75d586e6bbfc42dcf869fbf1b0de196c4761c5de b/fuzz/corpus/backup_roundtrip/75d586e6bbfc42dcf869fbf1b0de196c4761c5de new file mode 100644 index 0000000000000000000000000000000000000000..f7cf475a11ccc8623fb94a399fa1d2dfd17186d1 GIT binary patch literal 10 RcmY#p_|L%jltG?B82}Dn0!sh@ literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/77009a6085435b62ef92c6f1d5b343e9cc06e080 b/fuzz/corpus/backup_roundtrip/77009a6085435b62ef92c6f1d5b343e9cc06e080 new file mode 100644 index 0000000000000000000000000000000000000000..ce5908e2c4eaa07b239245038f8fbeb9bacb65f9 GIT binary patch literal 24 gcmZSouc`b;`H%a5d1i*&{}~vcGRQM1hr1{P0DKV$mH+?% literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/77ce0377defbd11b77b1f4ad54ca40ea5ef28490 b/fuzz/corpus/backup_roundtrip/77ce0377defbd11b77b1f4ad54ca40ea5ef28490 new file mode 100644 index 0000000000000000000000000000000000000000..ae1b13fd18107622774c7b24a665ba0d1d1e0701 GIT binary patch literal 7 KcmZQz00RI32LJ&8 literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/785c30dd5c81882f90c41c51df628445f0e0929e b/fuzz/corpus/backup_roundtrip/785c30dd5c81882f90c41c51df628445f0e0929e new file mode 100644 index 0000000..fe69ec0 --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/785c30dd5c81882f90c41c51df628445f0e0929e @@ -0,0 +1 @@ +€ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/788ffe80ba52ac35784a978677f4e202034a4d0c b/fuzz/corpus/backup_roundtrip/788ffe80ba52ac35784a978677f4e202034a4d0c new file mode 100644 index 0000000..7120d24 --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/788ffe80ba52ac35784a978677f4e202034a4d0c @@ -0,0 +1 @@ +(,.,. \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/7992d7ed3aae27204896feddcdb2e614a0e923bd b/fuzz/corpus/backup_roundtrip/7992d7ed3aae27204896feddcdb2e614a0e923bd new file mode 100644 index 0000000..60666bc --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/7992d7ed3aae27204896feddcdb2e614a0e923bd @@ -0,0 +1 @@ +#ü# \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/7ae9d3a87a851febe01f3b22cc1a5d93b252c458 b/fuzz/corpus/backup_roundtrip/7ae9d3a87a851febe01f3b22cc1a5d93b252c458 new file mode 100644 index 0000000..b8b4294 --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/7ae9d3a87a851febe01f3b22cc1a5d93b252c458 @@ -0,0 +1 @@ +:* \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/7e0e5bf6bfe7e8b9ff63847137cdf3da542ba61a b/fuzz/corpus/backup_roundtrip/7e0e5bf6bfe7e8b9ff63847137cdf3da542ba61a new file mode 100644 index 0000000000000000000000000000000000000000..e6a5314dd7eadc604dd6abe6c3b056c82e9e865e GIT binary patch literal 5 McmZQjP+(91009L6VE_OC literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/81674b942a99a418107956520fc5ccf33d51572b b/fuzz/corpus/backup_roundtrip/81674b942a99a418107956520fc5ccf33d51572b new file mode 100644 index 0000000000000000000000000000000000000000..c0b2a3ec5254afb059fadffd2c92d8b96bcb3c98 GIT binary patch literal 5 McmZQzU}3Tb002+`LI3~& literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/829e4032a7a2d435c86fa85bd46ec2025730ca69 b/fuzz/corpus/backup_roundtrip/829e4032a7a2d435c86fa85bd46ec2025730ca69 new file mode 100644 index 0000000000000000000000000000000000000000..b82f3e72d91d336e8709ed382914c19090768711 GIT binary patch literal 15 ScmZQz00J`&5XrECQ2_u2#Q`t? literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/8379666a3f6db52fb1b873b9bd401d2a7c4be35b b/fuzz/corpus/backup_roundtrip/8379666a3f6db52fb1b873b9bd401d2a7c4be35b new file mode 100644 index 0000000000000000000000000000000000000000..2404e5af4f958517738d846cb9ea5a20a2a8dd1f GIT binary patch literal 25 ccmdNeWZb~0zyJh{UJOh?ii5$C5lB@403h1}I{*Lx literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/8a68633b1cb42641b7bc6709ac92b08b7ec07056 b/fuzz/corpus/backup_roundtrip/8a68633b1cb42641b7bc6709ac92b08b7ec07056 new file mode 100644 index 0000000..9fb8d10 --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/8a68633b1cb42641b7bc6709ac92b08b7ec07056 @@ -0,0 +1 @@ +ôü? \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/8ba7fa1a38dbf1557792368b8e72f751a380bc1e b/fuzz/corpus/backup_roundtrip/8ba7fa1a38dbf1557792368b8e72f751a380bc1e new file mode 100644 index 0000000000000000000000000000000000000000..9b01e0fb8a73796dcfa55d8211cfa628f4683bc7 GIT binary patch literal 3 Kcmd;LU<3dFA^;2k literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/8bed8ca867a8502dcffaaae94f81b81c9ed30f0f b/fuzz/corpus/backup_roundtrip/8bed8ca867a8502dcffaaae94f81b81c9ed30f0f new file mode 100644 index 0000000000000000000000000000000000000000..358f3d24ef2f11df09620b013f3d7a95febb1ae1 GIT binary patch literal 4 LcmZQj@NxkF0XzV& literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/8dd247113681fdfd089314e60f382b3458099951 b/fuzz/corpus/backup_roundtrip/8dd247113681fdfd089314e60f382b3458099951 new file mode 100644 index 0000000..a7e27d6 --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/8dd247113681fdfd089314e60f382b3458099951 @@ -0,0 +1 @@ +ïþÿ;¦; \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/9159cb8bcee7fcb95582f140960cdae72788d326 b/fuzz/corpus/backup_roundtrip/9159cb8bcee7fcb95582f140960cdae72788d326 new file mode 100644 index 0000000..40fdece --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/9159cb8bcee7fcb95582f140960cdae72788d326 @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/91be66245ffc01a429a7e4ad28274ab30acf5dd4 b/fuzz/corpus/backup_roundtrip/91be66245ffc01a429a7e4ad28274ab30acf5dd4 new file mode 100644 index 0000000..c1c5845 --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/91be66245ffc01a429a7e4ad28274ab30acf5dd4 @@ -0,0 +1 @@ +ÿ:*: \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/91cfe05ccf305fd54cd2470abfccbf44feefe543 b/fuzz/corpus/backup_roundtrip/91cfe05ccf305fd54cd2470abfccbf44feefe543 new file mode 100644 index 0000000..17af4ca --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/91cfe05ccf305fd54cd2470abfccbf44feefe543 @@ -0,0 +1 @@ +Ü \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/987194c88d1c88aec074cb463686c09555d60286 b/fuzz/corpus/backup_roundtrip/987194c88d1c88aec074cb463686c09555d60286 new file mode 100644 index 0000000..070b0c8 --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/987194c88d1c88aec074cb463686c09555d60286 @@ -0,0 +1 @@ +qÿÿqqqqqqqqqŽôØÿÿÿÿ \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/9a78211436f6d425ec38f5c4e02270801f3524f8 b/fuzz/corpus/backup_roundtrip/9a78211436f6d425ec38f5c4e02270801f3524f8 new file mode 100644 index 0000000..b516b2c --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/9a78211436f6d425ec38f5c4e02270801f3524f8 @@ -0,0 +1 @@ +@ \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/9a9b1ced5cbeb23b9a7a436e3c4c2a4978aa912c b/fuzz/corpus/backup_roundtrip/9a9b1ced5cbeb23b9a7a436e3c4c2a4978aa912c new file mode 100644 index 0000000..554c2e1 --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/9a9b1ced5cbeb23b9a7a436e3c4c2a4978aa912c @@ -0,0 +1 @@ +ÿ;ýOþÄ#ü#üGWD \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/9ac8792078da533f300de095464a3815abab3146 b/fuzz/corpus/backup_roundtrip/9ac8792078da533f300de095464a3815abab3146 new file mode 100644 index 0000000..a19acca --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/9ac8792078da533f300de095464a3815abab3146 @@ -0,0 +1 @@ +ìõïþ*ÿ° \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/9d4dda65871caa0b0c0040c054abd41c00096733 b/fuzz/corpus/backup_roundtrip/9d4dda65871caa0b0c0040c054abd41c00096733 new file mode 100644 index 0000000000000000000000000000000000000000..9bed60510a88fa03d1030c2c5005b53bb47e9f33 GIT binary patch literal 10 RcmWGwQ1DV90!jd` literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/c398a1d6e7744204c82f7103c55e437ee0522fb3 b/fuzz/corpus/backup_roundtrip/c398a1d6e7744204c82f7103c55e437ee0522fb3 new file mode 100644 index 0000000000000000000000000000000000000000..690bf0af019d4d17b908a2d074d05cbfea518183 GIT binary patch literal 5 McmZQjP+(*P008I!LjV8( literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/c39a5fabbf5d941ff6a356d2dba04e9f8e6e0789 b/fuzz/corpus/backup_roundtrip/c39a5fabbf5d941ff6a356d2dba04e9f8e6e0789 new file mode 100644 index 0000000000000000000000000000000000000000..1e691ed75255dec924aed71659462e7b55ace180 GIT binary patch literal 9 QcmZQ#WRTWkU|`?^00E%@Qvd(} literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/c3f8b81ac3ce712176f486809d06f4206f6d1c00 b/fuzz/corpus/backup_roundtrip/c3f8b81ac3ce712176f486809d06f4206f6d1c00 new file mode 100644 index 0000000000000000000000000000000000000000..2578362ac8858c138c80b03b44f7d34e8b49814e GIT binary patch literal 11 ScmY#pxc#4j@hO8mgE9aXHUlOA literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/c61eedf38f9e2026fb936f314dd816ee28b82218 b/fuzz/corpus/backup_roundtrip/c61eedf38f9e2026fb936f314dd816ee28b82218 new file mode 100644 index 0000000000000000000000000000000000000000..9f590fdfeb8e209fe2fd6fe21451249bd78d2bfb GIT binary patch literal 24 YcmdNeV%)%}zyJaqU=m0$K2^{F036c-V*mgE literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/c6a81894fe0ee6c20b60881e4a5af05bea4a01a2 b/fuzz/corpus/backup_roundtrip/c6a81894fe0ee6c20b60881e4a5af05bea4a01a2 new file mode 100644 index 0000000..fa7784d --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/c6a81894fe0ee6c20b60881e4a5af05bea4a01a2 @@ -0,0 +1 @@ +ÿÿŽôØÿÿÿÿ \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/c8cc338c4f7247fcd6544b277a898f6ef7bbc08a b/fuzz/corpus/backup_roundtrip/c8cc338c4f7247fcd6544b277a898f6ef7bbc08a new file mode 100644 index 0000000000000000000000000000000000000000..d93368b94203d1d793c80830950f25cf482d5bb1 GIT binary patch literal 24 WcmY#pWB>yuAZeh?z+emEDgyusV*uI! literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/c9f814aca47abf29f849367c4d8175fdd54342bd b/fuzz/corpus/backup_roundtrip/c9f814aca47abf29f849367c4d8175fdd54342bd new file mode 100644 index 0000000000000000000000000000000000000000..60d663ce0f12287c392d68e28279a79605cc1e73 GIT binary patch literal 24 ccma!yjEu}z76pR;h71f0@>Wb*hCpBi07qE_{r~^~ literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/caf2be64e785a9672685a42a88e9a8a2bc252a00 b/fuzz/corpus/backup_roundtrip/caf2be64e785a9672685a42a88e9a8a2bc252a00 new file mode 100644 index 0000000000000000000000000000000000000000..a5662bc75bcb26a4ad5a2faa8d423f67b8d47d45 GIT binary patch literal 17 WcmaF!mFqvlf2KDeYQuk~4I2PlKMCgm literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/cb305244cedd8e3d262dc6b2b7f3868fefc61e76 b/fuzz/corpus/backup_roundtrip/cb305244cedd8e3d262dc6b2b7f3868fefc61e76 new file mode 100644 index 0000000..9b44ac9 --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/cb305244cedd8e3d262dc6b2b7f3868fefc61e76 @@ -0,0 +1 @@ +þGGG \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/cc3b603f6ccc9479b814f96451649baae014d782 b/fuzz/corpus/backup_roundtrip/cc3b603f6ccc9479b814f96451649baae014d782 new file mode 100644 index 0000000000000000000000000000000000000000..3a1132d7b4ea53166740f67a60ce4896e153133c GIT binary patch literal 5 McmZQ@W>DY&00CJ5YybcN literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/cc94fed09010138232028de27209ef93a4e1acdc b/fuzz/corpus/backup_roundtrip/cc94fed09010138232028de27209ef93a4e1acdc new file mode 100644 index 0000000000000000000000000000000000000000..d2c15363fe8cc4061c4852aaf9bfbecc40c9b595 GIT binary patch literal 10 RcmY#pP-b9!${^363;+jz0dD{R literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/d08f88df745fa7950b104e4a707a31cfce7b5841 b/fuzz/corpus/backup_roundtrip/d08f88df745fa7950b104e4a707a31cfce7b5841 new file mode 100644 index 0000000..4287ca8 --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/d08f88df745fa7950b104e4a707a31cfce7b5841 @@ -0,0 +1 @@ +# \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/d198281adfae04fda9608acdf45437b588ce7ec6 b/fuzz/corpus/backup_roundtrip/d198281adfae04fda9608acdf45437b588ce7ec6 new file mode 100644 index 0000000..6c522a3 --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/d198281adfae04fda9608acdf45437b588ce7ec6 @@ -0,0 +1 @@ +L,. \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/d1f71f9492e870b14b8e32fc35611d20d7116fb6 b/fuzz/corpus/backup_roundtrip/d1f71f9492e870b14b8e32fc35611d20d7116fb6 new file mode 100644 index 0000000000000000000000000000000000000000..47666912a588cf7aa39612d652c95dc7d90b9b84 GIT binary patch literal 12 TcmZQ#P*6}X{Qm#{e|bg#7T5%+ literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/d264f157ca1df350c982345235e494667ea115d4 b/fuzz/corpus/backup_roundtrip/d264f157ca1df350c982345235e494667ea115d4 new file mode 100644 index 0000000..03efd74 --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/d264f157ca1df350c982345235e494667ea115d4 @@ -0,0 +1 @@ +ÄÄÄÄÄÄÄÄÄÄÄÄ \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/d2e9113109a23c9ada1c8c262d81a440de84099a b/fuzz/corpus/backup_roundtrip/d2e9113109a23c9ada1c8c262d81a440de84099a new file mode 100644 index 0000000000000000000000000000000000000000..8fa0e95c603f19ffba61b34ebd7eac92163a7984 GIT binary patch literal 21 acmb1SWcqJ?-~S&22pm!Uqx{D`+ywwk8wY6s literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/d56ddef3702dec9b11de617314aa04c6e5faf6de b/fuzz/corpus/backup_roundtrip/d56ddef3702dec9b11de617314aa04c6e5faf6de new file mode 100644 index 0000000..2c4c522 --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/d56ddef3702dec9b11de617314aa04c6e5faf6de @@ -0,0 +1 @@ +ïþÿ;¦n \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/d648b57848620d1ebb56e24965247a956924070b b/fuzz/corpus/backup_roundtrip/d648b57848620d1ebb56e24965247a956924070b new file mode 100644 index 0000000000000000000000000000000000000000..fe8e3a9f6515ccd438d448bce57d9839d5fa02e6 GIT binary patch literal 18 VcmZQnU;u(D1`ZGH0pI`t literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/d86bca9ccd60ee64ffef8627679c46419eb480b7 b/fuzz/corpus/backup_roundtrip/d86bca9ccd60ee64ffef8627679c46419eb480b7 new file mode 100644 index 0000000..f9b743a --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/d86bca9ccd60ee64ffef8627679c46419eb480b7 @@ -0,0 +1 @@ +YYYYY# \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/da534ca7303b10df11df9081af797ee7750aad77 b/fuzz/corpus/backup_roundtrip/da534ca7303b10df11df9081af797ee7750aad77 new file mode 100644 index 0000000..193757b --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/da534ca7303b10df11df9081af797ee7750aad77 @@ -0,0 +1 @@ +#ü#üGWD# \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/dcf138229d6789c73f7969dccd743ed882c8a4c1 b/fuzz/corpus/backup_roundtrip/dcf138229d6789c73f7969dccd743ed882c8a4c1 new file mode 100644 index 0000000000000000000000000000000000000000..ed0c02b6d141b48ec136b13ab2995b4b25b206c7 GIT binary patch literal 5 McmWfyVGv*e00N8vr~m)} literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/dd679d555ae04cd2462a61ff4aad02a73b7eea7a b/fuzz/corpus/backup_roundtrip/dd679d555ae04cd2462a61ff4aad02a73b7eea7a new file mode 100644 index 0000000000000000000000000000000000000000..3406b5203828a28f229363bf6847f1e60a88ac8f GIT binary patch literal 11 NcmZSh&%gjd3;-1N0{#F1 literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/ddb9fdb16db21d1288cf39ac982926447a58f4c0 b/fuzz/corpus/backup_roundtrip/ddb9fdb16db21d1288cf39ac982926447a58f4c0 new file mode 100644 index 0000000..f18a939 --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/ddb9fdb16db21d1288cf39ac982926447a58f4c0 @@ -0,0 +1 @@ +*:ÿ:*: \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/ddbc55fe4465fa9d69a9e4d888afd73c49f8867a b/fuzz/corpus/backup_roundtrip/ddbc55fe4465fa9d69a9e4d888afd73c49f8867a new file mode 100644 index 0000000000000000000000000000000000000000..31dfd318080919777c2da1d18cfbd5b322b8cfe5 GIT binary patch literal 18 RcmY#pU{GdYe99mXrvMhK0+#>) literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/e12eeb3c29d4e22d896e42af48ca8816dfadd3b8 b/fuzz/corpus/backup_roundtrip/e12eeb3c29d4e22d896e42af48ca8816dfadd3b8 new file mode 100644 index 0000000000000000000000000000000000000000..be8086ba24253b40224b911b340446a71f89e6c7 GIT binary patch literal 11 ScmZQjVE8X@#k7G@K??v5uL5=e literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/e2901792677087494cb98a717b0a7e6179966413 b/fuzz/corpus/backup_roundtrip/e2901792677087494cb98a717b0a7e6179966413 new file mode 100644 index 0000000..34f94cb --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/e2901792677087494cb98a717b0a7e6179966413 @@ -0,0 +1 @@ +RRRRRRRRR.RRRRRR4 \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/e47aea3140df9bcd504c1473af09ecc1030567f6 b/fuzz/corpus/backup_roundtrip/e47aea3140df9bcd504c1473af09ecc1030567f6 new file mode 100644 index 0000000..9b55fd6 --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/e47aea3140df9bcd504c1473af09ecc1030567f6 @@ -0,0 +1 @@ +ô diff --git a/fuzz/corpus/backup_roundtrip/e51e40716d17fe17e7079ded7f2dea03e6d84c55 b/fuzz/corpus/backup_roundtrip/e51e40716d17fe17e7079ded7f2dea03e6d84c55 new file mode 100644 index 0000000..0d29526 --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/e51e40716d17fe17e7079ded7f2dea03e6d84c55 @@ -0,0 +1 @@ +(( \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/e5bf41dcede48e9df626b852dd139c3f31ab8545 b/fuzz/corpus/backup_roundtrip/e5bf41dcede48e9df626b852dd139c3f31ab8545 new file mode 100644 index 0000000000000000000000000000000000000000..376a92505e136f1f0eb1ee40996437d11479f408 GIT binary patch literal 17 ScmZQnU;qIQFv-AR^aTI|$^lRS literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/e5ca6bb6da524a1ce24ac678b1295090c8f642a1 b/fuzz/corpus/backup_roundtrip/e5ca6bb6da524a1ce24ac678b1295090c8f642a1 new file mode 100644 index 0000000..ab48ff6 --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/e5ca6bb6da524a1ce24ac678b1295090c8f642a1 @@ -0,0 +1 @@ +¸GWD \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/e632b36853518cf2c86175a46d249c122f4fd9d6 b/fuzz/corpus/backup_roundtrip/e632b36853518cf2c86175a46d249c122f4fd9d6 new file mode 100644 index 0000000000000000000000000000000000000000..f2ff5fb04d93835569a20a18e7dc79ebf72bb24a GIT binary patch literal 8 NcmZQjP+(91VgLfj0HFW? literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/e910345c261713fff55aa46164aa2caa4851d2f9 b/fuzz/corpus/backup_roundtrip/e910345c261713fff55aa46164aa2caa4851d2f9 new file mode 100644 index 0000000..46a2156 --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/e910345c261713fff55aa46164aa2caa4851d2f9 @@ -0,0 +1 @@ +#ü#üGÿWD# \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/eb55642c118d9f2eb6ccaaa7fa37b268da1834cc b/fuzz/corpus/backup_roundtrip/eb55642c118d9f2eb6ccaaa7fa37b268da1834cc new file mode 100644 index 0000000000000000000000000000000000000000..2e9fa68d46311b8e62f477a63a884f7ab96eb3a2 GIT binary patch literal 25 VcmZQz00Sm4X{G_;FfuAI000Ee0EGYm literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/ee504363e00c71f68e02722f0f07840bdf329510 b/fuzz/corpus/backup_roundtrip/ee504363e00c71f68e02722f0f07840bdf329510 new file mode 100644 index 0000000000000000000000000000000000000000..ea6723f4a1fa9a8e77772c27a37c08a4eca552d1 GIT binary patch literal 3 KcmZQjPyhe`V*o(_ literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/efc4d6f46a7eacd78889a1351e9a88fc7bfc9b17 b/fuzz/corpus/backup_roundtrip/efc4d6f46a7eacd78889a1351e9a88fc7bfc9b17 new file mode 100644 index 0000000000000000000000000000000000000000..34d64e6996e3c184a7445e43403d60e77f596bcd GIT binary patch literal 18 acmZR2|L_0*qYVH5v$M1R{~!792nPUdPYUM% literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/f703cf00fe973daf9555cd026edb46e53de47856 b/fuzz/corpus/backup_roundtrip/f703cf00fe973daf9555cd026edb46e53de47856 new file mode 100644 index 0000000..4df209a --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/f703cf00fe973daf9555cd026edb46e53de47856 @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/f7f48269dc8ca49d56f73068efca7574d07cb906 b/fuzz/corpus/backup_roundtrip/f7f48269dc8ca49d56f73068efca7574d07cb906 new file mode 100644 index 0000000000000000000000000000000000000000..111206f9b9ea7e8fa1fc9957288e92bd247874c3 GIT binary patch literal 5 McmZQzU{Fv1003nGK>z>% literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/f9b4b95bcd2519ee98574e85ab4158aba53fb5b5 b/fuzz/corpus/backup_roundtrip/f9b4b95bcd2519ee98574e85ab4158aba53fb5b5 new file mode 100644 index 0000000..6efd4dd --- /dev/null +++ b/fuzz/corpus/backup_roundtrip/f9b4b95bcd2519ee98574e85ab4158aba53fb5b5 @@ -0,0 +1 @@ +ŽôØ \ No newline at end of file diff --git a/fuzz/corpus/backup_roundtrip/fadeff742dc7ae024de664dd0e2539c9a6a4f156 b/fuzz/corpus/backup_roundtrip/fadeff742dc7ae024de664dd0e2539c9a6a4f156 new file mode 100644 index 0000000000000000000000000000000000000000..d26d5b8bf69a46a0ee17a4b481fa90d7570995b0 GIT binary patch literal 6 LcmaFB00a*J1||W) literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/fc77d71e66d25af7069297909c80c0e949167809 b/fuzz/corpus/backup_roundtrip/fc77d71e66d25af7069297909c80c0e949167809 new file mode 100644 index 0000000000000000000000000000000000000000..d9043bdf28b89bf5b82d7004809f6aee065d5979 GIT binary patch literal 5 Mcmd;LU|`?^002P%6#xJL literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/fc95a970ff582095ce54e1459b2694ef66ee93e9 b/fuzz/corpus/backup_roundtrip/fc95a970ff582095ce54e1459b2694ef66ee93e9 new file mode 100644 index 0000000000000000000000000000000000000000..da53f17d3029506b6ec810320e3f9da424f4070a GIT binary patch literal 13 Lcmd;LKmaZP0GR+4 literal 0 HcmV?d00001 diff --git a/fuzz/corpus/backup_roundtrip/fd6f5aa90211853e795941406d2ad180c56b93c0 b/fuzz/corpus/backup_roundtrip/fd6f5aa90211853e795941406d2ad180c56b93c0 new file mode 100644 index 0000000000000000000000000000000000000000..d809f01f9f4898f70582a0d2a1414800a56c8430 GIT binary patch literal 6 NcmY#jP*7lH1ONfC0A~OI literal 0 HcmV?d00001 diff --git a/fuzz/fuzz_targets/backup_roundtrip.rs b/fuzz/fuzz_targets/backup_roundtrip.rs new file mode 100644 index 0000000..0689710 --- /dev/null +++ b/fuzz/fuzz_targets/backup_roundtrip.rs @@ -0,0 +1,35 @@ +#![no_main] + +use libfuzzer_sys::fuzz_target; + +fuzz_target!(|data: &[u8]| { + // Exercises the tar.gz backup round-trip: create an archive from a + // directory tree of fuzzed save files, then restore and verify. + // This catches logic bugs in create_tar_gz / extract_tar_gz, not + // bugs in the tar or flate2 libraries themselves. + use std::fs; + + let tmp = match std::env::temp_dir() { + t => t, + }; + let src = tmp.join("notalterra_fuzz_backup_src"); + let arc_dir = tmp.join("notalterra_fuzz_backup_arc"); + let ext_dir = tmp.join("notalterra_fuzz_backup_ext"); + + let _ = fs::create_dir_all(&src); + let _ = fs::create_dir_all(&arc_dir); + let _ = fs::create_dir_all(&ext_dir); + + // Write fuzzed data as a save file + let _ = fs::write(src.join("savegame_0.sav"), data); + + // Create tar.gz and restore + let Ok(result) = notalterra::ops::create_full_backup(&src) + else { return }; + let _ = notalterra::ops::restore_full_backup(&result.dest_path, &ext_dir); + + // Cleanup + let _ = fs::remove_dir_all(&src); + let _ = fs::remove_dir_all(&arc_dir); + let _ = fs::remove_dir_all(&ext_dir); +});