git » spf » commit 92fee7c

Fuzz testing

author Alberto Bertogli
2017-04-22 01:45:51 UTC
committer Alberto Bertogli
2018-03-18 13:16:26 UTC
parent f32c22b3c09cbb15102a6cd2e9dbecdd2609b380

Fuzz testing

This patch adds a fuzz test for the go-fuzz tool, and also includes some
of the generated corpus and seed data.

.gitignore +10 -0
fuzz.go +75 -0
testdata/fuzz/corpus/00cf37c4fa061abb08aeed0981d8d0e26a1e1323-4 +1 -0
testdata/fuzz/corpus/01438665d70f99814773625c2b18eb2104f4ea13-5 +1 -0
testdata/fuzz/corpus/031baaf383cfebcacc31eeb3c4d060743adc6be0-3 +1 -0
testdata/fuzz/corpus/03279b4fd8a0a693cc9bf81bcd225fcae6101d24-9 +1 -0
testdata/fuzz/corpus/0646a02a7b4f134295dccc4f3b6d4f74a98fd107-5 +1 -0
testdata/fuzz/corpus/06bec983ccd57eed211cbd4bda8583ace4c45c8c-7 +1 -0
testdata/fuzz/corpus/07d761d89cec1e613b391dae889ac55b2dceec9e-14 +1 -0
testdata/fuzz/corpus/07e9ac18500412e857ac88d53d2d14fa38763489-2 +1 -0
testdata/fuzz/corpus/0b23284bbc74c7e72dcad1e56ad2c0c422c76f6c-2 +1 -0
testdata/fuzz/corpus/0b5b6a45778d16db6c3a53ec6d96d8ddb70cbf3b-3 +1 -0
testdata/fuzz/corpus/0c4314c16a99b6d5be7b506088e5194bc01edf1e-9 +1 -0
testdata/fuzz/corpus/0ce9a737495f56e975b86c862d1b2ce62b0997bc-4 +1 -0
testdata/fuzz/corpus/0d45f75bc08ac9bf702effdb893ca87c801a7294-4 +1 -0
testdata/fuzz/corpus/0e955ff9c6d5c2d145779ddc32e8af92f3fce15c-2 +1 -0
testdata/fuzz/corpus/10af261a4eba5d6a09178858f7f7b2bdc8a4d2ed-6 +1 -0
testdata/fuzz/corpus/113d1b233d0b182ce8dec943a01a213dbc1bfc32-4 +1 -0
testdata/fuzz/corpus/115c29a6c848857a691de2267b7d3ac92ce5f384-2 +1 -0
testdata/fuzz/corpus/124eddd031bfaecce3884922d2180332032e4156-5 +1 -0
testdata/fuzz/corpus/1266c0d0f5c4ca735e3a71c9edff3d4e5aca9bbd +1 -0
testdata/fuzz/corpus/157b209632435b7b661b3438c96d1e8548550476-6 +1 -0
testdata/fuzz/corpus/159729fed614b134e57b677bc72474f6463d362b-6 +1 -0
testdata/fuzz/corpus/15da32d2909f118a0fc25ca4dccf07b03ff3c483-6 +1 -0
testdata/fuzz/corpus/15f3b6fef4391fd987ffc0ddf0c449046f0898b2-3 +0 -0
testdata/fuzz/corpus/160f80a8549044c6e3aca7b9d1e3964238615667-6 +1 -0
testdata/fuzz/corpus/1677b850a2b9471330774daab8ee651332ba4373-6 +1 -0
testdata/fuzz/corpus/1845de197b696ae69aa7a1a800bc3658f3b93946-2 +1 -0
testdata/fuzz/corpus/190b3bd4bd8de1bda728ed60865624b5177f554c-5 +1 -0
testdata/fuzz/corpus/193c50b3e52fe33fe67cb982ade55dbecb14896d-11 +1 -0
testdata/fuzz/corpus/19b7f4b8fe98a86a6a4b845dfb7a803ae7198274-6 +1 -0
testdata/fuzz/corpus/1aa7c2119ab155decb1e32c8efc1102a23030355-4 +1 -0
testdata/fuzz/corpus/1af13087f6bb92df8764a5b00eb5c0561dc8b840-4 +1 -0
testdata/fuzz/corpus/1b2840abfb70a1fb6b0ca9e8cd79b1d0aab1d7da-5 +1 -0
testdata/fuzz/corpus/1c9cf133f11bf274dd446ff4245b8f53a8911374-4 +1 -0
testdata/fuzz/corpus/201fd81935a2589e34ead502b014bc0f6f7bc997-4 +1 -0
testdata/fuzz/corpus/20f917fc7cf15d12876ee3a7091d886878528861-6 +1 -0
testdata/fuzz/corpus/21057897c2a43f23eba4b7a7ec4105fcfe16c000-2 +1 -0
testdata/fuzz/corpus/2136c0d1947b42b3db810eed459886dd7e2fa578-13 +1 -0
testdata/fuzz/corpus/21505c4e4d334b454dc5eebce4ebacdf7637e7d0-6 +1 -0
testdata/fuzz/corpus/2257d0500932ac25815c565e3eb907d10fc0b277-6 +1 -0
testdata/fuzz/corpus/245dd24e4b3d44f11b3c0558b1e40b37099a854a-4 +1 -0
testdata/fuzz/corpus/246db128b29bc81da0d3e9ec5e5cf8a3ed09a338-1 +1 -0
testdata/fuzz/corpus/26c5e455a3b81a4d3a09b80f4b46ec10896b48e1-5 +1 -0
testdata/fuzz/corpus/2ab0225495089b6fa60083d05140b5ce80dd1096-8 +1 -0
testdata/fuzz/corpus/2c34d594739876049e7ad50a5b30becd1dee9f6d-5 +1 -0
testdata/fuzz/corpus/2cb1af576215fede0d684c6b3794579865999d6d-2 +1 -0
testdata/fuzz/corpus/2dd167b87fa68dfbbb01dd347eaf5fb26668a6a8-4 +1 -0
testdata/fuzz/corpus/2dee827f4fa52b8e782790a06e69e3149c0ac7df-2 +1 -0
testdata/fuzz/corpus/2fa9261819c9517006f54dfec93077a5ffeefc8d-5 +1 -0
testdata/fuzz/corpus/316359122b01ab00929f7a7aea0291f66f227598-7 +1 -0
testdata/fuzz/corpus/31e0d230a07f7ba48c522c9d0f1bff66e37d9c5d-7 +1 -0
testdata/fuzz/corpus/32ae1061275f98e132845ab4973ec066c5652dd3-3 +1 -0
testdata/fuzz/corpus/338e1b5e0a09e5f518cfd79791fa93f8017d6b57-10 +1 -0
testdata/fuzz/corpus/35e9e0e05acc1088fb73dafbb69ba6cb1594d8ec-1 +1 -0
testdata/fuzz/corpus/35ee7e5ddb6e8ae9a243785b8139e0e73ba636b7-12 +1 -0
testdata/fuzz/corpus/36a4254e1961ad0fca4c222636abe6a814bcf850-10 +1 -0
testdata/fuzz/corpus/37c95310204accca732a0e73a4d5adea8c5e5fce-8 +1 -0
testdata/fuzz/corpus/382cef3168021f6d496ec419b439a6fbb1b4ce35-7 +1 -0
testdata/fuzz/corpus/3898299a8b2a624638b68bb2a84da413fd22a3a7-9 +1 -0
testdata/fuzz/corpus/38f649f7346700239d5522449476b86083d76219-7 +1 -0
testdata/fuzz/corpus/39615f91d3139087871dea5423785d06b9b510a7 +1 -0
testdata/fuzz/corpus/3c208a50d0fe369bbf2dc88be86a0fb911f9efda-8 +1 -0
testdata/fuzz/corpus/3c757915c56d6e6261b56366ec4cb21ed2ffea62-5 +1 -0
testdata/fuzz/corpus/3d21efa964a356b0cab7875359464aea0dc6ad0f-8 +1 -0
testdata/fuzz/corpus/3e704e64145afc057e4f02234b55c772718c161c-4 +1 -0
testdata/fuzz/corpus/3ee74f7037ce9790e2162c3ce5e6bafa89dfc65b-5 +1 -0
testdata/fuzz/corpus/3f6e987ce012be6005576673865864ec7e99d3a1-6 +1 -0
testdata/fuzz/corpus/421a3ef0790b962fc48296c328c19921791ee25f-3 +1 -0
testdata/fuzz/corpus/4503e3f4c0c8727025ee51d06e5832243c70a9e7-3 +1 -0
testdata/fuzz/corpus/45f58a2e37b8c691e40ea6f26408d6f5e6234d6a-7 +1 -0
testdata/fuzz/corpus/461d4557426af8b282e79ce5d6bb25916f98a706-13 +1 -0
testdata/fuzz/corpus/4677a5eff032ececff3c72e905271d34af4a4a1b-7 +1 -0
testdata/fuzz/corpus/475e8ffdb31020d60e29cffc34013fe2a2ca5c8f-4 +1 -0
testdata/fuzz/corpus/485b5dfc7b96f912c1b98ddccb9127f167fd997c-11 +1 -0
testdata/fuzz/corpus/486e98cf7b182565ddd3095d5f57b68ec12d91f6-4 +1 -0
testdata/fuzz/corpus/4ada9982255464020458f90c31409f083dd3cec4-5 +1 -0
testdata/fuzz/corpus/4b44d6f2f223de32f6d97221017c72b135b6fc8f-8 +1 -0
testdata/fuzz/corpus/4b4906e4bf471486b1a1ebddfb9bbbd4f375939f-1 +1 -0
testdata/fuzz/corpus/4b9765f8f632dfebc4eeff12147cffd66cf29f1e-4 +1 -0
testdata/fuzz/corpus/4c754e7f659c7041831fe8af2e6ea197ecb71fee +1 -0
testdata/fuzz/corpus/4ca27bea96aa9b43cd75e990b3aaf486e184d731-3 +1 -0
testdata/fuzz/corpus/4ca8520bd82b4ac343bb4e1cd7e9950d10b238c7-7 +1 -0
testdata/fuzz/corpus/4cc5a579d3fcdf1e05d673591d322edd04ce43c4-10 +1 -0
testdata/fuzz/corpus/4d26846d4153063a9af7a8f839b188ff037ef53c-1 +1 -0
testdata/fuzz/corpus/4ff3cabbe468bac11f8bb34a4bb9e2e98c8efefa-3 +1 -0
testdata/fuzz/corpus/50ae7645c456657f3cc80cb4583543de6cad4771-2 +1 -0
testdata/fuzz/corpus/527ba1667ccfa821072b2398d968f48e514a129c-3 +1 -0
testdata/fuzz/corpus/52c9f09174d10e2046bd2bc56d08a7cfa1b94c88-2 +1 -0
testdata/fuzz/corpus/5637f99d2a8d09e94609bf972de37a1f74b31b9b-5 +1 -0
testdata/fuzz/corpus/5710e8c342174148ee462f030f4cac29e664c767-2 +1 -0
testdata/fuzz/corpus/59093d3787922a8015fb0e8d81df61675c82278e-2 +1 -0
testdata/fuzz/corpus/595d366d1274aefa2271820ff4ef2da05cddc6bc-10 +1 -0
testdata/fuzz/corpus/5ceab670fb0fb39a5c23d2f611f7d217e756f423-9 +1 -0
testdata/fuzz/corpus/5d1cfec0c5dadf382dc141d47562d2ffe79615b8-2 +1 -0
testdata/fuzz/corpus/5d7e1ee1c59f39bc3e122815c4944b0e39914898-6 +1 -0
testdata/fuzz/corpus/5ec5c2a5a29cbff4a99457cdc0e178c81b284f73-12 +1 -0
testdata/fuzz/corpus/5ed2b1d1a581990d92eb9175ff45e1ffb6f2a2cd-6 +1 -0
testdata/fuzz/corpus/5f5bf6d1cdcce6a626a65df489dfcc07f788bd85-2 +1 -0
testdata/fuzz/corpus/620a8868eec3a22ace93f372a6337d579f55d866-6 +1 -0
testdata/fuzz/corpus/62246f1db31d1d885c74e8060e344ca1759a1545-1 +1 -0
testdata/fuzz/corpus/62645dad2ddf207c474064e153fd468adf0d7403-7 +1 -0
testdata/fuzz/corpus/627d548125420021aa6578008ecf12cbfb4115c8-7 +1 -0
testdata/fuzz/corpus/63c66382abda05c270d4103e259d7efaf9e77bbb-5 +1 -0
testdata/fuzz/corpus/6432d829ef0ce88b09ab309f0784f4bf23730f9f-4 +1 -0
testdata/fuzz/corpus/67950ee5ca4bd409b333f587498af2bc6cf6f0a8-5 +1 -0
testdata/fuzz/corpus/67e9e013657986390e1fe563584321c7e062a435-1 +1 -0
testdata/fuzz/corpus/6977a2fdabe378064fef5e1fd941faf4d8d4c4b5 +1 -0
testdata/fuzz/corpus/6980033ab26f3cc54dbfe98d88535bcc707142fd-3 +1 -0
testdata/fuzz/corpus/6a2815028adf404edc3f4b1cc38c1b4de687b80e-7 +1 -0
testdata/fuzz/corpus/6a956db6d33cbf2fcf72a99e692b4c198281aa13-3 +1 -0
testdata/fuzz/corpus/6bb4c18efdc2f761e270d1fb94c68de69d3db79b-1 +1 -0
testdata/fuzz/corpus/6cb70020584efe94d39ec4c86c331b987bced76d-5 +1 -0
testdata/fuzz/corpus/6fce1d04d6f69c32320685a4a9c0349fc05c8ebb-2 +1 -0
testdata/fuzz/corpus/7161abeb77fc6476927a2472ef098aa104c045de-5 +1 -0
testdata/fuzz/corpus/77bb421687cc142f2f7a00ff7000f32ac2eeeef9-3 +1 -0
testdata/fuzz/corpus/77cc93fcf61cd9d6662ef18d4ebf9e5b9751781e-2 +1 -0
testdata/fuzz/corpus/794406f33696ace311f39f658bf82d68621203de-5 +1 -0
testdata/fuzz/corpus/79550c23af893e793e1d2781a8fc252f601a5b8e-7 +1 -0
testdata/fuzz/corpus/7a02070902448225aff2b49eadd31e52be253870-4 +1 -0
testdata/fuzz/corpus/7aa0a78cf5866b022ec350c48ee9ff1f3f2cffb8-6 +1 -0
testdata/fuzz/corpus/7be59d49de0d3d7a60ecd3b1ff47053082cd9dbf-4 +1 -0
testdata/fuzz/corpus/7cb312d9ce11e08ae0a60571635410ae5469dd4e +1 -0
testdata/fuzz/corpus/7d884e5b6f9dc98e899115e691cd826b3cc3a232-4 +1 -0
testdata/fuzz/corpus/7e265eeca3402d2943bd206b4c6226c1d1ff8c32-3 +1 -0
testdata/fuzz/corpus/7e754abadb7626d1b3776736f275db37751a8229-5 +1 -0
testdata/fuzz/corpus/7f3742ba9ae6dba0322c0d7a442610680e5ced0f-10 +1 -0
testdata/fuzz/corpus/7f532ba7aff56bd68a6dae1c144764732fda8873-5 +1 -0
testdata/fuzz/corpus/7faf5ae33da6badb519834e598cdbc10c35f0835-7 +1 -0
testdata/fuzz/corpus/803ef28eca844e4f18371148de536af8d94e182f-2 +1 -0
testdata/fuzz/corpus/808d8bc898a22d6dc2724c9523b59034256fe597-3 +1 -0
testdata/fuzz/corpus/80d071bba183948fd3cb643b9ac6356a4f78ded1-6 +1 -0
testdata/fuzz/corpus/81b936e916edaf4f077c21175dedf1c67a281c4d-11 +1 -0
testdata/fuzz/corpus/85d61d763d07622fbecaea3c97ed3fcb5be2d69f-11 +1 -0
testdata/fuzz/corpus/869b75c33d0c2cda002c62bfae7f15ff0e79a88c-2 +1 -0
testdata/fuzz/corpus/8709b73da7598cd719e92c2ac3033f417b607a56 +1 -0
testdata/fuzz/corpus/8720a8ba3df38ed0888e218c974e0e034f762e71-11 +1 -0
testdata/fuzz/corpus/89797fe777479f9c9d65954ac2fd590731fc804c-2 +1 -0
testdata/fuzz/corpus/8a2bcea52de4fad8ffd0827e4a2dc12a44de4926-1 +1 -0
testdata/fuzz/corpus/8a2ed564fcca3c565439075767ff8684ac49ac8a-4 +1 -0
testdata/fuzz/corpus/8aa2ae9ccfc3c3920a4333084aa3c3b92e80b087-3 +1 -0
testdata/fuzz/corpus/8bde59e5dcbea61da549b56ab78536f314eaf270-4 +1 -0
testdata/fuzz/corpus/8c190342c9ce178aa2030cfe9000a63e58005f3a-7 +1 -0
testdata/fuzz/corpus/8c40888b73dd06e8f4d972b5e3542226b966e6fe-1 +1 -0
testdata/fuzz/corpus/8ca3a2b7da51ce13aca07b6bc6a587c4efed0d53-15 +1 -0
testdata/fuzz/corpus/8cd0357fbfa90ec0e69c17b10c374a1223924d17-12 +1 -0
testdata/fuzz/corpus/8cd9b00e5b14dcc74e3e389691552b26b35e590c-5 +1 -0
testdata/fuzz/corpus/8cff895127532675e2b4105f5c65be8de5be6306-4 +1 -0
testdata/fuzz/corpus/8d6aece1b5f58b476ce948504782e0b1d4a90149-6 +1 -0
testdata/fuzz/corpus/8e6cb36297f26f8fa23daa259eb12b61ab100fec-1 +1 -0
testdata/fuzz/corpus/8ea434243522f18f9835c93d8593cf5a8be51521-4 +1 -0
testdata/fuzz/corpus/8ef23048dcf25f403e61a34d72a6c327d2927fe4-3 +1 -0
testdata/fuzz/corpus/906833637b8b72be70013f4922eff2836bbece00-9 +1 -0
testdata/fuzz/corpus/93830b163ebb827cf93a17d1ef59613eb8f240b1-6 +1 -0
testdata/fuzz/corpus/94820540f7b8dd7d056c7872b24464bc28e22f90-6 +1 -0
testdata/fuzz/corpus/9651d650fafafaef76745a776a998bb96241b8fa-1 +1 -0
testdata/fuzz/corpus/98cd39213ce1336e8bcba3b49ecd1cfc7e4a1d16-5 +1 -0
testdata/fuzz/corpus/9a34fb50762330df190864d0ddb25e15e042e662-4 +1 -0
testdata/fuzz/corpus/9a9d5cb818c6f69cf9df6da156aa00e3eac1da59-6 +1 -0
testdata/fuzz/corpus/9b858a7cba052affb1e7682e9f3b49292abe736b-10 +1 -0
testdata/fuzz/corpus/9c8c99cb61c1c4d741328197f647ed8aab6a4c1c-1 +1 -0
testdata/fuzz/corpus/9d12f3efb61be364e1606de5b629553a60985713-1 +1 -0
testdata/fuzz/corpus/a1c93210c3cd9aa445842cbb7c8b8db89700eb5c-8 +1 -0
testdata/fuzz/corpus/a3ca5b314a00a0468e38b3f02e5d5324f7b2df22-5 +1 -0
testdata/fuzz/corpus/a3dc3b202c007a96d2a9392d3088e35d3b6656ab-7 +0 -0
testdata/fuzz/corpus/a3ed7c1bdbf2a23bca4ce8320d99d56c39d5ceb9 +1 -0
testdata/fuzz/corpus/a4f0f97a227003aa1442f010c1ab4b11b75eb8a2-4 +1 -0
testdata/fuzz/corpus/a55848179e2ef78c5d48df2b55174fd2c94216f3-5 +1 -0
testdata/fuzz/corpus/a66793d056da563f93a724bffffb4046343be07a-14 +1 -0
testdata/fuzz/corpus/a80eeb54e51f5a7ff6bbfa7ecaf41690555c8779-1 +1 -0
testdata/fuzz/corpus/a9949b17b74723c2633356fd6ea8e58c0988cf39-16 +1 -0
testdata/fuzz/corpus/a9cc0118e3aaec859d8ebc0230521844f4a9e941 +1 -0
testdata/fuzz/corpus/a9ec7cbe37eef444da71026fb51aed63343beae8-5 +1 -0
testdata/fuzz/corpus/aa24926aa5504d84c2bc24ccbdce190657dc542d-6 +1 -0
testdata/fuzz/corpus/aaed2222466dce9a6d3426ccd625cc9dec66b753-7 +1 -0
testdata/fuzz/corpus/ab4ae974caed9ac3dd1fdd26aeccd792b8a8eef3 +1 -0
testdata/fuzz/corpus/adee88e332493162e4c544440c41ab05fc55caba-8 +1 -0
testdata/fuzz/corpus/af313e5429328f99a3e14fe6ed7d2d7171b4f8b0-1 +1 -0
testdata/fuzz/corpus/af836fcd042d6927a687fc3d9a840d970d920696-8 +1 -0
testdata/fuzz/corpus/b00876a702c3af1b72c5b0b4220f0aff86419453-7 +1 -0
testdata/fuzz/corpus/b01623ff6afbb38f9413d06ea47dfe8c11ee7829-6 +1 -0
testdata/fuzz/corpus/b0fa0056db33c9338bd4dc90a73c48c4553d9894-5 +1 -0
testdata/fuzz/corpus/b1f947edcc1ef0f288fd926baf4a95e8b9d97775-5 +1 -0
testdata/fuzz/corpus/b2c7175d14c4ab51e25dae9ce2d45bbcfde9c0aa-9 +1 -0
testdata/fuzz/corpus/b6f608755614309cd073ff4b9ff12ffdddbc7aef-10 +1 -0
testdata/fuzz/corpus/b70ea87f1e3a7a71c74c0d1c9a82752b4046c658-8 +1 -0
testdata/fuzz/corpus/ba4579a4b3ecf61155909dd7f561849c58cdc1b8-1 +1 -0
testdata/fuzz/corpus/bd34c53e2b4b044ca65993b5b21b5c1ab97e7a18-2 +1 -0
testdata/fuzz/corpus/be6fc50d936510262252e2706edcacff891fe185-7 +1 -0
testdata/fuzz/corpus/c01b6f2672804a8b6abc85afa130f4db06ea1cb6-1 +1 -0
testdata/fuzz/corpus/c0eb81476da375b12c3dc6199325f6728fca8c25-6 +1 -0
testdata/fuzz/corpus/c1063b885395233902ccc891ececb6af2f1fb279-4 +1 -0
testdata/fuzz/corpus/c226841652a967c26fa9f1ca08bf90ea9df9bc4b +1 -0
testdata/fuzz/corpus/c34e8478439a802cd4aa682a54b865382a6e6b04-1 +1 -0
testdata/fuzz/corpus/c37b8935a53aa115c6ba7677fbf413b039c635c8-3 +1 -0
testdata/fuzz/corpus/c4b1bacbc00d582954dc53e6f6284236bf9fc64e +1 -0
testdata/fuzz/corpus/c4d74e144b5811566925a3b84809485f5e6b5571-2 +1 -0
testdata/fuzz/corpus/c56287852954cfe96a89b3482b7afbb7a3a50f71-3 +1 -0
testdata/fuzz/corpus/c566a989b153b7baf61decdf8580937596bef959-11 +1 -0
testdata/fuzz/corpus/c9fd32fb5a9d5c888423d58bcd6796c1b79c4933-8 +1 -0
testdata/fuzz/corpus/cbd464ac586e17e09c93883119fae5001195bccf-9 +1 -0
testdata/fuzz/corpus/cc183fa6e5f3eb5fa47e5b5207fe9a25cf68bcd6-5 +1 -0
testdata/fuzz/corpus/ccf0020a2b2da0b9440b8d6c98aac522f04e3f96-13 +1 -0
testdata/fuzz/corpus/cd8b93cd61b30a1f045173bce142d6861bef88a2-5 +1 -0
testdata/fuzz/corpus/cdd335e7f0ca5359d324600ff443c5c8b2ad6b31-10 +1 -0
testdata/fuzz/corpus/ceeaed584be8a2f84755b388bc2eca9d91e301dd-2 +1 -0
testdata/fuzz/corpus/d010cd01f60d366a490939ba7e734ee0205bbf95-5 +1 -0
testdata/fuzz/corpus/d1567d96b1c0e32073b56c363eb83d854bc2742f-12 +1 -0
testdata/fuzz/corpus/d3e99d5a3f89a6fec79bb8209d9584d55b99b650-6 +1 -0
testdata/fuzz/corpus/d48d9dfb5381fd1acaec2c9e7900a3fd86742674-3 +1 -0
testdata/fuzz/corpus/d4dc7ea8bce557418650da7fdc34e3f03877bdb9-3 +1 -0
testdata/fuzz/corpus/d7367455b7cc6e9d9e0a32d7e6ebf28c6c88aeae-6 +1 -0
testdata/fuzz/corpus/d781c18c85da9ab3b4775e4db674a590ac73ef36-5 +1 -0
testdata/fuzz/corpus/d7f48fadee3af3b910ccc8cf04657a445cd4c9f4-3 +1 -0
testdata/fuzz/corpus/d8c678392de65db470dae4b9f613ec42415ff864-5 +1 -0
testdata/fuzz/corpus/d94e5b5d8b5854e3caba0444add40baaaba86996-1 +1 -0
testdata/fuzz/corpus/da33d09eda59c78659696af049567c7ef68fb02f-8 +1 -0
testdata/fuzz/corpus/dae9a77a60e1491680c1d805118ac3751112909f-3 +1 -0
testdata/fuzz/corpus/dbd0db742720740c10282518e4577cec3998e5cc-5 +0 -0
testdata/fuzz/corpus/dcc0a5de6197e7baf94c9bd0c312f3b3a8b5ffb8-6 +0 -0
testdata/fuzz/corpus/e0fd54a63505541388b2f103523d8aa89bdb5bc6-11 +1 -0
testdata/fuzz/corpus/e208097be0b0dc8618075d6583ce1f50568c15e2-1 +1 -0
testdata/fuzz/corpus/e54a3e98730496df3ea28dbfef487790c60708fb-11 +1 -0
testdata/fuzz/corpus/e60dbbdca9e3329fe3f1fb14b05d7f88a2c6ea63-14 +1 -0
testdata/fuzz/corpus/e7914ed96774117a2015925f790c57fe8000c008-8 +1 -0
testdata/fuzz/corpus/ec41195137f57066d8f0d799ac8bb252dfdc93dc-2 +1 -0
testdata/fuzz/corpus/eda8a35bd40b21a692a4995f705855c7312886c3-9 +1 -0
testdata/fuzz/corpus/ee79058d876696355d87d2126ad04f156ee520aa-2 +1 -0
testdata/fuzz/corpus/efcb64bb622abb09cdf3c05e731cf05ab568f832-2 +0 -0
testdata/fuzz/corpus/f00d61fecdc4f66b5c9d8327c224e31776d2ed0e-8 +1 -0
testdata/fuzz/corpus/f045bb4e8964c3e50f041d64f4af9d0183705b31-5 +1 -0
testdata/fuzz/corpus/f0790f92fc3c35ccf7e8a7fb6b48035edf0780a3 +1 -0
testdata/fuzz/corpus/f4b8cedf44980c648c7e5e5fc44327c456156f57-12 +1 -0
testdata/fuzz/corpus/f56d2e286b7ecc555ea356fe649fbf322ea02fc5-8 +1 -0
testdata/fuzz/corpus/f5bb1d1b02d908d9d249b8bc120e37abd12d94de-4 +1 -0
testdata/fuzz/corpus/f650013dbeb971d05740a25bcd8f6726a35cc47e +1 -0
testdata/fuzz/corpus/f70408cf87bef7015e9c01e21fe4d656bbe091f1-1 +1 -0
testdata/fuzz/corpus/f86d796e245a7f6baab8943e91639f3abe312654-3 +1 -0
testdata/fuzz/corpus/f9f5579076d85ecffef2bc4201d38e2168c95486-6 +1 -0
testdata/fuzz/corpus/fb893e6d6923eb8bc63274ff5faad450b0c40abb-3 +1 -0
testdata/fuzz/corpus/fbfceed3f5d78a2c71b217856a3c8b12f6f22f5b-4 +1 -0
testdata/fuzz/corpus/fc0a076254f8732cae001b698d036a858ca6dfb6-3 +1 -0
testdata/fuzz/corpus/fdb54165041061eb1bb177f83c824f7785124ee7-2 +1 -0
testdata/fuzz/corpus/fe1c45453c73861dfb5cf5ab1e032e90dc154572-4 +1 -0
testdata/fuzz/corpus/fe43d6d6a17b0d49226f25260bc5b76dc4d815da-7 +1 -0
testdata/fuzz/corpus/ff4c34829a3c7ad090d43175030a9e9ebb7b40af-3 +1 -0
testdata/fuzz/corpus/t-000 +1 -0
testdata/fuzz/corpus/t-001 +1 -0
testdata/fuzz/corpus/t-002 +1 -0
testdata/fuzz/corpus/t-003 +1 -0
testdata/fuzz/corpus/t-004 +1 -0
testdata/fuzz/corpus/t-005 +1 -0
testdata/fuzz/corpus/t-006 +1 -0
testdata/fuzz/corpus/t-007 +1 -0
testdata/fuzz/corpus/t-008 +1 -0
testdata/fuzz/corpus/t-009 +1 -0
testdata/fuzz/corpus/t-010 +1 -0
testdata/fuzz/corpus/t-011 +1 -0
testdata/fuzz/corpus/t-012 +1 -0
testdata/fuzz/corpus/t-013 +1 -0
testdata/fuzz/corpus/t-014 +1 -0
testdata/fuzz/corpus/t-015 +1 -0
testdata/fuzz/corpus/t-016 +1 -0
testdata/fuzz/corpus/t-017 +1 -0
testdata/fuzz/corpus/t-018 +1 -0
testdata/fuzz/corpus/t-019 +1 -0
testdata/fuzz/corpus/t-020 +1 -0
testdata/fuzz/corpus/t-021 +1 -0
testdata/fuzz/corpus/t-022 +1 -0
testdata/fuzz/corpus/t-023 +1 -0
testdata/fuzz/corpus/t-024 +1 -0
testdata/fuzz/corpus/t-025 +1 -0
testdata/fuzz/corpus/t-026 +1 -0
testdata/fuzz/corpus/t-027 +1 -0
testdata/fuzz/corpus/t-028 +1 -0
testdata/fuzz/corpus/t-029 +1 -0
testdata/fuzz/corpus/t-030 +1 -0
testdata/fuzz/corpus/t-031 +1 -0
testdata/fuzz/corpus/t-032 +1 -0
testdata/fuzz/corpus/t-033 +1 -0
testdata/fuzz/corpus/t-034 +1 -0
testdata/fuzz/corpus/t-035 +1 -0
testdata/fuzz/corpus/t-036 +1 -0
testdata/fuzz/corpus/t-037 +1 -0
testdata/fuzz/corpus/t-038 +1 -0
testdata/fuzz/corpus/t-039 +1 -0
testdata/fuzz/corpus/t-040 +1 -0
testdata/fuzz/corpus/t-041 +1 -0
testdata/fuzz/corpus/t-042 +1 -0
testdata/fuzz/corpus/t-043 +1 -0

diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..7cf7ba3
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,10 @@
+# Ignore anything beginning with a dot: these are usually temporary or
+# unimportant.
+.*
+
+# Exceptions to the rule above: files we care about that would otherwise be
+# excluded.
+!.gitignore
+
+# go-fuzz build artifacts.
+*-fuzz.zip
diff --git a/fuzz.go b/fuzz.go
new file mode 100644
index 0000000..aa86346
--- /dev/null
+++ b/fuzz.go
@@ -0,0 +1,75 @@
+// Fuzz testing for package spf.
+//
+// Run it with:
+//
+//   go-fuzz-build blitiri.com.ar/go/spf
+//   go-fuzz -bin=./spf-fuzz.zip -workdir=testdata/fuzz
+//
+
+// +build gofuzz
+
+package spf
+
+import "net"
+
+// Parsed IP addresses, for convenience.
+var (
+	ip1110 = net.ParseIP("1.1.1.0")
+	ip1111 = net.ParseIP("1.1.1.1")
+	ip6666 = net.ParseIP("2001:db8::68")
+	ip6660 = net.ParseIP("2001:db8::0")
+)
+
+// Results for TXT lookups. This one is global as the values will be set by
+// the fuzzer. The other lookup types are static and configured in init, see
+// below).
+var txtResults = map[string][]string{}
+
+func init() {
+	// Make the resolving functions return our test data.
+	// The test data is fixed, the fuzzer doesn't change it.
+	// TODO: Once go-fuzz can run functions from _test.go files, move this to
+	// spf_test.go to avoid duplicating all this boilerplate.
+	var (
+		mxResults   = map[string][]*net.MX{}
+		ipResults   = map[string][]net.IP{}
+		addrResults = map[string][]string{}
+	)
+
+	lookupTXT = func(domain string) (txts []string, err error) {
+		return txtResults[domain], nil
+	}
+	lookupMX = func(domain string) (mxs []*net.MX, err error) {
+		return mxResults[domain], nil
+	}
+	lookupIP = func(host string) (ips []net.IP, err error) {
+		return ipResults[host], nil
+	}
+	lookupAddr = func(host string) (addrs []string, err error) {
+		return addrResults[host], nil
+	}
+
+	ipResults["d1111"] = []net.IP{ip1111}
+	ipResults["d1110"] = []net.IP{ip1110}
+	mxResults["d1110"] = []*net.MX{{"d1110", 5}, {"nothing", 10}}
+	ipResults["d6666"] = []net.IP{ip6666}
+	ipResults["d6660"] = []net.IP{ip6660}
+	mxResults["d6660"] = []*net.MX{{"d6660", 5}, {"nothing", 10}}
+	addrResults["2001:db8::68"] = []string{"sonlas6.", "domain.", "d6666."}
+	addrResults["1.1.1.1"] = []string{"lalala.", "domain.", "d1111."}
+}
+
+func Fuzz(data []byte) int {
+	// The domain's TXT record comes from the fuzzer.
+	txtResults["domain"] = []string{string(data)}
+
+	v4result, _ := CheckHost(ip1111, "domain") // IPv4
+	v6result, _ := CheckHost(ip6666, "domain") // IPv6
+
+	// Raise priority if any of the results was something other than
+	// PermError, as it means the data was better formed.
+	if v4result != PermError || v6result != PermError {
+		return 1
+	}
+	return 0
+}
diff --git a/testdata/fuzz/corpus/00cf37c4fa061abb08aeed0981d8d0e26a1e1323-4 b/testdata/fuzz/corpus/00cf37c4fa061abb08aeed0981d8d0e26a1e1323-4
new file mode 100644
index 0000000..26cf489
--- /dev/null
+++ b/testdata/fuzz/corpus/00cf37c4fa061abb08aeed0981d8d0e26a1e1323-4
@@ -0,0 +1 @@
+v=spf1 include:domain   
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/01438665d70f99814773625c2b18eb2104f4ea13-5 b/testdata/fuzz/corpus/01438665d70f99814773625c2b18eb2104f4ea13-5
new file mode 100644
index 0000000..d0b2aeb
--- /dev/null
+++ b/testdata/fuzz/corpus/01438665d70f99814773625c2b18eb2104f4ea13-5
@@ -0,0 +1 @@
+v=spf1 𫞵𫞵𫞵𫞵
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/031baaf383cfebcacc31eeb3c4d060743adc6be0-3 b/testdata/fuzz/corpus/031baaf383cfebcacc31eeb3c4d060743adc6be0-3
new file mode 100644
index 0000000..8f3bfbc
--- /dev/null
+++ b/testdata/fuzz/corpus/031baaf383cfebcacc31eeb3c4d060743adc6be0-3
@@ -0,0 +1 @@
+v=spf1 \xd5\xf3\xd5\xef\xef4
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/03279b4fd8a0a693cc9bf81bcd225fcae6101d24-9 b/testdata/fuzz/corpus/03279b4fd8a0a693cc9bf81bcd225fcae6101d24-9
new file mode 100644
index 0000000..064cac0
--- /dev/null
+++ b/testdata/fuzz/corpus/03279b4fd8a0a693cc9bf81bcd225fcae6101d24-9
@@ -0,0 +1 @@
+v=spf1 a/ a/ a/ a/ a/ a/ a/ a/ a/
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/0646a02a7b4f134295dccc4f3b6d4f74a98fd107-5 b/testdata/fuzz/corpus/0646a02a7b4f134295dccc4f3b6d4f74a98fd107-5
new file mode 100644
index 0000000..b1f9823
--- /dev/null
+++ b/testdata/fuzz/corpus/0646a02a7b4f134295dccc4f3b6d4f74a98fd107-5
@@ -0,0 +1 @@
+v=spf1 include:domain    
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/06bec983ccd57eed211cbd4bda8583ace4c45c8c-7 b/testdata/fuzz/corpus/06bec983ccd57eed211cbd4bda8583ace4c45c8c-7
new file mode 100644
index 0000000..6e0189c
--- /dev/null
+++ b/testdata/fuzz/corpus/06bec983ccd57eed211cbd4bda8583ace4c45c8c-7
@@ -0,0 +1 @@
+v=spf1 mx mx a mx
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/07d761d89cec1e613b391dae889ac55b2dceec9e-14 b/testdata/fuzz/corpus/07d761d89cec1e613b391dae889ac55b2dceec9e-14
new file mode 100644
index 0000000..a98f4fe
--- /dev/null
+++ b/testdata/fuzz/corpus/07d761d89cec1e613b391dae889ac55b2dceec9e-14
@@ -0,0 +1 @@
+v=spf1 mx:󂂂󂂂󂂂󂂂󂂂󂂂󂂽 include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/07e9ac18500412e857ac88d53d2d14fa38763489-2 b/testdata/fuzz/corpus/07e9ac18500412e857ac88d53d2d14fa38763489-2
new file mode 100644
index 0000000..ff3f14b
--- /dev/null
+++ b/testdata/fuzz/corpus/07e9ac18500412e857ac88d53d2d14fa38763489-2
@@ -0,0 +1 @@
+v=spf1 mx:d1\xa4\xde\xd0Ea110~al+-l
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/0b23284bbc74c7e72dcad1e56ad2c0c422c76f6c-2 b/testdata/fuzz/corpus/0b23284bbc74c7e72dcad1e56ad2c0c422c76f6c-2
new file mode 100644
index 0000000..d703153
--- /dev/null
+++ b/testdata/fuzz/corpus/0b23284bbc74c7e72dcad1e56ad2c0c422c76f6c-2
@@ -0,0 +1 @@
+v=spf1 include:domain 1 
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/0b5b6a45778d16db6c3a53ec6d96d8ddb70cbf3b-3 b/testdata/fuzz/corpus/0b5b6a45778d16db6c3a53ec6d96d8ddb70cbf3b-3
new file mode 100644
index 0000000..1434eff
--- /dev/null
+++ b/testdata/fuzz/corpus/0b5b6a45778d16db6c3a53ec6d96d8ddb70cbf3b-3
@@ -0,0 +1 @@
+v=spf1 a/-110718626451492305703
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/0c4314c16a99b6d5be7b506088e5194bc01edf1e-9 b/testdata/fuzz/corpus/0c4314c16a99b6d5be7b506088e5194bc01edf1e-9
new file mode 100644
index 0000000..566dd55
--- /dev/null
+++ b/testdata/fuzz/corpus/0c4314c16a99b6d5be7b506088e5194bc01edf1e-9
@@ -0,0 +1 @@
+v=spf1 a:d1110/1 a:d1110/1 include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/0ce9a737495f56e975b86c862d1b2ce62b0997bc-4 b/testdata/fuzz/corpus/0ce9a737495f56e975b86c862d1b2ce62b0997bc-4
new file mode 100644
index 0000000..1f6e379
--- /dev/null
+++ b/testdata/fuzz/corpus/0ce9a737495f56e975b86c862d1b2ce62b0997bc-4
@@ -0,0 +1 @@
+v=spf1 \xf3\x81\xf3\x82\x82)
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/0d45f75bc08ac9bf702effdb893ca87c801a7294-4 b/testdata/fuzz/corpus/0d45f75bc08ac9bf702effdb893ca87c801a7294-4
new file mode 100644
index 0000000..e4492f6
--- /dev/null
+++ b/testdata/fuzz/corpus/0d45f75bc08ac9bf702effdb893ca87c801a7294-4
@@ -0,0 +1 @@
+v=spf1 mx1 mx/ a/
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/0e955ff9c6d5c2d145779ddc32e8af92f3fce15c-2 b/testdata/fuzz/corpus/0e955ff9c6d5c2d145779ddc32e8af92f3fce15c-2
new file mode 100644
index 0000000..13decf5
--- /dev/null
+++ b/testdata/fuzz/corpus/0e955ff9c6d5c2d145779ddc32e8af92f3fce15c-2
@@ -0,0 +1 @@
+v=spf1 
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/10af261a4eba5d6a09178858f7f7b2bdc8a4d2ed-6 b/testdata/fuzz/corpus/10af261a4eba5d6a09178858f7f7b2bdc8a4d2ed-6
new file mode 100644
index 0000000..0e2c982
--- /dev/null
+++ b/testdata/fuzz/corpus/10af261a4eba5d6a09178858f7f7b2bdc8a4d2ed-6
@@ -0,0 +1 @@
+v=spf1 include:domain \xe2
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/113d1b233d0b182ce8dec943a01a213dbc1bfc32-4 b/testdata/fuzz/corpus/113d1b233d0b182ce8dec943a01a213dbc1bfc32-4
new file mode 100644
index 0000000..20cfb35
--- /dev/null
+++ b/testdata/fuzz/corpus/113d1b233d0b182ce8dec943a01a213dbc1bfc32-4
@@ -0,0 +1 @@
+v=spf1 󁂂
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/115c29a6c848857a691de2267b7d3ac92ce5f384-2 b/testdata/fuzz/corpus/115c29a6c848857a691de2267b7d3ac92ce5f384-2
new file mode 100644
index 0000000..34a2fcd
--- /dev/null
+++ b/testdata/fuzz/corpus/115c29a6c848857a691de2267b7d3ac92ce5f384-2
@@ -0,0 +1 @@
+v=spf1 a a
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/124eddd031bfaecce3884922d2180332032e4156-5 b/testdata/fuzz/corpus/124eddd031bfaecce3884922d2180332032e4156-5
new file mode 100644
index 0000000..24a9b9b
--- /dev/null
+++ b/testdata/fuzz/corpus/124eddd031bfaecce3884922d2180332032e4156-5
@@ -0,0 +1 @@
+v=spf1 \x81\xf3\x81h\xbf\xbd\xbd\xf1\xbf/\xbd\xef\xbd\xef\xbf)\xbd\xbd\xbd\xb6\x80\xbf\xbd\xf1\xbf/\xbd\xff\xf1\xbf/\xbd\xef\xbd\xef\xbf)\xbd\xbd\xbd\xb6\x80\xbf\xbd\xf1\xbf/\xbd\xff
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/1266c0d0f5c4ca735e3a71c9edff3d4e5aca9bbd b/testdata/fuzz/corpus/1266c0d0f5c4ca735e3a71c9edff3d4e5aca9bbd
new file mode 100644
index 0000000..92d1405
--- /dev/null
+++ b/testdata/fuzz/corpus/1266c0d0f5c4ca735e3a71c9edff3d4e5aca9bbd
@@ -0,0 +1 @@
+v=spf1 mx:d6660/24 l
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/157b209632435b7b661b3438c96d1e8548550476-6 b/testdata/fuzz/corpus/157b209632435b7b661b3438c96d1e8548550476-6
new file mode 100644
index 0000000..1f7b29b
--- /dev/null
+++ b/testdata/fuzz/corpus/157b209632435b7b661b3438c96d1e8548550476-6
@@ -0,0 +1 @@
+v=spf1 \x81\xf3\xf3\xf8\x8d\x91\x82\x81\xf3
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/159729fed614b134e57b677bc72474f6463d362b-6 b/testdata/fuzz/corpus/159729fed614b134e57b677bc72474f6463d362b-6
new file mode 100644
index 0000000..f40531a
--- /dev/null
+++ b/testdata/fuzz/corpus/159729fed614b134e57b677bc72474f6463d362b-6
@@ -0,0 +1 @@
+v=spf1 include:domain    \xb2
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/15da32d2909f118a0fc25ca4dccf07b03ff3c483-6 b/testdata/fuzz/corpus/15da32d2909f118a0fc25ca4dccf07b03ff3c483-6
new file mode 100644
index 0000000..c21b0fd
--- /dev/null
+++ b/testdata/fuzz/corpus/15da32d2909f118a0fc25ca4dccf07b03ff3c483-6
@@ -0,0 +1 @@
+v=spf1 𗞵𗞵𗞵𗞵𗞵𗞵𗞵𗞵𗞵
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/15f3b6fef4391fd987ffc0ddf0c449046f0898b2-3 b/testdata/fuzz/corpus/15f3b6fef4391fd987ffc0ddf0c449046f0898b2-3
new file mode 100644
index 0000000..6ff82bf
Binary files /dev/null and b/testdata/fuzz/corpus/15f3b6fef4391fd987ffc0ddf0c449046f0898b2-3 differ
diff --git a/testdata/fuzz/corpus/160f80a8549044c6e3aca7b9d1e3964238615667-6 b/testdata/fuzz/corpus/160f80a8549044c6e3aca7b9d1e3964238615667-6
new file mode 100644
index 0000000..6d4f19b
--- /dev/null
+++ b/testdata/fuzz/corpus/160f80a8549044c6e3aca7b9d1e3964238615667-6
@@ -0,0 +1 @@
+v=spf1 󂂂󂂂󂂀
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/1677b850a2b9471330774daab8ee651332ba4373-6 b/testdata/fuzz/corpus/1677b850a2b9471330774daab8ee651332ba4373-6
new file mode 100644
index 0000000..690c511
--- /dev/null
+++ b/testdata/fuzz/corpus/1677b850a2b9471330774daab8ee651332ba4373-6
@@ -0,0 +1 @@
+v=spf1 mx:d1110/4 include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/1845de197b696ae69aa7a1a800bc3658f3b93946-2 b/testdata/fuzz/corpus/1845de197b696ae69aa7a1a800bc3658f3b93946-2
new file mode 100644
index 0000000..1aa9c1a
--- /dev/null
+++ b/testdata/fuzz/corpus/1845de197b696ae69aa7a1a800bc3658f3b93946-2
@@ -0,0 +1 @@
+v=spf1 a/C
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/190b3bd4bd8de1bda728ed60865624b5177f554c-5 b/testdata/fuzz/corpus/190b3bd4bd8de1bda728ed60865624b5177f554c-5
new file mode 100644
index 0000000..8b0744d
--- /dev/null
+++ b/testdata/fuzz/corpus/190b3bd4bd8de1bda728ed60865624b5177f554c-5
@@ -0,0 +1 @@
+v=spf1 
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/193c50b3e52fe33fe67cb982ade55dbecb14896d-11 b/testdata/fuzz/corpus/193c50b3e52fe33fe67cb982ade55dbecb14896d-11
new file mode 100644
index 0000000..a5a1fd8
--- /dev/null
+++ b/testdata/fuzz/corpus/193c50b3e52fe33fe67cb982ade55dbecb14896d-11
@@ -0,0 +1 @@
+v=spf1 a: a: a: a: a: include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/19b7f4b8fe98a86a6a4b845dfb7a803ae7198274-6 b/testdata/fuzz/corpus/19b7f4b8fe98a86a6a4b845dfb7a803ae7198274-6
new file mode 100644
index 0000000..dbc944a
--- /dev/null
+++ b/testdata/fuzz/corpus/19b7f4b8fe98a86a6a4b845dfb7a803ae7198274-6
@@ -0,0 +1 @@
+v=spf1 \xbd    
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/1aa7c2119ab155decb1e32c8efc1102a23030355-4 b/testdata/fuzz/corpus/1aa7c2119ab155decb1e32c8efc1102a23030355-4
new file mode 100644
index 0000000..221761a
--- /dev/null
+++ b/testdata/fuzz/corpus/1aa7c2119ab155decb1e32c8efc1102a23030355-4
@@ -0,0 +1 @@
+v=spf1 a/-4 a/-1
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/1af13087f6bb92df8764a5b00eb5c0561dc8b840-4 b/testdata/fuzz/corpus/1af13087f6bb92df8764a5b00eb5c0561dc8b840-4
new file mode 100644
index 0000000..ab6d913
--- /dev/null
+++ b/testdata/fuzz/corpus/1af13087f6bb92df8764a5b00eb5c0561dc8b840-4
@@ -0,0 +1 @@
+v=spf1 a: include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/1b2840abfb70a1fb6b0ca9e8cd79b1d0aab1d7da-5 b/testdata/fuzz/corpus/1b2840abfb70a1fb6b0ca9e8cd79b1d0aab1d7da-5
new file mode 100644
index 0000000..51d1452
--- /dev/null
+++ b/testdata/fuzz/corpus/1b2840abfb70a1fb6b0ca9e8cd79b1d0aab1d7da-5
@@ -0,0 +1 @@
+v=spf1 \xf3\x81\xf3\x82\xc2)
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/1c9cf133f11bf274dd446ff4245b8f53a8911374-4 b/testdata/fuzz/corpus/1c9cf133f11bf274dd446ff4245b8f53a8911374-4
new file mode 100644
index 0000000..e8f3b0a
--- /dev/null
+++ b/testdata/fuzz/corpus/1c9cf133f11bf274dd446ff4245b8f53a8911374-4
@@ -0,0 +1 @@
+v=spf1 \xf3\x81\xf3\x82�
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/201fd81935a2589e34ead502b014bc0f6f7bc997-4 b/testdata/fuzz/corpus/201fd81935a2589e34ead502b014bc0f6f7bc997-4
new file mode 100644
index 0000000..aba9106
--- /dev/null
+++ b/testdata/fuzz/corpus/201fd81935a2589e34ead502b014bc0f6f7bc997-4
@@ -0,0 +1 @@
+v=spf1 \xf3\x82\x82\xf3\x82\x82\xef
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/20f917fc7cf15d12876ee3a7091d886878528861-6 b/testdata/fuzz/corpus/20f917fc7cf15d12876ee3a7091d886878528861-6
new file mode 100644
index 0000000..bb71bba
--- /dev/null
+++ b/testdata/fuzz/corpus/20f917fc7cf15d12876ee3a7091d886878528861-6
@@ -0,0 +1 @@
+v=spf1 mx\xf3\x82\xad)
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/21057897c2a43f23eba4b7a7ec4105fcfe16c000-2 b/testdata/fuzz/corpus/21057897c2a43f23eba4b7a7ec4105fcfe16c000-2
new file mode 100644
index 0000000..ca6aa96
--- /dev/null
+++ b/testdata/fuzz/corpus/21057897c2a43f23eba4b7a7ec4105fcfe16c000-2
@@ -0,0 +1 @@
+v=spf1 \xd5\xf3\xd5\xef\xef\xef\xef\xef\xef4
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/2136c0d1947b42b3db810eed459886dd7e2fa578-13 b/testdata/fuzz/corpus/2136c0d1947b42b3db810eed459886dd7e2fa578-13
new file mode 100644
index 0000000..c76a940
--- /dev/null
+++ b/testdata/fuzz/corpus/2136c0d1947b42b3db810eed459886dd7e2fa578-13
@@ -0,0 +1 @@
+v=spf1 a/1107186261862645451 include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/21505c4e4d334b454dc5eebce4ebacdf7637e7d0-6 b/testdata/fuzz/corpus/21505c4e4d334b454dc5eebce4ebacdf7637e7d0-6
new file mode 100644
index 0000000..80432cf
--- /dev/null
+++ b/testdata/fuzz/corpus/21505c4e4d334b454dc5eebce4ebacdf7637e7d0-6
@@ -0,0 +1 @@
+v=spf1 a/-1 include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/2257d0500932ac25815c565e3eb907d10fc0b277-6 b/testdata/fuzz/corpus/2257d0500932ac25815c565e3eb907d10fc0b277-6
new file mode 100644
index 0000000..ca565d7
--- /dev/null
+++ b/testdata/fuzz/corpus/2257d0500932ac25815c565e3eb907d10fc0b277-6
@@ -0,0 +1 @@
+v=spf1 mx\xf3\x82\xad) include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/245dd24e4b3d44f11b3c0558b1e40b37099a854a-4 b/testdata/fuzz/corpus/245dd24e4b3d44f11b3c0558b1e40b37099a854a-4
new file mode 100644
index 0000000..e1d69df
--- /dev/null
+++ b/testdata/fuzz/corpus/245dd24e4b3d44f11b3c0558b1e40b37099a854a-4
@@ -0,0 +1 @@
+v=spf1 
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/246db128b29bc81da0d3e9ec5e5cf8a3ed09a338-1 b/testdata/fuzz/corpus/246db128b29bc81da0d3e9ec5e5cf8a3ed09a338-1
new file mode 100644
index 0000000..a504d49
--- /dev/null
+++ b/testdata/fuzz/corpus/246db128b29bc81da0d3e9ec5e5cf8a3ed09a338-1
@@ -0,0 +1 @@
+v=spf1 mx/24l
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/26c5e455a3b81a4d3a09b80f4b46ec10896b48e1-5 b/testdata/fuzz/corpus/26c5e455a3b81a4d3a09b80f4b46ec10896b48e1-5
new file mode 100644
index 0000000..573f22d
--- /dev/null
+++ b/testdata/fuzz/corpus/26c5e455a3b81a4d3a09b80f4b46ec10896b48e1-5
@@ -0,0 +1 @@
+v=spf1 a/1 a/f
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/2ab0225495089b6fa60083d05140b5ce80dd1096-8 b/testdata/fuzz/corpus/2ab0225495089b6fa60083d05140b5ce80dd1096-8
new file mode 100644
index 0000000..e5ce3c3
--- /dev/null
+++ b/testdata/fuzz/corpus/2ab0225495089b6fa60083d05140b5ce80dd1096-8
@@ -0,0 +1 @@
+v=spf1 ½½½½½
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/2c34d594739876049e7ad50a5b30becd1dee9f6d-5 b/testdata/fuzz/corpus/2c34d594739876049e7ad50a5b30becd1dee9f6d-5
new file mode 100644
index 0000000..27aee1b
--- /dev/null
+++ b/testdata/fuzz/corpus/2c34d594739876049e7ad50a5b30becd1dee9f6d-5
@@ -0,0 +1 @@
+v=spf1 𗞵𗞵𗞵𗞵𗞵
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/2cb1af576215fede0d684c6b3794579865999d6d-2 b/testdata/fuzz/corpus/2cb1af576215fede0d684c6b3794579865999d6d-2
new file mode 100644
index 0000000..e5e2eae
--- /dev/null
+++ b/testdata/fuzz/corpus/2cb1af576215fede0d684c6b3794579865999d6d-2
@@ -0,0 +1 @@
+v=spf1 mx/ a/C
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/2dd167b87fa68dfbbb01dd347eaf5fb26668a6a8-4 b/testdata/fuzz/corpus/2dd167b87fa68dfbbb01dd347eaf5fb26668a6a8-4
new file mode 100644
index 0000000..e45dd3c
--- /dev/null
+++ b/testdata/fuzz/corpus/2dd167b87fa68dfbbb01dd347eaf5fb26668a6a8-4
@@ -0,0 +1 @@
+v=spf1 mx:d1\xac1\xde\xd0Ea110~allPe
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/2dee827f4fa52b8e782790a06e69e3149c0ac7df-2 b/testdata/fuzz/corpus/2dee827f4fa52b8e782790a06e69e3149c0ac7df-2
new file mode 100644
index 0000000..880a66d
--- /dev/null
+++ b/testdata/fuzz/corpus/2dee827f4fa52b8e782790a06e69e3149c0ac7df-2
@@ -0,0 +1 @@
+v=spf1 \xd5\xf3\x82
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/2fa9261819c9517006f54dfec93077a5ffeefc8d-5 b/testdata/fuzz/corpus/2fa9261819c9517006f54dfec93077a5ffeefc8d-5
new file mode 100644
index 0000000..017a79d
--- /dev/null
+++ b/testdata/fuzz/corpus/2fa9261819c9517006f54dfec93077a5ffeefc8d-5
@@ -0,0 +1 @@
+v=spf1 mx:d1\xac1\xde\xd0Ea867361737988403547205962240695953369140625110~allPe
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/316359122b01ab00929f7a7aea0291f66f227598-7 b/testdata/fuzz/corpus/316359122b01ab00929f7a7aea0291f66f227598-7
new file mode 100644
index 0000000..5d62ee4
--- /dev/null
+++ b/testdata/fuzz/corpus/316359122b01ab00929f7a7aea0291f66f227598-7
@@ -0,0 +1 @@
+v=spf1 a/4 a/4 a/4 a/4 a/1
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/31e0d230a07f7ba48c522c9d0f1bff66e37d9c5d-7 b/testdata/fuzz/corpus/31e0d230a07f7ba48c522c9d0f1bff66e37d9c5d-7
new file mode 100644
index 0000000..680e56c
--- /dev/null
+++ b/testdata/fuzz/corpus/31e0d230a07f7ba48c522c9d0f1bff66e37d9c5d-7
@@ -0,0 +1 @@
+v=spf1 mx1 mx1 mx/ mx/ mx1 mx1 mx/ mx/ mx//
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/32ae1061275f98e132845ab4973ec066c5652dd3-3 b/testdata/fuzz/corpus/32ae1061275f98e132845ab4973ec066c5652dd3-3
new file mode 100644
index 0000000..8bc5cd5
--- /dev/null
+++ b/testdata/fuzz/corpus/32ae1061275f98e132845ab4973ec066c5652dd3-3
@@ -0,0 +1 @@
+v=spf1 mx:d1\xa4\xde\xd0Ea110~al+-lPe.(
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/338e1b5e0a09e5f518cfd79791fa93f8017d6b57-10 b/testdata/fuzz/corpus/338e1b5e0a09e5f518cfd79791fa93f8017d6b57-10
new file mode 100644
index 0000000..ecb3544
--- /dev/null
+++ b/testdata/fuzz/corpus/338e1b5e0a09e5f518cfd79791fa93f8017d6b57-10
@@ -0,0 +1 @@
+v=spf1 mx:\xde\xd0Q\xde\xd0Q\xefQ\xef)\xbd include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/35e9e0e05acc1088fb73dafbb69ba6cb1594d8ec-1 b/testdata/fuzz/corpus/35e9e0e05acc1088fb73dafbb69ba6cb1594d8ec-1
new file mode 100644
index 0000000..76533d0
--- /dev/null
+++ b/testdata/fuzz/corpus/35e9e0e05acc1088fb73dafbb69ba6cb1594d8ec-1
@@ -0,0 +1 @@
+v=spf1 
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/35ee7e5ddb6e8ae9a243785b8139e0e73ba636b7-12 b/testdata/fuzz/corpus/35ee7e5ddb6e8ae9a243785b8139e0e73ba636b7-12
new file mode 100644
index 0000000..b4b2e53
--- /dev/null
+++ b/testdata/fuzz/corpus/35ee7e5ddb6e8ae9a243785b8139e0e73ba636b7-12
@@ -0,0 +1 @@
+v=spf1 mx:\xf3\x82\x82\xf3\x82\x82\xf3\x82\x82\xf3\x82\x82\xf3\x82\x82\xf3\x82\x82\xd7󂂽 include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/36a4254e1961ad0fca4c222636abe6a814bcf850-10 b/testdata/fuzz/corpus/36a4254e1961ad0fca4c222636abe6a814bcf850-10
new file mode 100644
index 0000000..5f5f41c
--- /dev/null
+++ b/testdata/fuzz/corpus/36a4254e1961ad0fca4c222636abe6a814bcf850-10
@@ -0,0 +1 @@
+v=spf1 𫞵𫶵𫞵𫞵𫞵𫶵𫞵𫞵𫎵𫞵𫞵𫞵𫞵𫎵𫞵𫞵𫞵𫞵
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/37c95310204accca732a0e73a4d5adea8c5e5fce-8 b/testdata/fuzz/corpus/37c95310204accca732a0e73a4d5adea8c5e5fce-8
new file mode 100644
index 0000000..ea56475
--- /dev/null
+++ b/testdata/fuzz/corpus/37c95310204accca732a0e73a4d5adea8c5e5fce-8
@@ -0,0 +1 @@
+v=spf1 mx mx a a mx
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/382cef3168021f6d496ec419b439a6fbb1b4ce35-7 b/testdata/fuzz/corpus/382cef3168021f6d496ec419b439a6fbb1b4ce35-7
new file mode 100644
index 0000000..dd6cf11
--- /dev/null
+++ b/testdata/fuzz/corpus/382cef3168021f6d496ec419b439a6fbb1b4ce35-7
@@ -0,0 +1 @@
+v=spf1 \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/3898299a8b2a624638b68bb2a84da413fd22a3a7-9 b/testdata/fuzz/corpus/3898299a8b2a624638b68bb2a84da413fd22a3a7-9
new file mode 100644
index 0000000..6ee6e20
--- /dev/null
+++ b/testdata/fuzz/corpus/3898299a8b2a624638b68bb2a84da413fd22a3a7-9
@@ -0,0 +1 @@
+v=spf1 mx:�������\xef5551115123125782702118158340454101J625\xbf\xbd include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/38f649f7346700239d5522449476b86083d76219-7 b/testdata/fuzz/corpus/38f649f7346700239d5522449476b86083d76219-7
new file mode 100644
index 0000000..3c28348
--- /dev/null
+++ b/testdata/fuzz/corpus/38f649f7346700239d5522449476b86083d76219-7
@@ -0,0 +1 @@
+v=spf1 include:domain \xf4\xe2
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/39615f91d3139087871dea5423785d06b9b510a7 b/testdata/fuzz/corpus/39615f91d3139087871dea5423785d06b9b510a7
new file mode 100644
index 0000000..9f31356
--- /dev/null
+++ b/testdata/fuzz/corpus/39615f91d3139087871dea5423785d06b9b510a7
@@ -0,0 +1 @@
+v=spf1 mx:a/montoto
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/3c208a50d0fe369bbf2dc88be86a0fb911f9efda-8 b/testdata/fuzz/corpus/3c208a50d0fe369bbf2dc88be86a0fb911f9efda-8
new file mode 100644
index 0000000..9dae18b
--- /dev/null
+++ b/testdata/fuzz/corpus/3c208a50d0fe369bbf2dc88be86a0fb911f9efda-8
@@ -0,0 +1 @@
+v=spf1 󂂂󂂂󫞵󂂂󫿽
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/3c757915c56d6e6261b56366ec4cb21ed2ffea62-5 b/testdata/fuzz/corpus/3c757915c56d6e6261b56366ec4cb21ed2ffea62-5
new file mode 100644
index 0000000..2b4430e
--- /dev/null
+++ b/testdata/fuzz/corpus/3c757915c56d6e6261b56366ec4cb21ed2ffea62-5
@@ -0,0 +1 @@
+v=spf1 \xe2  
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/3d21efa964a356b0cab7875359464aea0dc6ad0f-8 b/testdata/fuzz/corpus/3d21efa964a356b0cab7875359464aea0dc6ad0f-8
new file mode 100644
index 0000000..5fd4ce2
--- /dev/null
+++ b/testdata/fuzz/corpus/3d21efa964a356b0cab7875359464aea0dc6ad0f-8
@@ -0,0 +1 @@
+v=spf1 𫞵𫶵𫞵𫞵𫎵𫞵𫞵𫞵𫞵
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/3e704e64145afc057e4f02234b55c772718c161c-4 b/testdata/fuzz/corpus/3e704e64145afc057e4f02234b55c772718c161c-4
new file mode 100644
index 0000000..6c05716
--- /dev/null
+++ b/testdata/fuzz/corpus/3e704e64145afc057e4f02234b55c772718c161c-4
@@ -0,0 +1 @@
+v=spf1 \xd5\xf3\xd5\xef\xef\xef\xef\xef\xef\xef\xef\xef\xd5\xf3\xd5\xef\xef\xd5\xf3\xd5\xef\xef
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/3ee74f7037ce9790e2162c3ce5e6bafa89dfc65b-5 b/testdata/fuzz/corpus/3ee74f7037ce9790e2162c3ce5e6bafa89dfc65b-5
new file mode 100644
index 0000000..e197ca4
--- /dev/null
+++ b/testdata/fuzz/corpus/3ee74f7037ce9790e2162c3ce5e6bafa89dfc65b-5
@@ -0,0 +1 @@
+v=spf1 
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/3f6e987ce012be6005576673865864ec7e99d3a1-6 b/testdata/fuzz/corpus/3f6e987ce012be6005576673865864ec7e99d3a1-6
new file mode 100644
index 0000000..1ef061a
--- /dev/null
+++ b/testdata/fuzz/corpus/3f6e987ce012be6005576673865864ec7e99d3a1-6
@@ -0,0 +1 @@
+v=spf1 ½½
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/421a3ef0790b962fc48296c328c19921791ee25f-3 b/testdata/fuzz/corpus/421a3ef0790b962fc48296c328c19921791ee25f-3
new file mode 100644
index 0000000..911383c
--- /dev/null
+++ b/testdata/fuzz/corpus/421a3ef0790b962fc48296c328c19921791ee25f-3
@@ -0,0 +1 @@
+v=spf1 ﻽￯
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/4503e3f4c0c8727025ee51d06e5832243c70a9e7-3 b/testdata/fuzz/corpus/4503e3f4c0c8727025ee51d06e5832243c70a9e7-3
new file mode 100644
index 0000000..9ef88b5
--- /dev/null
+++ b/testdata/fuzz/corpus/4503e3f4c0c8727025ee51d06e5832243c70a9e7-3
@@ -0,0 +1 @@
+v=spf1 \xd5\xf3\xd5
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/45f58a2e37b8c691e40ea6f26408d6f5e6234d6a-7 b/testdata/fuzz/corpus/45f58a2e37b8c691e40ea6f26408d6f5e6234d6a-7
new file mode 100644
index 0000000..b72779b
--- /dev/null
+++ b/testdata/fuzz/corpus/45f58a2e37b8c691e40ea6f26408d6f5e6234d6a-7
@@ -0,0 +1 @@
+v=spf1 \xf3\x81\xf1\xbf\xef\xbd\xef\xbf\xf1\xbf\xf1\xbf\xef\xbd\xef\xbf\xf3\x81\xf1\xbf\xf3\x81\xf1\xbf\xef\xbd\xef\xbf\xf1\xbf\xf1\xbf\xef\xbd\xef\xbf\xf3\x81\xf1\xbf\xef\xbd\xef\xbf\xf1\xbf\xf1\xbf\xef\xbd\xef\xbf\xef\xbd\xef\xbf\xf1\xbf\xf1\xbf\xef\xbd\xef\xbf\xf1\xbf/\xbd
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/461d4557426af8b282e79ce5d6bb25916f98a706-13 b/testdata/fuzz/corpus/461d4557426af8b282e79ce5d6bb25916f98a706-13
new file mode 100644
index 0000000..2ebff7c
--- /dev/null
+++ b/testdata/fuzz/corpus/461d4557426af8b282e79ce5d6bb25916f98a706-13
@@ -0,0 +1 @@
+v=spf1 mx󂂂 include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/4677a5eff032ececff3c72e905271d34af4a4a1b-7 b/testdata/fuzz/corpus/4677a5eff032ececff3c72e905271d34af4a4a1b-7
new file mode 100644
index 0000000..3e03351
--- /dev/null
+++ b/testdata/fuzz/corpus/4677a5eff032ececff3c72e905271d34af4a4a1b-7
@@ -0,0 +1 @@
+v=spf1 ￯﻽￯﻽﻽￯﻽￯﻽﻽￯﻽﻽￯﻽﻽￯
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/475e8ffdb31020d60e29cffc34013fe2a2ca5c8f-4 b/testdata/fuzz/corpus/475e8ffdb31020d60e29cffc34013fe2a2ca5c8f-4
new file mode 100644
index 0000000..8e99a6d
--- /dev/null
+++ b/testdata/fuzz/corpus/475e8ffdb31020d60e29cffc34013fe2a2ca5c8f-4
@@ -0,0 +1 @@
+v=spf1 
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/485b5dfc7b96f912c1b98ddccb9127f167fd997c-11 b/testdata/fuzz/corpus/485b5dfc7b96f912c1b98ddccb9127f167fd997c-11
new file mode 100644
index 0000000..6101458
--- /dev/null
+++ b/testdata/fuzz/corpus/485b5dfc7b96f912c1b98ddccb9127f167fd997c-11
@@ -0,0 +1 @@
+v=spf1 󂂂󂂂󫞵󂂂󫞵󂂂󫞵󂂂󂂂󫞵󂂂󫿽󂂂󫞵󂂂󂂂󫞵󂂂󫿽󿞵󂂂󂂂󫞵󂂂󫿽󂂂󫞵󂂂󂂂󫞵󂂂󫿽󫿽
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/486e98cf7b182565ddd3095d5f57b68ec12d91f6-4 b/testdata/fuzz/corpus/486e98cf7b182565ddd3095d5f57b68ec12d91f6-4
new file mode 100644
index 0000000..c80e69a
--- /dev/null
+++ b/testdata/fuzz/corpus/486e98cf7b182565ddd3095d5f57b68ec12d91f6-4
@@ -0,0 +1 @@
+v=spf1 \x81\xf3\xbf\xbd\xef\xbf/\xbd\xef\xbd\xef\xbf)\xbd\xbd\xbd\xb6\x80\xff
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/4ada9982255464020458f90c31409f083dd3cec4-5 b/testdata/fuzz/corpus/4ada9982255464020458f90c31409f083dd3cec4-5
new file mode 100644
index 0000000..ac80cfc
--- /dev/null
+++ b/testdata/fuzz/corpus/4ada9982255464020458f90c31409f083dd3cec4-5
@@ -0,0 +1 @@
+v=spf1 include:domain  \xc5
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/4b44d6f2f223de32f6d97221017c72b135b6fc8f-8 b/testdata/fuzz/corpus/4b44d6f2f223de32f6d97221017c72b135b6fc8f-8
new file mode 100644
index 0000000..732d29b
--- /dev/null
+++ b/testdata/fuzz/corpus/4b44d6f2f223de32f6d97221017c72b135b6fc8f-8
@@ -0,0 +1 @@
+v=spf1 a/+554551866include:d
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/4b4906e4bf471486b1a1ebddfb9bbbd4f375939f-1 b/testdata/fuzz/corpus/4b4906e4bf471486b1a1ebddfb9bbbd4f375939f-1
new file mode 100644
index 0000000..cfeb1b9
--- /dev/null
+++ b/testdata/fuzz/corpus/4b4906e4bf471486b1a1ebddfb9bbbd4f375939f-1
@@ -0,0 +1 @@
+v=spf1 mx:d1110~all
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/4b9765f8f632dfebc4eeff12147cffd66cf29f1e-4 b/testdata/fuzz/corpus/4b9765f8f632dfebc4eeff12147cffd66cf29f1e-4
new file mode 100644
index 0000000..4da06a4
--- /dev/null
+++ b/testdata/fuzz/corpus/4b9765f8f632dfebc4eeff12147cffd66cf29f1e-4
@@ -0,0 +1 @@
+v=spf1 a\xca include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/4c754e7f659c7041831fe8af2e6ea197ecb71fee b/testdata/fuzz/corpus/4c754e7f659c7041831fe8af2e6ea197ecb71fee
new file mode 100644
index 0000000..c4dbb17
--- /dev/null
+++ b/testdata/fuzz/corpus/4c754e7f659c7041831fe8af2e6ea197ecb71fee
@@ -0,0 +1 @@
+v=spf1 ptr
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/4ca27bea96aa9b43cd75e990b3aaf486e184d731-3 b/testdata/fuzz/corpus/4ca27bea96aa9b43cd75e990b3aaf486e184d731-3
new file mode 100644
index 0000000..20a4e41
--- /dev/null
+++ b/testdata/fuzz/corpus/4ca27bea96aa9b43cd75e990b3aaf486e184d731-3
@@ -0,0 +1 @@
+v=spf1 Ձ\xf3\x81\xf3\x82\x82)
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/4ca8520bd82b4ac343bb4e1cd7e9950d10b238c7-7 b/testdata/fuzz/corpus/4ca8520bd82b4ac343bb4e1cd7e9950d10b238c7-7
new file mode 100644
index 0000000..210cd80
--- /dev/null
+++ b/testdata/fuzz/corpus/4ca8520bd82b4ac343bb4e1cd7e9950d10b238c7-7
@@ -0,0 +1 @@
+v=spf1 ½½½
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/4cc5a579d3fcdf1e05d673591d322edd04ce43c4-10 b/testdata/fuzz/corpus/4cc5a579d3fcdf1e05d673591d322edd04ce43c4-10
new file mode 100644
index 0000000..a3d0a98
--- /dev/null
+++ b/testdata/fuzz/corpus/4cc5a579d3fcdf1e05d673591d322edd04ce43c4-10
@@ -0,0 +1 @@
+v=spf1 a::/1 a:0/1 include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/4d26846d4153063a9af7a8f839b188ff037ef53c-1 b/testdata/fuzz/corpus/4d26846d4153063a9af7a8f839b188ff037ef53c-1
new file mode 100644
index 0000000..244b17c
--- /dev/null
+++ b/testdata/fuzz/corpus/4d26846d4153063a9af7a8f839b188ff037ef53c-1
@@ -0,0 +1 @@
+v=spf1 mx:d6660/1 a:d1111
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/4ff3cabbe468bac11f8bb34a4bb9e2e98c8efefa-3 b/testdata/fuzz/corpus/4ff3cabbe468bac11f8bb34a4bb9e2e98c8efefa-3
new file mode 100644
index 0000000..749e54a
--- /dev/null
+++ b/testdata/fuzz/corpus/4ff3cabbe468bac11f8bb34a4bb9e2e98c8efefa-3
@@ -0,0 +1 @@
+v=spf1 include:domain  
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/50ae7645c456657f3cc80cb4583543de6cad4771-2 b/testdata/fuzz/corpus/50ae7645c456657f3cc80cb4583543de6cad4771-2
new file mode 100644
index 0000000..9d6a47f
--- /dev/null
+++ b/testdata/fuzz/corpus/50ae7645c456657f3cc80cb4583543de6cad4771-2
@@ -0,0 +1 @@
+v=spf1 \
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/527ba1667ccfa821072b2398d968f48e514a129c-3 b/testdata/fuzz/corpus/527ba1667ccfa821072b2398d968f48e514a129c-3
new file mode 100644
index 0000000..2a12b36
--- /dev/null
+++ b/testdata/fuzz/corpus/527ba1667ccfa821072b2398d968f48e514a129c-3
@@ -0,0 +1 @@
+v=spf1 \x81\xf3\x81h\xbf\xbd\xef\xbf/\xbd\xef\xbd\xef\xbf)\xbd\xbd\xbd\xb6\x80\xff
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/52c9f09174d10e2046bd2bc56d08a7cfa1b94c88-2 b/testdata/fuzz/corpus/52c9f09174d10e2046bd2bc56d08a7cfa1b94c88-2
new file mode 100644
index 0000000..c5d6adb
--- /dev/null
+++ b/testdata/fuzz/corpus/52c9f09174d10e2046bd2bc56d08a7cfa1b94c88-2
@@ -0,0 +1 @@
+v=spf1 ￿
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/5637f99d2a8d09e94609bf972de37a1f74b31b9b-5 b/testdata/fuzz/corpus/5637f99d2a8d09e94609bf972de37a1f74b31b9b-5
new file mode 100644
index 0000000..5623527
--- /dev/null
+++ b/testdata/fuzz/corpus/5637f99d2a8d09e94609bf972de37a1f74b31b9b-5
@@ -0,0 +1 @@
+v=spf1 \xd5\xf3\xd5\xf8\x8d
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/5710e8c342174148ee462f030f4cac29e664c767-2 b/testdata/fuzz/corpus/5710e8c342174148ee462f030f4cac29e664c767-2
new file mode 100644
index 0000000..930c72d
--- /dev/null
+++ b/testdata/fuzz/corpus/5710e8c342174148ee462f030f4cac29e664c767-2
@@ -0,0 +1 @@
+v=spf1 \x81\xf3\x82
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/59093d3787922a8015fb0e8d81df61675c82278e-2 b/testdata/fuzz/corpus/59093d3787922a8015fb0e8d81df61675c82278e-2
new file mode 100644
index 0000000..f69922d
--- /dev/null
+++ b/testdata/fuzz/corpus/59093d3787922a8015fb0e8d81df61675c82278e-2
@@ -0,0 +1 @@
+v=spf1 mx/+
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/595d366d1274aefa2271820ff4ef2da05cddc6bc-10 b/testdata/fuzz/corpus/595d366d1274aefa2271820ff4ef2da05cddc6bc-10
new file mode 100644
index 0000000..40ccc7a
--- /dev/null
+++ b/testdata/fuzz/corpus/595d366d1274aefa2271820ff4ef2da05cddc6bc-10
@@ -0,0 +1 @@
+v=spf1 ½½½½½½½½½½½½½½½½½½½
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/5ceab670fb0fb39a5c23d2f611f7d217e756f423-9 b/testdata/fuzz/corpus/5ceab670fb0fb39a5c23d2f611f7d217e756f423-9
new file mode 100644
index 0000000..a8bff3c
--- /dev/null
+++ b/testdata/fuzz/corpus/5ceab670fb0fb39a5c23d2f611f7d217e756f423-9
@@ -0,0 +1 @@
+v=spf1 𫞵𫶵𫞵𫞵𫞵𫶵𫞵𫞵𫎵𫞵𫞵\xf0\xab\x9e𫎵𫞵𫞵𫞵𫞵
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/5d1cfec0c5dadf382dc141d47562d2ffe79615b8-2 b/testdata/fuzz/corpus/5d1cfec0c5dadf382dc141d47562d2ffe79615b8-2
new file mode 100644
index 0000000..c4bdcf4
--- /dev/null
+++ b/testdata/fuzz/corpus/5d1cfec0c5dadf382dc141d47562d2ffe79615b8-2
@@ -0,0 +1 @@
+v=spf1 ������
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/5d7e1ee1c59f39bc3e122815c4944b0e39914898-6 b/testdata/fuzz/corpus/5d7e1ee1c59f39bc3e122815c4944b0e39914898-6
new file mode 100644
index 0000000..6d42262
--- /dev/null
+++ b/testdata/fuzz/corpus/5d7e1ee1c59f39bc3e122815c4944b0e39914898-6
@@ -0,0 +1 @@
+v=spf1 ￯﻽￯﻽﻽￯﻽﻽￯
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/5ec5c2a5a29cbff4a99457cdc0e178c81b284f73-12 b/testdata/fuzz/corpus/5ec5c2a5a29cbff4a99457cdc0e178c81b284f73-12
new file mode 100644
index 0000000..076664f
--- /dev/null
+++ b/testdata/fuzz/corpus/5ec5c2a5a29cbff4a99457cdc0e178c81b284f73-12
@@ -0,0 +1 @@
+v=spf1 mx:󂂂 include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/5ed2b1d1a581990d92eb9175ff45e1ffb6f2a2cd-6 b/testdata/fuzz/corpus/5ed2b1d1a581990d92eb9175ff45e1ffb6f2a2cd-6
new file mode 100644
index 0000000..52db3d9
--- /dev/null
+++ b/testdata/fuzz/corpus/5ed2b1d1a581990d92eb9175ff45e1ffb6f2a2cd-6
@@ -0,0 +1 @@
+v=spf1 include:domain 7 
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/5f5bf6d1cdcce6a626a65df489dfcc07f788bd85-2 b/testdata/fuzz/corpus/5f5bf6d1cdcce6a626a65df489dfcc07f788bd85-2
new file mode 100644
index 0000000..ca2c0c6
--- /dev/null
+++ b/testdata/fuzz/corpus/5f5bf6d1cdcce6a626a65df489dfcc07f788bd85-2
@@ -0,0 +1 @@
+v=spf1 𫞵
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/620a8868eec3a22ace93f372a6337d579f55d866-6 b/testdata/fuzz/corpus/620a8868eec3a22ace93f372a6337d579f55d866-6
new file mode 100644
index 0000000..ec04868
--- /dev/null
+++ b/testdata/fuzz/corpus/620a8868eec3a22ace93f372a6337d579f55d866-6
@@ -0,0 +1 @@
+v=spf1 a/1107J8656421492cont
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/62246f1db31d1d885c74e8060e344ca1759a1545-1 b/testdata/fuzz/corpus/62246f1db31d1d885c74e8060e344ca1759a1545-1
new file mode 100644
index 0000000..8b5a2d6
--- /dev/null
+++ b/testdata/fuzz/corpus/62246f1db31d1d885c74e8060e344ca1759a1545-1
@@ -0,0 +1 @@
+v=spf1 a/-1
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/62645dad2ddf207c474064e153fd468adf0d7403-7 b/testdata/fuzz/corpus/62645dad2ddf207c474064e153fd468adf0d7403-7
new file mode 100644
index 0000000..7387ce3
--- /dev/null
+++ b/testdata/fuzz/corpus/62645dad2ddf207c474064e153fd468adf0d7403-7
@@ -0,0 +1 @@
+v=spf1 𗞵𗞵𗞵𗞵𗞵𗞵𗞵𗞵𗞵𗞵𗞵𗞵𗞵𗞵𗞵𗞵𗞵
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/627d548125420021aa6578008ecf12cbfb4115c8-7 b/testdata/fuzz/corpus/627d548125420021aa6578008ecf12cbfb4115c8-7
new file mode 100644
index 0000000..d2c2cfb
--- /dev/null
+++ b/testdata/fuzz/corpus/627d548125420021aa6578008ecf12cbfb4115c8-7
@@ -0,0 +1 @@
+v=spf1 include:domain \xe7 \xb2
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/63c66382abda05c270d4103e259d7efaf9e77bbb-5 b/testdata/fuzz/corpus/63c66382abda05c270d4103e259d7efaf9e77bbb-5
new file mode 100644
index 0000000..8d64e4a
--- /dev/null
+++ b/testdata/fuzz/corpus/63c66382abda05c270d4103e259d7efaf9e77bbb-5
@@ -0,0 +1 @@
+v=spf1 \xd5\xf3\xd5\xef\xef\xef\xef\xef\xef\xef\xef\xef\xd5\xf3\xd5\xef\xef\xd5\xd5\xef\xef\xef\xef\xef\xef\xef\xef\xef\xd5\xf3\xd5\xef\xef\xd5\xf3\xd5\xef\xf3\xd5\xef\xef
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/6432d829ef0ce88b09ab309f0784f4bf23730f9f-4 b/testdata/fuzz/corpus/6432d829ef0ce88b09ab309f0784f4bf23730f9f-4
new file mode 100644
index 0000000..67e787b
--- /dev/null
+++ b/testdata/fuzz/corpus/6432d829ef0ce88b09ab309f0784f4bf23730f9f-4
@@ -0,0 +1 @@
+v=spf1 Ձ\xf3Ձ\xf3\x82�
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/67950ee5ca4bd409b333f587498af2bc6cf6f0a8-5 b/testdata/fuzz/corpus/67950ee5ca4bd409b333f587498af2bc6cf6f0a8-5
new file mode 100644
index 0000000..cbc6191
--- /dev/null
+++ b/testdata/fuzz/corpus/67950ee5ca4bd409b333f587498af2bc6cf6f0a8-5
@@ -0,0 +1 @@
+v=spf1 mx:d1110/218626451492305703
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/67e9e013657986390e1fe563584321c7e062a435-1 b/testdata/fuzz/corpus/67e9e013657986390e1fe563584321c7e062a435-1
new file mode 100644
index 0000000..08494ff
--- /dev/null
+++ b/testdata/fuzz/corpus/67e9e013657986390e1fe563584321c7e062a435-1
@@ -0,0 +1 @@
+v=spf1 a/moC\x94ntoto
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/6977a2fdabe378064fef5e1fd941faf4d8d4c4b5 b/testdata/fuzz/corpus/6977a2fdabe378064fef5e1fd941faf4d8d4c4b5
new file mode 100644
index 0000000..2c53b6f
--- /dev/null
+++ b/testdata/fuzz/corpus/6977a2fdabe378064fef5e1fd941faf4d8d4c4b5
@@ -0,0 +1 @@
+v=spf1 ip6:2001:db8::68 l
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/6980033ab26f3cc54dbfe98d88535bcc707142fd-3 b/testdata/fuzz/corpus/6980033ab26f3cc54dbfe98d88535bcc707142fd-3
new file mode 100644
index 0000000..1a733e7
--- /dev/null
+++ b/testdata/fuzz/corpus/6980033ab26f3cc54dbfe98d88535bcc707142fd-3
@@ -0,0 +1 @@
+v=spf1 mx1 mx/C
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/6a2815028adf404edc3f4b1cc38c1b4de687b80e-7 b/testdata/fuzz/corpus/6a2815028adf404edc3f4b1cc38c1b4de687b80e-7
new file mode 100644
index 0000000..84e9fb6
--- /dev/null
+++ b/testdata/fuzz/corpus/6a2815028adf404edc3f4b1cc38c1b4de687b80e-7
@@ -0,0 +1 @@
+v=spf1 𫞵𫞵𫞵𫞵𫞵𫞵𫞵𫞵
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/6a956db6d33cbf2fcf72a99e692b4c198281aa13-3 b/testdata/fuzz/corpus/6a956db6d33cbf2fcf72a99e692b4c198281aa13-3
new file mode 100644
index 0000000..20a7063
--- /dev/null
+++ b/testdata/fuzz/corpus/6a956db6d33cbf2fcf72a99e692b4c198281aa13-3
@@ -0,0 +1 @@
+v=spf1 include:domain ՁՁՁՁ
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/6bb4c18efdc2f761e270d1fb94c68de69d3db79b-1 b/testdata/fuzz/corpus/6bb4c18efdc2f761e270d1fb94c68de69d3db79b-1
new file mode 100644
index 0000000..1f3083f
--- /dev/null
+++ b/testdata/fuzz/corpus/6bb4c18efdc2f761e270d1fb94c68de69d3db79b-1
@@ -0,0 +1 @@
+v=spf1 pt\x8f\x95uai\xdfr:d6666l-all
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/6cb70020584efe94d39ec4c86c331b987bced76d-5 b/testdata/fuzz/corpus/6cb70020584efe94d39ec4c86c331b987bced76d-5
new file mode 100644
index 0000000..299167c
--- /dev/null
+++ b/testdata/fuzz/corpus/6cb70020584efe94d39ec4c86c331b987bced76d-5
@@ -0,0 +1 @@
+v=spf1 \xf3\x82\x82\xf3\x82\x82\xf3\x82\x82\xf3\x82\x82\xef
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/6fce1d04d6f69c32320685a4a9c0349fc05c8ebb-2 b/testdata/fuzz/corpus/6fce1d04d6f69c32320685a4a9c0349fc05c8ebb-2
new file mode 100644
index 0000000..cf5ac4e
--- /dev/null
+++ b/testdata/fuzz/corpus/6fce1d04d6f69c32320685a4a9c0349fc05c8ebb-2
@@ -0,0 +1 @@
+v=spf1 \xff\xff\x80\x8d\xab\xb6
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/7161abeb77fc6476927a2472ef098aa104c045de-5 b/testdata/fuzz/corpus/7161abeb77fc6476927a2472ef098aa104c045de-5
new file mode 100644
index 0000000..5f127f0
--- /dev/null
+++ b/testdata/fuzz/corpus/7161abeb77fc6476927a2472ef098aa104c045de-5
@@ -0,0 +1 @@
+v=spf1 \\\\\\\\\
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/77bb421687cc142f2f7a00ff7000f32ac2eeeef9-3 b/testdata/fuzz/corpus/77bb421687cc142f2f7a00ff7000f32ac2eeeef9-3
new file mode 100644
index 0000000..fed59a9
--- /dev/null
+++ b/testdata/fuzz/corpus/77bb421687cc142f2f7a00ff7000f32ac2eeeef9-3
@@ -0,0 +1 @@
+v=spf1 ���������
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/77cc93fcf61cd9d6662ef18d4ebf9e5b9751781e-2 b/testdata/fuzz/corpus/77cc93fcf61cd9d6662ef18d4ebf9e5b9751781e-2
new file mode 100644
index 0000000..aa9eee2
--- /dev/null
+++ b/testdata/fuzz/corpus/77cc93fcf61cd9d6662ef18d4ebf9e5b9751781e-2
@@ -0,0 +1 @@
+v=spf1 \xf3
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/794406f33696ace311f39f658bf82d68621203de-5 b/testdata/fuzz/corpus/794406f33696ace311f39f658bf82d68621203de-5
new file mode 100644
index 0000000..6c80bd8
--- /dev/null
+++ b/testdata/fuzz/corpus/794406f33696ace311f39f658bf82d68621203de-5
@@ -0,0 +1 @@
+v=spf1 ptr:\xbd ptr:\xbd ptra: include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/79550c23af893e793e1d2781a8fc252f601a5b8e-7 b/testdata/fuzz/corpus/79550c23af893e793e1d2781a8fc252f601a5b8e-7
new file mode 100644
index 0000000..0d304d7
--- /dev/null
+++ b/testdata/fuzz/corpus/79550c23af893e793e1d2781a8fc252f601a5b8e-7
@@ -0,0 +1 @@
+v=spf1 include:domain 7 7  
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/7a02070902448225aff2b49eadd31e52be253870-4 b/testdata/fuzz/corpus/7a02070902448225aff2b49eadd31e52be253870-4
new file mode 100644
index 0000000..0e0ac88
--- /dev/null
+++ b/testdata/fuzz/corpus/7a02070902448225aff2b49eadd31e52be253870-4
@@ -0,0 +1 @@
+v=spf1 \\\\
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/7aa0a78cf5866b022ec350c48ee9ff1f3f2cffb8-6 b/testdata/fuzz/corpus/7aa0a78cf5866b022ec350c48ee9ff1f3f2cffb8-6
new file mode 100644
index 0000000..51747c4
--- /dev/null
+++ b/testdata/fuzz/corpus/7aa0a78cf5866b022ec350c48ee9ff1f3f2cffb8-6
@@ -0,0 +1 @@
+v=spf1 \\\\\\\\\\\\\\\\\
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/7be59d49de0d3d7a60ecd3b1ff47053082cd9dbf-4 b/testdata/fuzz/corpus/7be59d49de0d3d7a60ecd3b1ff47053082cd9dbf-4
new file mode 100644
index 0000000..8e86d36
--- /dev/null
+++ b/testdata/fuzz/corpus/7be59d49de0d3d7a60ecd3b1ff47053082cd9dbf-4
@@ -0,0 +1 @@
+v=spf1 include:domain ₁
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/7cb312d9ce11e08ae0a60571635410ae5469dd4e b/testdata/fuzz/corpus/7cb312d9ce11e08ae0a60571635410ae5469dd4e
new file mode 100644
index 0000000..0524b07
--- /dev/null
+++ b/testdata/fuzz/corpus/7cb312d9ce11e08ae0a60571635410ae5469dd4e
@@ -0,0 +1 @@
+v=spf1 l
diff --git a/testdata/fuzz/corpus/7d884e5b6f9dc98e899115e691cd826b3cc3a232-4 b/testdata/fuzz/corpus/7d884e5b6f9dc98e899115e691cd826b3cc3a232-4
new file mode 100644
index 0000000..1cbd4a9
--- /dev/null
+++ b/testdata/fuzz/corpus/7d884e5b6f9dc98e899115e691cd826b3cc3a232-4
@@ -0,0 +1 @@
+v=spf1 𗞵𗞵𗞵
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/7e265eeca3402d2943bd206b4c6226c1d1ff8c32-3 b/testdata/fuzz/corpus/7e265eeca3402d2943bd206b4c6226c1d1ff8c32-3
new file mode 100644
index 0000000..d495da5
--- /dev/null
+++ b/testdata/fuzz/corpus/7e265eeca3402d2943bd206b4c6226c1d1ff8c32-3
@@ -0,0 +1 @@
+v=spf1 𗞵𗞵
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/7e754abadb7626d1b3776736f275db37751a8229-5 b/testdata/fuzz/corpus/7e754abadb7626d1b3776736f275db37751a8229-5
new file mode 100644
index 0000000..9b10432
--- /dev/null
+++ b/testdata/fuzz/corpus/7e754abadb7626d1b3776736f275db37751a8229-5
@@ -0,0 +1 @@
+v=spf1 �����������������������������������
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/7f3742ba9ae6dba0322c0d7a442610680e5ced0f-10 b/testdata/fuzz/corpus/7f3742ba9ae6dba0322c0d7a442610680e5ced0f-10
new file mode 100644
index 0000000..4bc60e8
--- /dev/null
+++ b/testdata/fuzz/corpus/7f3742ba9ae6dba0322c0d7a442610680e5ced0f-10
@@ -0,0 +1 @@
+v=spf1 mx:ՁՁՁՁ include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/7f532ba7aff56bd68a6dae1c144764732fda8873-5 b/testdata/fuzz/corpus/7f532ba7aff56bd68a6dae1c144764732fda8873-5
new file mode 100644
index 0000000..3f1a0a2
--- /dev/null
+++ b/testdata/fuzz/corpus/7f532ba7aff56bd68a6dae1c144764732fda8873-5
@@ -0,0 +1 @@
+v=spf1 mx1 mx/ mx/
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/7faf5ae33da6badb519834e598cdbc10c35f0835-7 b/testdata/fuzz/corpus/7faf5ae33da6badb519834e598cdbc10c35f0835-7
new file mode 100644
index 0000000..a9fde9f
--- /dev/null
+++ b/testdata/fuzz/corpus/7faf5ae33da6badb519834e598cdbc10c35f0835-7
@@ -0,0 +1 @@
+v=spf1 ՁՁՁՁՁՁՁՁՁՁՁՁՁՁՁՁՁ
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/803ef28eca844e4f18371148de536af8d94e182f-2 b/testdata/fuzz/corpus/803ef28eca844e4f18371148de536af8d94e182f-2
new file mode 100644
index 0000000..2005f38
--- /dev/null
+++ b/testdata/fuzz/corpus/803ef28eca844e4f18371148de536af8d94e182f-2
@@ -0,0 +1 @@
+v=spf1 mx:4 a
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/808d8bc898a22d6dc2724c9523b59034256fe597-3 b/testdata/fuzz/corpus/808d8bc898a22d6dc2724c9523b59034256fe597-3
new file mode 100644
index 0000000..2d5f185
--- /dev/null
+++ b/testdata/fuzz/corpus/808d8bc898a22d6dc2724c9523b59034256fe597-3
@@ -0,0 +1 @@
+v=spf1 
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/80d071bba183948fd3cb643b9ac6356a4f78ded1-6 b/testdata/fuzz/corpus/80d071bba183948fd3cb643b9ac6356a4f78ded1-6
new file mode 100644
index 0000000..a32ac5f
--- /dev/null
+++ b/testdata/fuzz/corpus/80d071bba183948fd3cb643b9ac6356a4f78ded1-6
@@ -0,0 +1 @@
+v=spf1 mx1 mx1 mx/ mx/ mx/
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/81b936e916edaf4f077c21175dedf1c67a281c4d-11 b/testdata/fuzz/corpus/81b936e916edaf4f077c21175dedf1c67a281c4d-11
new file mode 100644
index 0000000..ceba35f
--- /dev/null
+++ b/testdata/fuzz/corpus/81b936e916edaf4f077c21175dedf1c67a281c4d-11
@@ -0,0 +1 @@
+v=spf1 mx:ՁՁՁՁՁՁՁ include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/85d61d763d07622fbecaea3c97ed3fcb5be2d69f-11 b/testdata/fuzz/corpus/85d61d763d07622fbecaea3c97ed3fcb5be2d69f-11
new file mode 100644
index 0000000..cda273b
--- /dev/null
+++ b/testdata/fuzz/corpus/85d61d763d07622fbecaea3c97ed3fcb5be2d69f-11
@@ -0,0 +1 @@
+v=spf1 a:d1110/1 a:d1110/1 a:d1110/1 a:d1110/1 a:d1110/1 include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/869b75c33d0c2cda002c62bfae7f15ff0e79a88c-2 b/testdata/fuzz/corpus/869b75c33d0c2cda002c62bfae7f15ff0e79a88c-2
new file mode 100644
index 0000000..4f4853a
--- /dev/null
+++ b/testdata/fuzz/corpus/869b75c33d0c2cda002c62bfae7f15ff0e79a88c-2
@@ -0,0 +1 @@
+v=spf1 a:noth\xbf\xbdpf1I\xefi\xbfg/\xbd\xefn\xbd\xef\xbf(BADINDEX)\xbd\xbdpf1I\xbd\xbd24
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/8709b73da7598cd719e92c2ac3033f417b607a56 b/testdata/fuzz/corpus/8709b73da7598cd719e92c2ac3033f417b607a56
new file mode 100644
index 0000000..a2755be
--- /dev/null
+++ b/testdata/fuzz/corpus/8709b73da7598cd719e92c2ac3033f417b607a56
@@ -0,0 +1 @@
+v=spf1 ptr:d
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/8720a8ba3df38ed0888e218c974e0e034f762e71-11 b/testdata/fuzz/corpus/8720a8ba3df38ed0888e218c974e0e034f762e71-11
new file mode 100644
index 0000000..e2a93aa
--- /dev/null
+++ b/testdata/fuzz/corpus/8720a8ba3df38ed0888e218c974e0e034f762e71-11
@@ -0,0 +1 @@
+v=spf1 ½½½½½½½½½½½½½½½½½½½½½½½½½½½½½½½½½
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/89797fe777479f9c9d65954ac2fd590731fc804c-2 b/testdata/fuzz/corpus/89797fe777479f9c9d65954ac2fd590731fc804c-2
new file mode 100644
index 0000000..7da3f26
--- /dev/null
+++ b/testdata/fuzz/corpus/89797fe777479f9c9d65954ac2fd590731fc804c-2
@@ -0,0 +1 @@
+v=spf1 m11102230246251565404236316680908203125x/24l
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/8a2bcea52de4fad8ffd0827e4a2dc12a44de4926-1 b/testdata/fuzz/corpus/8a2bcea52de4fad8ffd0827e4a2dc12a44de4926-1
new file mode 100644
index 0000000..9f5aceb
--- /dev/null
+++ b/testdata/fuzz/corpus/8a2bcea52de4fad8ffd0827e4a2dc12a44de4926-1
@@ -0,0 +1 @@
+v=spf1 a/-110723edb1862645149230\xff57031258::6
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/8a2ed564fcca3c565439075767ff8684ac49ac8a-4 b/testdata/fuzz/corpus/8a2ed564fcca3c565439075767ff8684ac49ac8a-4
new file mode 100644
index 0000000..bd4001c
--- /dev/null
+++ b/testdata/fuzz/corpus/8a2ed564fcca3c565439075767ff8684ac49ac8a-4
@@ -0,0 +1 @@
+v=spf1 𫞵𫞵𫞵
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/8aa2ae9ccfc3c3920a4333084aa3c3b92e80b087-3 b/testdata/fuzz/corpus/8aa2ae9ccfc3c3920a4333084aa3c3b92e80b087-3
new file mode 100644
index 0000000..a8fee5c
--- /dev/null
+++ b/testdata/fuzz/corpus/8aa2ae9ccfc3c3920a4333084aa3c3b92e80b087-3
@@ -0,0 +1 @@
+v=spf1 Ձ\xf3Ձ\xf3\x82\x82�
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/8bde59e5dcbea61da549b56ab78536f314eaf270-4 b/testdata/fuzz/corpus/8bde59e5dcbea61da549b56ab78536f314eaf270-4
new file mode 100644
index 0000000..56b952a
--- /dev/null
+++ b/testdata/fuzz/corpus/8bde59e5dcbea61da549b56ab78536f314eaf270-4
@@ -0,0 +1 @@
+v=spf1 a/110718626451492305703
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/8c190342c9ce178aa2030cfe9000a63e58005f3a-7 b/testdata/fuzz/corpus/8c190342c9ce178aa2030cfe9000a63e58005f3a-7
new file mode 100644
index 0000000..822a786
--- /dev/null
+++ b/testdata/fuzz/corpus/8c190342c9ce178aa2030cfe9000a63e58005f3a-7
@@ -0,0 +1 @@
+v=spf1 
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/8c40888b73dd06e8f4d972b5e3542226b966e6fe-1 b/testdata/fuzz/corpus/8c40888b73dd06e8f4d972b5e3542226b966e6fe-1
new file mode 100644
index 0000000..21d360a
--- /dev/null
+++ b/testdata/fuzz/corpus/8c40888b73dd06e8f4d972b5e3542226b966e6fe-1
@@ -0,0 +1 @@
+v=spf1 /ՁB\xf3\x82`!44
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/8ca3a2b7da51ce13aca07b6bc6a587c4efed0d53-15 b/testdata/fuzz/corpus/8ca3a2b7da51ce13aca07b6bc6a587c4efed0d53-15
new file mode 100644
index 0000000..99563ea
--- /dev/null
+++ b/testdata/fuzz/corpus/8ca3a2b7da51ce13aca07b6bc6a587c4efed0d53-15
@@ -0,0 +1 @@
+v=spf1 mx:\xf3\x82\xf3\x82\xf3\x82\xf3\x82z\xbd include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/8cd0357fbfa90ec0e69c17b10c374a1223924d17-12 b/testdata/fuzz/corpus/8cd0357fbfa90ec0e69c17b10c374a1223924d17-12
new file mode 100644
index 0000000..fdcd210
--- /dev/null
+++ b/testdata/fuzz/corpus/8cd0357fbfa90ec0e69c17b10c374a1223924d17-12
@@ -0,0 +1 @@
+v=spf1  
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/8cd9b00e5b14dcc74e3e389691552b26b35e590c-5 b/testdata/fuzz/corpus/8cd9b00e5b14dcc74e3e389691552b26b35e590c-5
new file mode 100644
index 0000000..541b26f
--- /dev/null
+++ b/testdata/fuzz/corpus/8cd9b00e5b14dcc74e3e389691552b26b35e590c-5
@@ -0,0 +1 @@
+v=spf1 ՁՁՁՁՁ
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/8cff895127532675e2b4105f5c65be8de5be6306-4 b/testdata/fuzz/corpus/8cff895127532675e2b4105f5c65be8de5be6306-4
new file mode 100644
index 0000000..a99abb5
--- /dev/null
+++ b/testdata/fuzz/corpus/8cff895127532675e2b4105f5c65be8de5be6306-4
@@ -0,0 +1 @@
+v=spf1 \x81\xf3\x81h\xbf\xbd\xf1\xbf/\xbd\xef\xbd\xef\xbf)\xbd\xbd\xbd\xb6\x80\xbf\xbd\xf1\xbf/\xbd\xff
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/8d6aece1b5f58b476ce948504782e0b1d4a90149-6 b/testdata/fuzz/corpus/8d6aece1b5f58b476ce948504782e0b1d4a90149-6
new file mode 100644
index 0000000..a7d3d94
--- /dev/null
+++ b/testdata/fuzz/corpus/8d6aece1b5f58b476ce948504782e0b1d4a90149-6
@@ -0,0 +1 @@
+v=spf1 
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/8e6cb36297f26f8fa23daa259eb12b61ab100fec-1 b/testdata/fuzz/corpus/8e6cb36297f26f8fa23daa259eb12b61ab100fec-1
new file mode 100644
index 0000000..4101659
--- /dev/null
+++ b/testdata/fuzz/corpus/8e6cb36297f26f8fa23daa259eb12b61ab100fec-1
@@ -0,0 +1 @@
+v=spf1  
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/8ea434243522f18f9835c93d8593cf5a8be51521-4 b/testdata/fuzz/corpus/8ea434243522f18f9835c93d8593cf5a8be51521-4
new file mode 100644
index 0000000..e2ab698
--- /dev/null
+++ b/testdata/fuzz/corpus/8ea434243522f18f9835c93d8593cf5a8be51521-4
@@ -0,0 +1 @@
+v=spf1  \xe2
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/8ef23048dcf25f403e61a34d72a6c327d2927fe4-3 b/testdata/fuzz/corpus/8ef23048dcf25f403e61a34d72a6c327d2927fe4-3
new file mode 100644
index 0000000..6213955
--- /dev/null
+++ b/testdata/fuzz/corpus/8ef23048dcf25f403e61a34d72a6c327d2927fe4-3
@@ -0,0 +1 @@
+v=spf1 ₂₂
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/906833637b8b72be70013f4922eff2836bbece00-9 b/testdata/fuzz/corpus/906833637b8b72be70013f4922eff2836bbece00-9
new file mode 100644
index 0000000..664a93a
--- /dev/null
+++ b/testdata/fuzz/corpus/906833637b8b72be70013f4922eff2836bbece00-9
@@ -0,0 +1 @@
+v=spf1 ½½½½½½½½½
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/93830b163ebb827cf93a17d1ef59613eb8f240b1-6 b/testdata/fuzz/corpus/93830b163ebb827cf93a17d1ef59613eb8f240b1-6
new file mode 100644
index 0000000..c674302
--- /dev/null
+++ b/testdata/fuzz/corpus/93830b163ebb827cf93a17d1ef59613eb8f240b1-6
@@ -0,0 +1 @@
+v=spf1 
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/94820540f7b8dd7d056c7872b24464bc28e22f90-6 b/testdata/fuzz/corpus/94820540f7b8dd7d056c7872b24464bc28e22f90-6
new file mode 100644
index 0000000..3752531
--- /dev/null
+++ b/testdata/fuzz/corpus/94820540f7b8dd7d056c7872b24464bc28e22f90-6
@@ -0,0 +1 @@
+v=spf1 ՁՁՁՁՁՁՁՁՁ
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/9651d650fafafaef76745a776a998bb96241b8fa-1 b/testdata/fuzz/corpus/9651d650fafafaef76745a776a998bb96241b8fa-1
new file mode 100644
index 0000000..94a0b8f
--- /dev/null
+++ b/testdata/fuzz/corpus/9651d650fafafaef76745a776a998bb96241b8fa-1
@@ -0,0 +1 @@
+v=spf1 a: mx:
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/98cd39213ce1336e8bcba3b49ecd1cfc7e4a1d16-5 b/testdata/fuzz/corpus/98cd39213ce1336e8bcba3b49ecd1cfc7e4a1d16-5
new file mode 100644
index 0000000..e4a749f
--- /dev/null
+++ b/testdata/fuzz/corpus/98cd39213ce1336e8bcba3b49ecd1cfc7e4a1d16-5
@@ -0,0 +1 @@
+v=spf1 a/-1 a/-4 a a/-1
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/9a34fb50762330df190864d0ddb25e15e042e662-4 b/testdata/fuzz/corpus/9a34fb50762330df190864d0ddb25e15e042e662-4
new file mode 100644
index 0000000..c074332
--- /dev/null
+++ b/testdata/fuzz/corpus/9a34fb50762330df190864d0ddb25e15e042e662-4
@@ -0,0 +1 @@
+v=spf1 ￯﻽￯
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/9a9d5cb818c6f69cf9df6da156aa00e3eac1da59-6 b/testdata/fuzz/corpus/9a9d5cb818c6f69cf9df6da156aa00e3eac1da59-6
new file mode 100644
index 0000000..e293bab
--- /dev/null
+++ b/testdata/fuzz/corpus/9a9d5cb818c6f69cf9df6da156aa00e3eac1da59-6
@@ -0,0 +1 @@
+v=spf1 \xf3\x82\x82\xf3\x82\x82\xf3\x82\x82\xf3\x82\x82\xf3\x82\x82\xf3
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/9b858a7cba052affb1e7682e9f3b49292abe736b-10 b/testdata/fuzz/corpus/9b858a7cba052affb1e7682e9f3b49292abe736b-10
new file mode 100644
index 0000000..0f4e18c
--- /dev/null
+++ b/testdata/fuzz/corpus/9b858a7cba052affb1e7682e9f3b49292abe736b-10
@@ -0,0 +1 @@
+v=spf1 󂂂󂂂󫞵󂂂󫞵󂂂󂂂󫞵󂂂󫿽󂂂󫞵󂂂󂂂󫞵󂂂󫿽󫿽
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/9c8c99cb61c1c4d741328197f647ed8aab6a4c1c-1 b/testdata/fuzz/corpus/9c8c99cb61c1c4d741328197f647ed8aab6a4c1c-1
new file mode 100644
index 0000000..24bc609
--- /dev/null
+++ b/testdata/fuzz/corpus/9c8c99cb61c1c4d741328197f647ed8aab6a4c1c-1
@@ -0,0 +1 @@
+v=spf1 a/-
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/9d12f3efb61be364e1606de5b629553a60985713-1 b/testdata/fuzz/corpus/9d12f3efb61be364e1606de5b629553a60985713-1
new file mode 100644
index 0000000..7ad7e9a
--- /dev/null
+++ b/testdata/fuzz/corpus/9d12f3efb61be364e1606de5b629553a60985713-1
@@ -0,0 +1 @@
+v=spf1 p6:2001:db8::68
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/a1c93210c3cd9aa445842cbb7c8b8db89700eb5c-8 b/testdata/fuzz/corpus/a1c93210c3cd9aa445842cbb7c8b8db89700eb5c-8
new file mode 100644
index 0000000..1a1d4b5
--- /dev/null
+++ b/testdata/fuzz/corpus/a1c93210c3cd9aa445842cbb7c8b8db89700eb5c-8
@@ -0,0 +1 @@
+v=spf1 ￯﻽￯﻽￯﻽￯﻽﻽﻽￯﻽﻽￯﻽﻽￯﻽﻽﻽￯﻽﻽￯﻽﻽￯﻽﻽￯
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/a3ca5b314a00a0468e38b3f02e5d5324f7b2df22-5 b/testdata/fuzz/corpus/a3ca5b314a00a0468e38b3f02e5d5324f7b2df22-5
new file mode 100644
index 0000000..e105d08
--- /dev/null
+++ b/testdata/fuzz/corpus/a3ca5b314a00a0468e38b3f02e5d5324f7b2df22-5
@@ -0,0 +1 @@
+v=spf1 ￯﻽￯﻽￯
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/a3dc3b202c007a96d2a9392d3088e35d3b6656ab-7 b/testdata/fuzz/corpus/a3dc3b202c007a96d2a9392d3088e35d3b6656ab-7
new file mode 100644
index 0000000..93f58cf
Binary files /dev/null and b/testdata/fuzz/corpus/a3dc3b202c007a96d2a9392d3088e35d3b6656ab-7 differ
diff --git a/testdata/fuzz/corpus/a3ed7c1bdbf2a23bca4ce8320d99d56c39d5ceb9 b/testdata/fuzz/corpus/a3ed7c1bdbf2a23bca4ce8320d99d56c39d5ceb9
new file mode 100644
index 0000000..d107189
--- /dev/null
+++ b/testdata/fuzz/corpus/a3ed7c1bdbf2a23bca4ce8320d99d56c39d5ceb9
@@ -0,0 +1 @@
+v=spf1 mx:d6660/24
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/a4f0f97a227003aa1442f010c1ab4b11b75eb8a2-4 b/testdata/fuzz/corpus/a4f0f97a227003aa1442f010c1ab4b11b75eb8a2-4
new file mode 100644
index 0000000..230ce76
--- /dev/null
+++ b/testdata/fuzz/corpus/a4f0f97a227003aa1442f010c1ab4b11b75eb8a2-4
@@ -0,0 +1 @@
+v=spf1 �����������������
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/a55848179e2ef78c5d48df2b55174fd2c94216f3-5 b/testdata/fuzz/corpus/a55848179e2ef78c5d48df2b55174fd2c94216f3-5
new file mode 100644
index 0000000..2ba0448
--- /dev/null
+++ b/testdata/fuzz/corpus/a55848179e2ef78c5d48df2b55174fd2c94216f3-5
@@ -0,0 +1 @@
+v=spf1 Ձ\xf3Ձ\xf3\xf8\x8d\x91\x82Ձ
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/a66793d056da563f93a724bffffb4046343be07a-14 b/testdata/fuzz/corpus/a66793d056da563f93a724bffffb4046343be07a-14
new file mode 100644
index 0000000..d65973f
--- /dev/null
+++ b/testdata/fuzz/corpus/a66793d056da563f93a724bffffb4046343be07a-14
@@ -0,0 +1 @@
+v=spf1 a/+107186261862645451 include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/a80eeb54e51f5a7ff6bbfa7ecaf41690555c8779-1 b/testdata/fuzz/corpus/a80eeb54e51f5a7ff6bbfa7ecaf41690555c8779-1
new file mode 100644
index 0000000..1cd1a3f
--- /dev/null
+++ b/testdata/fuzz/corpus/a80eeb54e51f5a7ff6bbfa7ecaf41690555c8779-1
@@ -0,0 +1 @@
+v=spf1 mx:d1110/4 ~
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/a9949b17b74723c2633356fd6ea8e58c0988cf39-16 b/testdata/fuzz/corpus/a9949b17b74723c2633356fd6ea8e58c0988cf39-16
new file mode 100644
index 0000000..9c51972
--- /dev/null
+++ b/testdata/fuzz/corpus/a9949b17b74723c2633356fd6ea8e58c0988cf39-16
@@ -0,0 +1 @@
+v=spf1 mx:\xf3\x82\xf3\x82\xf3\x82\xf3\x82\xf3\x82\xf3\x82\xf3\x82z\xbd include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/a9cc0118e3aaec859d8ebc0230521844f4a9e941 b/testdata/fuzz/corpus/a9cc0118e3aaec859d8ebc0230521844f4a9e941
new file mode 100644
index 0000000..eb132e8
--- /dev/null
+++ b/testdata/fuzz/corpus/a9cc0118e3aaec859d8ebc0230521844f4a9e941
@@ -0,0 +1 @@
+v=spf1 a/2
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/a9ec7cbe37eef444da71026fb51aed63343beae8-5 b/testdata/fuzz/corpus/a9ec7cbe37eef444da71026fb51aed63343beae8-5
new file mode 100644
index 0000000..fd87f9a
--- /dev/null
+++ b/testdata/fuzz/corpus/a9ec7cbe37eef444da71026fb51aed63343beae8-5
@@ -0,0 +1 @@
+v=spf1 a/1107186564214923 a/11071865642149205703
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/aa24926aa5504d84c2bc24ccbdce190657dc542d-6 b/testdata/fuzz/corpus/aa24926aa5504d84c2bc24ccbdce190657dc542d-6
new file mode 100644
index 0000000..12e1682
--- /dev/null
+++ b/testdata/fuzz/corpus/aa24926aa5504d84c2bc24ccbdce190657dc542d-6
@@ -0,0 +1 @@
+v=spf1 𫞵𫞵𫞵𫞵𫞵
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/aaed2222466dce9a6d3426ccd625cc9dec66b753-7 b/testdata/fuzz/corpus/aaed2222466dce9a6d3426ccd625cc9dec66b753-7
new file mode 100644
index 0000000..aa7f07f
--- /dev/null
+++ b/testdata/fuzz/corpus/aaed2222466dce9a6d3426ccd625cc9dec66b753-7
@@ -0,0 +1 @@
+v=spf1 mx:����� include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/ab4ae974caed9ac3dd1fdd26aeccd792b8a8eef3 b/testdata/fuzz/corpus/ab4ae974caed9ac3dd1fdd26aeccd792b8a8eef3
new file mode 100644
index 0000000..c0d5a69
--- /dev/null
+++ b/testdata/fuzz/corpus/ab4ae974caed9ac3dd1fdd26aeccd792b8a8eef3
@@ -0,0 +1 @@
+v=spf1 mx:d1110/24 ~
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/adee88e332493162e4c544440c41ab05fc55caba-8 b/testdata/fuzz/corpus/adee88e332493162e4c544440c41ab05fc55caba-8
new file mode 100644
index 0000000..f5e662a
--- /dev/null
+++ b/testdata/fuzz/corpus/adee88e332493162e4c544440c41ab05fc55caba-8
@@ -0,0 +1 @@
+v=spf1 include:domain    
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/af313e5429328f99a3e14fe6ed7d2d7171b4f8b0-1 b/testdata/fuzz/corpus/af313e5429328f99a3e14fe6ed7d2d7171b4f8b0-1
new file mode 100644
index 0000000..cfa4d76
--- /dev/null
+++ b/testdata/fuzz/corpus/af313e5429328f99a3e14fe6ed7d2d7171b4f8b0-1
@@ -0,0 +1 @@
+v=spf1 mx:0/4 a
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/af836fcd042d6927a687fc3d9a840d970d920696-8 b/testdata/fuzz/corpus/af836fcd042d6927a687fc3d9a840d970d920696-8
new file mode 100644
index 0000000..ac6dc07
--- /dev/null
+++ b/testdata/fuzz/corpus/af836fcd042d6927a687fc3d9a840d970d920696-8
@@ -0,0 +1 @@
+v=spf1 ՁՁՁՁՁՁՁՁՁՁՁՁՁՁՁՁՁՁՁՁՁՁՁՁՁՁՁՁՁՁՁՁՁ
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/b00876a702c3af1b72c5b0b4220f0aff86419453-7 b/testdata/fuzz/corpus/b00876a702c3af1b72c5b0b4220f0aff86419453-7
new file mode 100644
index 0000000..dcbabd7
--- /dev/null
+++ b/testdata/fuzz/corpus/b00876a702c3af1b72c5b0b4220f0aff86419453-7
@@ -0,0 +1 @@
+v=spf1 a/+1 include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/b01623ff6afbb38f9413d06ea47dfe8c11ee7829-6 b/testdata/fuzz/corpus/b01623ff6afbb38f9413d06ea47dfe8c11ee7829-6
new file mode 100644
index 0000000..124cc7a
--- /dev/null
+++ b/testdata/fuzz/corpus/b01623ff6afbb38f9413d06ea47dfe8c11ee7829-6
@@ -0,0 +1 @@
+v=spf1 \xf3\x81h\xf1\xbf/\xef\xbd\xef\xbf)\xf1\xbf/\xf1\xbf/\xef\xbd\xef\xbf)\xf3\x81h\xf1\xbf/\xef\xbd\xef\xbf)\xf1\xbf/\xf1\xbf/\xef\xbd\xef\xbf)\xf1\xbf/\xbd
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/b0fa0056db33c9338bd4dc90a73c48c4553d9894-5 b/testdata/fuzz/corpus/b0fa0056db33c9338bd4dc90a73c48c4553d9894-5
new file mode 100644
index 0000000..101f40f
--- /dev/null
+++ b/testdata/fuzz/corpus/b0fa0056db33c9338bd4dc90a73c48c4553d9894-5
@@ -0,0 +1 @@
+v=spf1 include:domain  
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/b1f947edcc1ef0f288fd926baf4a95e8b9d97775-5 b/testdata/fuzz/corpus/b1f947edcc1ef0f288fd926baf4a95e8b9d97775-5
new file mode 100644
index 0000000..8430f5b
--- /dev/null
+++ b/testdata/fuzz/corpus/b1f947edcc1ef0f288fd926baf4a95e8b9d97775-5
@@ -0,0 +1 @@
+v=spf1 ½
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/b2c7175d14c4ab51e25dae9ce2d45bbcfde9c0aa-9 b/testdata/fuzz/corpus/b2c7175d14c4ab51e25dae9ce2d45bbcfde9c0aa-9
new file mode 100644
index 0000000..a779907
--- /dev/null
+++ b/testdata/fuzz/corpus/b2c7175d14c4ab51e25dae9ce2d45bbcfde9c0aa-9
@@ -0,0 +1 @@
+v=spf1 
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/b6f608755614309cd073ff4b9ff12ffdddbc7aef-10 b/testdata/fuzz/corpus/b6f608755614309cd073ff4b9ff12ffdddbc7aef-10
new file mode 100644
index 0000000..bb8299f
--- /dev/null
+++ b/testdata/fuzz/corpus/b6f608755614309cd073ff4b9ff12ffdddbc7aef-10
@@ -0,0 +1 @@
+v=spf1 mx:\xf3\x82\x82\xf3\x82\x82\xf3\x82\x82\xf3\x82\x825 include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/b70ea87f1e3a7a71c74c0d1c9a82752b4046c658-8 b/testdata/fuzz/corpus/b70ea87f1e3a7a71c74c0d1c9a82752b4046c658-8
new file mode 100644
index 0000000..cad29e2
--- /dev/null
+++ b/testdata/fuzz/corpus/b70ea87f1e3a7a71c74c0d1c9a82752b4046c658-8
@@ -0,0 +1 @@
+v=spf1 a/4 a/4 a/4 a/4 a/4 a/ a/1
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/ba4579a4b3ecf61155909dd7f561849c58cdc1b8-1 b/testdata/fuzz/corpus/ba4579a4b3ecf61155909dd7f561849c58cdc1b8-1
new file mode 100644
index 0000000..fab653b
--- /dev/null
+++ b/testdata/fuzz/corpus/ba4579a4b3ecf61155909dd7f561849c58cdc1b8-1
@@ -0,0 +1 @@
+v=spf1 mx:d1110/24~all
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/bd34c53e2b4b044ca65993b5b21b5c1ab97e7a18-2 b/testdata/fuzz/corpus/bd34c53e2b4b044ca65993b5b21b5c1ab97e7a18-2
new file mode 100644
index 0000000..e87d502
--- /dev/null
+++ b/testdata/fuzz/corpus/bd34c53e2b4b044ca65993b5b21b5c1ab97e7a18-2
@@ -0,0 +1 @@
+v=spf1 𗞵
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/be6fc50d936510262252e2706edcacff891fe185-7 b/testdata/fuzz/corpus/be6fc50d936510262252e2706edcacff891fe185-7
new file mode 100644
index 0000000..9cdc35f
--- /dev/null
+++ b/testdata/fuzz/corpus/be6fc50d936510262252e2706edcacff891fe185-7
@@ -0,0 +1 @@
+v=spf1 include:domain   
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/c01b6f2672804a8b6abc85afa130f4db06ea1cb6-1 b/testdata/fuzz/corpus/c01b6f2672804a8b6abc85afa130f4db06ea1cb6-1
new file mode 100644
index 0000000..01b99aa
--- /dev/null
+++ b/testdata/fuzz/corpus/c01b6f2672804a8b6abc85afa130f4db06ea1cb6-1
@@ -0,0 +1 @@
+v=spf1 include:domain ~a
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/c0eb81476da375b12c3dc6199325f6728fca8c25-6 b/testdata/fuzz/corpus/c0eb81476da375b12c3dc6199325f6728fca8c25-6
new file mode 100644
index 0000000..63f56c6
--- /dev/null
+++ b/testdata/fuzz/corpus/c0eb81476da375b12c3dc6199325f6728fca8c25-6
@@ -0,0 +1 @@
+v=spf1 a/4 a/4 a/1
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/c1063b885395233902ccc891ececb6af2f1fb279-4 b/testdata/fuzz/corpus/c1063b885395233902ccc891ececb6af2f1fb279-4
new file mode 100644
index 0000000..ef5bb45
--- /dev/null
+++ b/testdata/fuzz/corpus/c1063b885395233902ccc891ececb6af2f1fb279-4
@@ -0,0 +1 @@
+v=spf1 Ձ\xf3Ձ\xf3\xf8\x8d\x91\x82Ձ\xf3
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/c226841652a967c26fa9f1ca08bf90ea9df9bc4b b/testdata/fuzz/corpus/c226841652a967c26fa9f1ca08bf90ea9df9bc4b
new file mode 100644
index 0000000..1e62098
--- /dev/null
+++ b/testdata/fuzz/corpus/c226841652a967c26fa9f1ca08bf90ea9df9bc4b
@@ -0,0 +1 @@
+v=spf1 a/-110723e
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/c34e8478439a802cd4aa682a54b865382a6e6b04-1 b/testdata/fuzz/corpus/c34e8478439a802cd4aa682a54b865382a6e6b04-1
new file mode 100644
index 0000000..f77011a
--- /dev/null
+++ b/testdata/fuzz/corpus/c34e8478439a802cd4aa682a54b865382a6e6b04-1
@@ -0,0 +1 @@
+v=spf1 m
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/c37b8935a53aa115c6ba7677fbf413b039c635c8-3 b/testdata/fuzz/corpus/c37b8935a53aa115c6ba7677fbf413b039c635c8-3
new file mode 100644
index 0000000..62011b3
--- /dev/null
+++ b/testdata/fuzz/corpus/c37b8935a53aa115c6ba7677fbf413b039c635c8-3
@@ -0,0 +1 @@
+v=spf1 \xd5\xf3\xd5\xef\xef\xef\xef\xef\xef\xd5\xf3\xd5\xef\xef
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/c4b1bacbc00d582954dc53e6f6284236bf9fc64e b/testdata/fuzz/corpus/c4b1bacbc00d582954dc53e6f6284236bf9fc64e
new file mode 100644
index 0000000..72c327d
--- /dev/null
+++ b/testdata/fuzz/corpus/c4b1bacbc00d582954dc53e6f6284236bf9fc64e
@@ -0,0 +1 @@
+v=spf1 include:domain ~
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/c4d74e144b5811566925a3b84809485f5e6b5571-2 b/testdata/fuzz/corpus/c4d74e144b5811566925a3b84809485f5e6b5571-2
new file mode 100644
index 0000000..2ef0ec4
--- /dev/null
+++ b/testdata/fuzz/corpus/c4d74e144b5811566925a3b84809485f5e6b5571-2
@@ -0,0 +1 @@
+v=spf1 a/-11071862645149230\xff57031258::6
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/c56287852954cfe96a89b3482b7afbb7a3a50f71-3 b/testdata/fuzz/corpus/c56287852954cfe96a89b3482b7afbb7a3a50f71-3
new file mode 100644
index 0000000..e89f9d3
--- /dev/null
+++ b/testdata/fuzz/corpus/c56287852954cfe96a89b3482b7afbb7a3a50f71-3
@@ -0,0 +1 @@
+v=spf1 \xd5\xf3\xea\xef\xef\xef\xef\xef\xef4
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/c566a989b153b7baf61decdf8580937596bef959-11 b/testdata/fuzz/corpus/c566a989b153b7baf61decdf8580937596bef959-11
new file mode 100644
index 0000000..cf7e312
--- /dev/null
+++ b/testdata/fuzz/corpus/c566a989b153b7baf61decdf8580937596bef959-11
@@ -0,0 +1 @@
+v=spf1 mx:\xd3\xd8\xd0\xde\xd0\xef\xef)\xbd include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/c9fd32fb5a9d5c888423d58bcd6796c1b79c4933-8 b/testdata/fuzz/corpus/c9fd32fb5a9d5c888423d58bcd6796c1b79c4933-8
new file mode 100644
index 0000000..dad109e
--- /dev/null
+++ b/testdata/fuzz/corpus/c9fd32fb5a9d5c888423d58bcd6796c1b79c4933-8
@@ -0,0 +1 @@
+v=spf1 a:d1110/1 include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/cbd464ac586e17e09c93883119fae5001195bccf-9 b/testdata/fuzz/corpus/cbd464ac586e17e09c93883119fae5001195bccf-9
new file mode 100644
index 0000000..77cf86f
--- /dev/null
+++ b/testdata/fuzz/corpus/cbd464ac586e17e09c93883119fae5001195bccf-9
@@ -0,0 +1 @@
+v=spf1 󂂂󂂂󫞵󂂂󂂂󫞵󂂂󫿽󫿽
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/cc183fa6e5f3eb5fa47e5b5207fe9a25cf68bcd6-5 b/testdata/fuzz/corpus/cc183fa6e5f3eb5fa47e5b5207fe9a25cf68bcd6-5
new file mode 100644
index 0000000..b391cc6
--- /dev/null
+++ b/testdata/fuzz/corpus/cc183fa6e5f3eb5fa47e5b5207fe9a25cf68bcd6-5
@@ -0,0 +1 @@
+v=spf1 a/4 a/1
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/ccf0020a2b2da0b9440b8d6c98aac522f04e3f96-13 b/testdata/fuzz/corpus/ccf0020a2b2da0b9440b8d6c98aac522f04e3f96-13
new file mode 100644
index 0000000..db92882
--- /dev/null
+++ b/testdata/fuzz/corpus/ccf0020a2b2da0b9440b8d6c98aac522f04e3f96-13
@@ -0,0 +1 @@
+v=spf1 mx:󂂂󂂂󂂂󂂂󂂽 include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/cd8b93cd61b30a1f045173bce142d6861bef88a2-5 b/testdata/fuzz/corpus/cd8b93cd61b30a1f045173bce142d6861bef88a2-5
new file mode 100644
index 0000000..739168e
--- /dev/null
+++ b/testdata/fuzz/corpus/cd8b93cd61b30a1f045173bce142d6861bef88a2-5
@@ -0,0 +1 @@
+v=spf1 ptr:\xbd ptr:\xbd ptr6
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/cdd335e7f0ca5359d324600ff443c5c8b2ad6b31-10 b/testdata/fuzz/corpus/cdd335e7f0ca5359d324600ff443c5c8b2ad6b31-10
new file mode 100644
index 0000000..61b122c
--- /dev/null
+++ b/testdata/fuzz/corpus/cdd335e7f0ca5359d324600ff443c5c8b2ad6b31-10
@@ -0,0 +1 @@
+v=spf1 a:d1110/1 a:d1110/1 a:d1110/1 include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/ceeaed584be8a2f84755b388bc2eca9d91e301dd-2 b/testdata/fuzz/corpus/ceeaed584be8a2f84755b388bc2eca9d91e301dd-2
new file mode 100644
index 0000000..f5de937
--- /dev/null
+++ b/testdata/fuzz/corpus/ceeaed584be8a2f84755b388bc2eca9d91e301dd-2
@@ -0,0 +1 @@
+v=spf1 mx:/ a
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/d010cd01f60d366a490939ba7e734ee0205bbf95-5 b/testdata/fuzz/corpus/d010cd01f60d366a490939ba7e734ee0205bbf95-5
new file mode 100644
index 0000000..70d928c
--- /dev/null
+++ b/testdata/fuzz/corpus/d010cd01f60d366a490939ba7e734ee0205bbf95-5
@@ -0,0 +1 @@
+v=spf1 a\xca1 include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/d1567d96b1c0e32073b56c363eb83d854bc2742f-12 b/testdata/fuzz/corpus/d1567d96b1c0e32073b56c363eb83d854bc2742f-12
new file mode 100644
index 0000000..c50e954
--- /dev/null
+++ b/testdata/fuzz/corpus/d1567d96b1c0e32073b56c363eb83d854bc2742f-12
@@ -0,0 +1 @@
+v=spf1 a/110718626451 include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/d3e99d5a3f89a6fec79bb8209d9584d55b99b650-6 b/testdata/fuzz/corpus/d3e99d5a3f89a6fec79bb8209d9584d55b99b650-6
new file mode 100644
index 0000000..0d5c056
--- /dev/null
+++ b/testdata/fuzz/corpus/d3e99d5a3f89a6fec79bb8209d9584d55b99b650-6
@@ -0,0 +1 @@
+v=spf1  \xe2  
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/d48d9dfb5381fd1acaec2c9e7900a3fd86742674-3 b/testdata/fuzz/corpus/d48d9dfb5381fd1acaec2c9e7900a3fd86742674-3
new file mode 100644
index 0000000..5ca0269
--- /dev/null
+++ b/testdata/fuzz/corpus/d48d9dfb5381fd1acaec2c9e7900a3fd86742674-3
@@ -0,0 +1 @@
+v=spf1 a a a
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/d4dc7ea8bce557418650da7fdc34e3f03877bdb9-3 b/testdata/fuzz/corpus/d4dc7ea8bce557418650da7fdc34e3f03877bdb9-3
new file mode 100644
index 0000000..53c78c3
--- /dev/null
+++ b/testdata/fuzz/corpus/d4dc7ea8bce557418650da7fdc34e3f03877bdb9-3
@@ -0,0 +1 @@
+v=spf1 ՁŁ
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/d7367455b7cc6e9d9e0a32d7e6ebf28c6c88aeae-6 b/testdata/fuzz/corpus/d7367455b7cc6e9d9e0a32d7e6ebf28c6c88aeae-6
new file mode 100644
index 0000000..0d877e1
--- /dev/null
+++ b/testdata/fuzz/corpus/d7367455b7cc6e9d9e0a32d7e6ebf28c6c88aeae-6
@@ -0,0 +1 @@
+v=spf1 mx mx/ a mx
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/d781c18c85da9ab3b4775e4db674a590ac73ef36-5 b/testdata/fuzz/corpus/d781c18c85da9ab3b4775e4db674a590ac73ef36-5
new file mode 100644
index 0000000..68378c3
--- /dev/null
+++ b/testdata/fuzz/corpus/d781c18c85da9ab3b4775e4db674a590ac73ef36-5
@@ -0,0 +1 @@
+v=spf1 mx mx/ a mx/ a/
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/d7f48fadee3af3b910ccc8cf04657a445cd4c9f4-3 b/testdata/fuzz/corpus/d7f48fadee3af3b910ccc8cf04657a445cd4c9f4-3
new file mode 100644
index 0000000..cc7bf2a
--- /dev/null
+++ b/testdata/fuzz/corpus/d7f48fadee3af3b910ccc8cf04657a445cd4c9f4-3
@@ -0,0 +1 @@
+v=spf1 
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/d8c678392de65db470dae4b9f613ec42415ff864-5 b/testdata/fuzz/corpus/d8c678392de65db470dae4b9f613ec42415ff864-5
new file mode 100644
index 0000000..798d42b
--- /dev/null
+++ b/testdata/fuzz/corpus/d8c678392de65db470dae4b9f613ec42415ff864-5
@@ -0,0 +1 @@
+v=spf1 󂂂󂂂\xf3\x82\x82\xef
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/d94e5b5d8b5854e3caba0444add40baaaba86996-1 b/testdata/fuzz/corpus/d94e5b5d8b5854e3caba0444add40baaaba86996-1
new file mode 100644
index 0000000..bc136c5
--- /dev/null
+++ b/testdata/fuzz/corpus/d94e5b5d8b5854e3caba0444add40baaaba86996-1
@@ -0,0 +1 @@
+v=spf1 a:nothing/����pf1I��24
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/da33d09eda59c78659696af049567c7ef68fb02f-8 b/testdata/fuzz/corpus/da33d09eda59c78659696af049567c7ef68fb02f-8
new file mode 100644
index 0000000..0f5b928
--- /dev/null
+++ b/testdata/fuzz/corpus/da33d09eda59c78659696af049567c7ef68fb02f-8
@@ -0,0 +1 @@
+v=spf1 
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/dae9a77a60e1491680c1d805118ac3751112909f-3 b/testdata/fuzz/corpus/dae9a77a60e1491680c1d805118ac3751112909f-3
new file mode 100644
index 0000000..450b058
--- /dev/null
+++ b/testdata/fuzz/corpus/dae9a77a60e1491680c1d805118ac3751112909f-3
@@ -0,0 +1 @@
+v=spf1 a:\xbf\xbd\xef\xbf/\xbd\xef\xbd\xef\xbf)\xbd\xbd\xbd
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/dbd0db742720740c10282518e4577cec3998e5cc-5 b/testdata/fuzz/corpus/dbd0db742720740c10282518e4577cec3998e5cc-5
new file mode 100644
index 0000000..f266ec8
Binary files /dev/null and b/testdata/fuzz/corpus/dbd0db742720740c10282518e4577cec3998e5cc-5 differ
diff --git a/testdata/fuzz/corpus/dcc0a5de6197e7baf94c9bd0c312f3b3a8b5ffb8-6 b/testdata/fuzz/corpus/dcc0a5de6197e7baf94c9bd0c312f3b3a8b5ffb8-6
new file mode 100644
index 0000000..d9ef3f4
Binary files /dev/null and b/testdata/fuzz/corpus/dcc0a5de6197e7baf94c9bd0c312f3b3a8b5ffb8-6 differ
diff --git a/testdata/fuzz/corpus/e0fd54a63505541388b2f103523d8aa89bdb5bc6-11 b/testdata/fuzz/corpus/e0fd54a63505541388b2f103523d8aa89bdb5bc6-11
new file mode 100644
index 0000000..7abd745
--- /dev/null
+++ b/testdata/fuzz/corpus/e0fd54a63505541388b2f103523d8aa89bdb5bc6-11
@@ -0,0 +1 @@
+v=spf1 𨞵𫶵𫞵\xf0\xab\xb5𫞵𫞵𫞵𫶵𫞵𫞵𫎵𫞵𫞵𫞵𫞵𫎵𫞵𫞵𫞵𫞵𫞵𫶵𫞵𫞵𫎵𫞵𫞵𫞵𫞵𫎵𫞵𫞴𫞵𫞵
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/e208097be0b0dc8618075d6583ce1f50568c15e2-1 b/testdata/fuzz/corpus/e208097be0b0dc8618075d6583ce1f50568c15e2-1
new file mode 100644
index 0000000..bc2e0a4
--- /dev/null
+++ b/testdata/fuzz/corpus/e208097be0b0dc8618075d6583ce1f50568c15e2-1
@@ -0,0 +1 @@
+v=spf1 include:domain 
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/e54a3e98730496df3ea28dbfef487790c60708fb-11 b/testdata/fuzz/corpus/e54a3e98730496df3ea28dbfef487790c60708fb-11
new file mode 100644
index 0000000..69c1244
--- /dev/null
+++ b/testdata/fuzz/corpus/e54a3e98730496df3ea28dbfef487790c60708fb-11
@@ -0,0 +1 @@
+v=spf1 mx:\xf3\x82\x82\xf3\x82\x82\xf3\x82\x82\xf3\x82\x82\xf3\x82\x82\xf3\x82\x82\xf3\x82\x825 include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/e60dbbdca9e3329fe3f1fb14b05d7f88a2c6ea63-14 b/testdata/fuzz/corpus/e60dbbdca9e3329fe3f1fb14b05d7f88a2c6ea63-14
new file mode 100644
index 0000000..d694eaf
--- /dev/null
+++ b/testdata/fuzz/corpus/e60dbbdca9e3329fe3f1fb14b05d7f88a2c6ea63-14
@@ -0,0 +1 @@
+v=spf1 a/-107186261862645451 include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/e7914ed96774117a2015925f790c57fe8000c008-8 b/testdata/fuzz/corpus/e7914ed96774117a2015925f790c57fe8000c008-8
new file mode 100644
index 0000000..977ffa3
--- /dev/null
+++ b/testdata/fuzz/corpus/e7914ed96774117a2015925f790c57fe8000c008-8
@@ -0,0 +1 @@
+v=spf1 a/4 a/4 a/4 a/4 a/4 a/4 a/4 a/4 a/1
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/ec41195137f57066d8f0d799ac8bb252dfdc93dc-2 b/testdata/fuzz/corpus/ec41195137f57066d8f0d799ac8bb252dfdc93dc-2
new file mode 100644
index 0000000..3d064c4
--- /dev/null
+++ b/testdata/fuzz/corpus/ec41195137f57066d8f0d799ac8bb252dfdc93dc-2
@@ -0,0 +1 @@
+v=spf1 /ՁB\xf3/ՁB\xf3\x82\x82)`!44
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/eda8a35bd40b21a692a4995f705855c7312886c3-9 b/testdata/fuzz/corpus/eda8a35bd40b21a692a4995f705855c7312886c3-9
new file mode 100644
index 0000000..a97dfb6
--- /dev/null
+++ b/testdata/fuzz/corpus/eda8a35bd40b21a692a4995f705855c7312886c3-9
@@ -0,0 +1 @@
+v=spf1 mx mx a a mx mx a a mx mx
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/ee79058d876696355d87d2126ad04f156ee520aa-2 b/testdata/fuzz/corpus/ee79058d876696355d87d2126ad04f156ee520aa-2
new file mode 100644
index 0000000..8dc5788
--- /dev/null
+++ b/testdata/fuzz/corpus/ee79058d876696355d87d2126ad04f156ee520aa-2
@@ -0,0 +1 @@
+v=spf1 m0�110~all
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/efcb64bb622abb09cdf3c05e731cf05ab568f832-2 b/testdata/fuzz/corpus/efcb64bb622abb09cdf3c05e731cf05ab568f832-2
new file mode 100644
index 0000000..38e81ab
Binary files /dev/null and b/testdata/fuzz/corpus/efcb64bb622abb09cdf3c05e731cf05ab568f832-2 differ
diff --git a/testdata/fuzz/corpus/f00d61fecdc4f66b5c9d8327c224e31776d2ed0e-8 b/testdata/fuzz/corpus/f00d61fecdc4f66b5c9d8327c224e31776d2ed0e-8
new file mode 100644
index 0000000..46a7ebe
--- /dev/null
+++ b/testdata/fuzz/corpus/f00d61fecdc4f66b5c9d8327c224e31776d2ed0e-8
@@ -0,0 +1 @@
+v=spf1 include:domain \xe7 \xe7 \xb2 \xb2
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/f045bb4e8964c3e50f041d64f4af9d0183705b31-5 b/testdata/fuzz/corpus/f045bb4e8964c3e50f041d64f4af9d0183705b31-5
new file mode 100644
index 0000000..82394a8
--- /dev/null
+++ b/testdata/fuzz/corpus/f045bb4e8964c3e50f041d64f4af9d0183705b31-5
@@ -0,0 +1 @@
+v=spf1 a/0718626451492305703
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/f0790f92fc3c35ccf7e8a7fb6b48035edf0780a3 b/testdata/fuzz/corpus/f0790f92fc3c35ccf7e8a7fb6b48035edf0780a3
new file mode 100644
index 0000000..83cd8ab
--- /dev/null
+++ b/testdata/fuzz/corpus/f0790f92fc3c35ccf7e8a7fb6b48035edf0780a3
@@ -0,0 +1 @@
+v=spf1 mx=7_7MN3__a4B361qZ_usk_cs__685t____gWGu__k_y6__J____5Gb_NM30_uxX__/0xFA2467A2fFde5 ~
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/f4b8cedf44980c648c7e5e5fc44327c456156f57-12 b/testdata/fuzz/corpus/f4b8cedf44980c648c7e5e5fc44327c456156f57-12
new file mode 100644
index 0000000..bd60f46
--- /dev/null
+++ b/testdata/fuzz/corpus/f4b8cedf44980c648c7e5e5fc44327c456156f57-12
@@ -0,0 +1 @@
+v=spf1 mx\xf3\x8205 include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/f56d2e286b7ecc555ea356fe649fbf322ea02fc5-8 b/testdata/fuzz/corpus/f56d2e286b7ecc555ea356fe649fbf322ea02fc5-8
new file mode 100644
index 0000000..dad9d3d
--- /dev/null
+++ b/testdata/fuzz/corpus/f56d2e286b7ecc555ea356fe649fbf322ea02fc5-8
@@ -0,0 +1 @@
+v=spf1 mx:�������� include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/f5bb1d1b02d908d9d249b8bc120e37abd12d94de-4 b/testdata/fuzz/corpus/f5bb1d1b02d908d9d249b8bc120e37abd12d94de-4
new file mode 100644
index 0000000..1666e0b
--- /dev/null
+++ b/testdata/fuzz/corpus/f5bb1d1b02d908d9d249b8bc120e37abd12d94de-4
@@ -0,0 +1 @@
+v=spf1 ptr:\xbd ptr6
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/f650013dbeb971d05740a25bcd8f6726a35cc47e b/testdata/fuzz/corpus/f650013dbeb971d05740a25bcd8f6726a35cc47e
new file mode 100644
index 0000000..813aae4
--- /dev/null
+++ b/testdata/fuzz/corpus/f650013dbeb971d05740a25bcd8f6726a35cc47e
@@ -0,0 +1 @@
+v=spf1 a
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/f70408cf87bef7015e9c01e21fe4d656bbe091f1-1 b/testdata/fuzz/corpus/f70408cf87bef7015e9c01e21fe4d656bbe091f1-1
new file mode 100644
index 0000000..aa11b64
--- /dev/null
+++ b/testdata/fuzz/corpus/f70408cf87bef7015e9c01e21fe4d656bbe091f1-1
@@ -0,0 +1 @@
+v=spf1 ��
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/f86d796e245a7f6baab8943e91639f3abe312654-3 b/testdata/fuzz/corpus/f86d796e245a7f6baab8943e91639f3abe312654-3
new file mode 100644
index 0000000..f39f81c
--- /dev/null
+++ b/testdata/fuzz/corpus/f86d796e245a7f6baab8943e91639f3abe312654-3
@@ -0,0 +1 @@
+v=spf1 mx:\xde\xd0Q\xbd\xbf\xbf\xef\xbd)\xbd\xbf\xbf\xbf\xefQ\xbd\xbf\xbf\xef\xbd
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/f9f5579076d85ecffef2bc4201d38e2168c95486-6 b/testdata/fuzz/corpus/f9f5579076d85ecffef2bc4201d38e2168c95486-6
new file mode 100644
index 0000000..5eb4d51
--- /dev/null
+++ b/testdata/fuzz/corpus/f9f5579076d85ecffef2bc4201d38e2168c95486-6
@@ -0,0 +1 @@
+v=spf1 a/-110723451492305703
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/fb893e6d6923eb8bc63274ff5faad450b0c40abb-3 b/testdata/fuzz/corpus/fb893e6d6923eb8bc63274ff5faad450b0c40abb-3
new file mode 100644
index 0000000..4aa464c
--- /dev/null
+++ b/testdata/fuzz/corpus/fb893e6d6923eb8bc63274ff5faad450b0c40abb-3
@@ -0,0 +1 @@
+v=spf1  include:domain
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/fbfceed3f5d78a2c71b217856a3c8b12f6f22f5b-4 b/testdata/fuzz/corpus/fbfceed3f5d78a2c71b217856a3c8b12f6f22f5b-4
new file mode 100644
index 0000000..eb2550d
--- /dev/null
+++ b/testdata/fuzz/corpus/fbfceed3f5d78a2c71b217856a3c8b12f6f22f5b-4
@@ -0,0 +1 @@
+v=spf1 \xef\xbf/\xef\xbd\xef\xbf)
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/fc0a076254f8732cae001b698d036a858ca6dfb6-3 b/testdata/fuzz/corpus/fc0a076254f8732cae001b698d036a858ca6dfb6-3
new file mode 100644
index 0000000..2f114b4
--- /dev/null
+++ b/testdata/fuzz/corpus/fc0a076254f8732cae001b698d036a858ca6dfb6-3
@@ -0,0 +1 @@
+v=spf1 \\
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/fdb54165041061eb1bb177f83c824f7785124ee7-2 b/testdata/fuzz/corpus/fdb54165041061eb1bb177f83c824f7785124ee7-2
new file mode 100644
index 0000000..948cbe2
--- /dev/null
+++ b/testdata/fuzz/corpus/fdb54165041061eb1bb177f83c824f7785124ee7-2
@@ -0,0 +1 @@
+v=spf1 Ձ�
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/fe1c45453c73861dfb5cf5ab1e032e90dc154572-4 b/testdata/fuzz/corpus/fe1c45453c73861dfb5cf5ab1e032e90dc154572-4
new file mode 100644
index 0000000..d2e4ec3
--- /dev/null
+++ b/testdata/fuzz/corpus/fe1c45453c73861dfb5cf5ab1e032e90dc154572-4
@@ -0,0 +1 @@
+v=spf1 mx:\xde\xd0Q\xbd\xbf\xbf\xef\xbd\xde\xd0Q\xbd\xbf\xbf\xef\xbd)\xbd\xbf\xbf\xbf\xefQ\xbd\xbf\xbf\xef)\xbd\xbf\xbf\xbf\xefQ\xbd\xbf\xbf\xef\xbd
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/fe43d6d6a17b0d49226f25260bc5b76dc4d815da-7 b/testdata/fuzz/corpus/fe43d6d6a17b0d49226f25260bc5b76dc4d815da-7
new file mode 100644
index 0000000..1172b8e
--- /dev/null
+++ b/testdata/fuzz/corpus/fe43d6d6a17b0d49226f25260bc5b76dc4d815da-7
@@ -0,0 +1 @@
+v=spf1 \xf3\xf3\xf3
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/ff4c34829a3c7ad090d43175030a9e9ebb7b40af-3 b/testdata/fuzz/corpus/ff4c34829a3c7ad090d43175030a9e9ebb7b40af-3
new file mode 100644
index 0000000..0abc5fa
--- /dev/null
+++ b/testdata/fuzz/corpus/ff4c34829a3c7ad090d43175030a9e9ebb7b40af-3
@@ -0,0 +1 @@
+v=spf1 𫞵𫞵
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-000 b/testdata/fuzz/corpus/t-000
new file mode 100644
index 0000000..423127e
--- /dev/null
+++ b/testdata/fuzz/corpus/t-000
@@ -0,0 +1 @@
+v=spf1
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-001 b/testdata/fuzz/corpus/t-001
new file mode 100644
index 0000000..423127e
--- /dev/null
+++ b/testdata/fuzz/corpus/t-001
@@ -0,0 +1 @@
+v=spf1
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-002 b/testdata/fuzz/corpus/t-002
new file mode 100644
index 0000000..fc43dd4
--- /dev/null
+++ b/testdata/fuzz/corpus/t-002
@@ -0,0 +1 @@
+v=spf1 -
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-003 b/testdata/fuzz/corpus/t-003
new file mode 100644
index 0000000..9a3605d
--- /dev/null
+++ b/testdata/fuzz/corpus/t-003
@@ -0,0 +1 @@
+v=spf1 all
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-004 b/testdata/fuzz/corpus/t-004
new file mode 100644
index 0000000..e03383c
--- /dev/null
+++ b/testdata/fuzz/corpus/t-004
@@ -0,0 +1 @@
+v=spf1 +all
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-005 b/testdata/fuzz/corpus/t-005
new file mode 100644
index 0000000..f870ac9
--- /dev/null
+++ b/testdata/fuzz/corpus/t-005
@@ -0,0 +1 @@
+v=spf1 -all
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-006 b/testdata/fuzz/corpus/t-006
new file mode 100644
index 0000000..541cd9b
--- /dev/null
+++ b/testdata/fuzz/corpus/t-006
@@ -0,0 +1 @@
+v=spf1 ~all
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-007 b/testdata/fuzz/corpus/t-007
new file mode 100644
index 0000000..83a6d17
--- /dev/null
+++ b/testdata/fuzz/corpus/t-007
@@ -0,0 +1 @@
+v=spf1 ?all
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-008 b/testdata/fuzz/corpus/t-008
new file mode 100644
index 0000000..a7e9a7d
--- /dev/null
+++ b/testdata/fuzz/corpus/t-008
@@ -0,0 +1 @@
+v=spf1 a ~all
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-009 b/testdata/fuzz/corpus/t-009
new file mode 100644
index 0000000..07a0907
--- /dev/null
+++ b/testdata/fuzz/corpus/t-009
@@ -0,0 +1 @@
+v=spf1 a/24
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-010 b/testdata/fuzz/corpus/t-010
new file mode 100644
index 0000000..ecb4507
--- /dev/null
+++ b/testdata/fuzz/corpus/t-010
@@ -0,0 +1 @@
+v=spf1 a:d1110/24
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-011 b/testdata/fuzz/corpus/t-011
new file mode 100644
index 0000000..62e935d
--- /dev/null
+++ b/testdata/fuzz/corpus/t-011
@@ -0,0 +1 @@
+v=spf1 a:d1110
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-012 b/testdata/fuzz/corpus/t-012
new file mode 100644
index 0000000..9330ff9
--- /dev/null
+++ b/testdata/fuzz/corpus/t-012
@@ -0,0 +1 @@
+v=spf1 a:d1111
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-013 b/testdata/fuzz/corpus/t-013
new file mode 100644
index 0000000..46134da
--- /dev/null
+++ b/testdata/fuzz/corpus/t-013
@@ -0,0 +1 @@
+v=spf1 a:nothing/24
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-014 b/testdata/fuzz/corpus/t-014
new file mode 100644
index 0000000..efacb37
--- /dev/null
+++ b/testdata/fuzz/corpus/t-014
@@ -0,0 +1 @@
+v=spf1 mx
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-015 b/testdata/fuzz/corpus/t-015
new file mode 100644
index 0000000..96f51c6
--- /dev/null
+++ b/testdata/fuzz/corpus/t-015
@@ -0,0 +1 @@
+v=spf1 mx/24
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-016 b/testdata/fuzz/corpus/t-016
new file mode 100644
index 0000000..1877034
--- /dev/null
+++ b/testdata/fuzz/corpus/t-016
@@ -0,0 +1 @@
+v=spf1 mx:a/montoto ~all
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-017 b/testdata/fuzz/corpus/t-017
new file mode 100644
index 0000000..b12084f
--- /dev/null
+++ b/testdata/fuzz/corpus/t-017
@@ -0,0 +1 @@
+v=spf1 mx:d1110/24 ~all
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-018 b/testdata/fuzz/corpus/t-018
new file mode 100644
index 0000000..9c3556a
--- /dev/null
+++ b/testdata/fuzz/corpus/t-018
@@ -0,0 +1 @@
+v=spf1 ip4:1.2.3.4 ~all
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-019 b/testdata/fuzz/corpus/t-019
new file mode 100644
index 0000000..b790dec
--- /dev/null
+++ b/testdata/fuzz/corpus/t-019
@@ -0,0 +1 @@
+v=spf1 ip6:12 ~all
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-020 b/testdata/fuzz/corpus/t-020
new file mode 100644
index 0000000..6ada126
--- /dev/null
+++ b/testdata/fuzz/corpus/t-020
@@ -0,0 +1 @@
+v=spf1 ip4:1.1.1.1 -all
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-021 b/testdata/fuzz/corpus/t-021
new file mode 100644
index 0000000..7eb0c13
--- /dev/null
+++ b/testdata/fuzz/corpus/t-021
@@ -0,0 +1 @@
+v=spf1 ptr -all
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-022 b/testdata/fuzz/corpus/t-022
new file mode 100644
index 0000000..38cd9ad
--- /dev/null
+++ b/testdata/fuzz/corpus/t-022
@@ -0,0 +1 @@
+v=spf1 ptr:d1111 -all
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-023 b/testdata/fuzz/corpus/t-023
new file mode 100644
index 0000000..fdd8fb3
--- /dev/null
+++ b/testdata/fuzz/corpus/t-023
@@ -0,0 +1 @@
+v=spf1 ptr:lalala -all
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-024 b/testdata/fuzz/corpus/t-024
new file mode 100644
index 0000000..84c267d
--- /dev/null
+++ b/testdata/fuzz/corpus/t-024
@@ -0,0 +1 @@
+v=spf1 blah
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-025 b/testdata/fuzz/corpus/t-025
new file mode 100644
index 0000000..9a3605d
--- /dev/null
+++ b/testdata/fuzz/corpus/t-025
@@ -0,0 +1 @@
+v=spf1 all
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-026 b/testdata/fuzz/corpus/t-026
new file mode 100644
index 0000000..a7e9a7d
--- /dev/null
+++ b/testdata/fuzz/corpus/t-026
@@ -0,0 +1 @@
+v=spf1 a ~all
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-027 b/testdata/fuzz/corpus/t-027
new file mode 100644
index 0000000..07a0907
--- /dev/null
+++ b/testdata/fuzz/corpus/t-027
@@ -0,0 +1 @@
+v=spf1 a/24
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-028 b/testdata/fuzz/corpus/t-028
new file mode 100644
index 0000000..df52d86
--- /dev/null
+++ b/testdata/fuzz/corpus/t-028
@@ -0,0 +1 @@
+v=spf1 a:d6660/24
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-029 b/testdata/fuzz/corpus/t-029
new file mode 100644
index 0000000..418618b
--- /dev/null
+++ b/testdata/fuzz/corpus/t-029
@@ -0,0 +1 @@
+v=spf1 a:d6660
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-030 b/testdata/fuzz/corpus/t-030
new file mode 100644
index 0000000..daabc9d
--- /dev/null
+++ b/testdata/fuzz/corpus/t-030
@@ -0,0 +1 @@
+v=spf1 a:d6666
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-031 b/testdata/fuzz/corpus/t-031
new file mode 100644
index 0000000..46134da
--- /dev/null
+++ b/testdata/fuzz/corpus/t-031
@@ -0,0 +1 @@
+v=spf1 a:nothing/24
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-032 b/testdata/fuzz/corpus/t-032
new file mode 100644
index 0000000..90dcf4d
--- /dev/null
+++ b/testdata/fuzz/corpus/t-032
@@ -0,0 +1 @@
+v=spf1 mx:d6660/24 ~all
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-033 b/testdata/fuzz/corpus/t-033
new file mode 100644
index 0000000..a6a2e21
--- /dev/null
+++ b/testdata/fuzz/corpus/t-033
@@ -0,0 +1 @@
+v=spf1 ip6:2001:db8::68 ~all
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-034 b/testdata/fuzz/corpus/t-034
new file mode 100644
index 0000000..858f68f
--- /dev/null
+++ b/testdata/fuzz/corpus/t-034
@@ -0,0 +1 @@
+v=spf1 ip6:2001:db8::1/24 ~all
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-035 b/testdata/fuzz/corpus/t-035
new file mode 100644
index 0000000..ebb4a86
--- /dev/null
+++ b/testdata/fuzz/corpus/t-035
@@ -0,0 +1 @@
+v=spf1 ip6:2001:db8::1/100 ~all
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-036 b/testdata/fuzz/corpus/t-036
new file mode 100644
index 0000000..7eb0c13
--- /dev/null
+++ b/testdata/fuzz/corpus/t-036
@@ -0,0 +1 @@
+v=spf1 ptr -all
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-037 b/testdata/fuzz/corpus/t-037
new file mode 100644
index 0000000..437239a
--- /dev/null
+++ b/testdata/fuzz/corpus/t-037
@@ -0,0 +1 @@
+v=spf1 ptr:d6666 -all
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-038 b/testdata/fuzz/corpus/t-038
new file mode 100644
index 0000000..06900f0
--- /dev/null
+++ b/testdata/fuzz/corpus/t-038
@@ -0,0 +1 @@
+v=spf1 ptr:sonlas6 -all
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-039 b/testdata/fuzz/corpus/t-039
new file mode 100644
index 0000000..d6948d7
--- /dev/null
+++ b/testdata/fuzz/corpus/t-039
@@ -0,0 +1 @@
+v=spf1 exists:blah -all
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-040 b/testdata/fuzz/corpus/t-040
new file mode 100644
index 0000000..abb045e
--- /dev/null
+++ b/testdata/fuzz/corpus/t-040
@@ -0,0 +1 @@
+v=spf1 exp=blah -all
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-041 b/testdata/fuzz/corpus/t-041
new file mode 100644
index 0000000..2f45acb
--- /dev/null
+++ b/testdata/fuzz/corpus/t-041
@@ -0,0 +1 @@
+v=spf1 a:%{o} -all
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-042 b/testdata/fuzz/corpus/t-042
new file mode 100644
index 0000000..c3a4cd5
--- /dev/null
+++ b/testdata/fuzz/corpus/t-042
@@ -0,0 +1 @@
+v=spf1 include:domain ~all
\ No newline at end of file
diff --git a/testdata/fuzz/corpus/t-043 b/testdata/fuzz/corpus/t-043
new file mode 100644
index 0000000..d840248
--- /dev/null
+++ b/testdata/fuzz/corpus/t-043
@@ -0,0 +1 @@
+v=spf1 redirect=blah -all