@@ -36,6 +36,9 @@ extern crate uuid;
36
36
extern crate xml;
37
37
extern crate zip;
38
38
extern crate zopfli;
39
+ extern crate svgtypes;
40
+ extern crate xmlparser;
41
+ extern crate usvg;
39
42
40
43
#[ inline( always) ]
41
44
pub fn fuzz_brotli_read ( data : & [ u8 ] ) {
@@ -776,3 +779,117 @@ pub fn fuzz_zopfli_compress(data: &[u8]) {
776
779
let _ = zopfli:: compress ( & options, & output_type, & data, & mut res) ;
777
780
}
778
781
}
782
+
783
+ #[ inline( always) ]
784
+ pub fn fuzz_svgtypes_color ( data : & [ u8 ] ) {
785
+ use std:: str;
786
+ use std:: str:: FromStr ;
787
+
788
+ if let Ok ( s) = str:: from_utf8 ( data) {
789
+ // Must not panic.
790
+ let _ = svgtypes:: Color :: from_str ( s) ;
791
+ }
792
+ }
793
+
794
+ #[ inline( always) ]
795
+ pub fn fuzz_svgtypes_length ( data : & [ u8 ] ) {
796
+ use std:: str;
797
+ use std:: str:: FromStr ;
798
+ use svgtypes:: { Length , Error } ;
799
+
800
+ if let Ok ( s) = str:: from_utf8 ( data) {
801
+ if let Err ( e) = Length :: from_str ( s) {
802
+ match e {
803
+ Error :: InvalidNumber ( _) => { }
804
+ _ => panic ! ( "{:?}" , e) ,
805
+ }
806
+ }
807
+ }
808
+ }
809
+
810
+ #[ inline( always) ]
811
+ pub fn fuzz_svgtypes_path ( data : & [ u8 ] ) {
812
+ use std:: str;
813
+
814
+ if let Ok ( s) = str:: from_utf8 ( data) {
815
+ // Must not panic.
816
+ let mut n = 0 ;
817
+ for _ in svgtypes:: PathParser :: from ( s) {
818
+ n += 1 ;
819
+
820
+ if n == 1000 {
821
+ panic ! ( "endless loop" ) ;
822
+ }
823
+ }
824
+ }
825
+ }
826
+
827
+ #[ inline( always) ]
828
+ pub fn fuzz_svgtypes_style ( data : & [ u8 ] ) {
829
+ use std:: str;
830
+
831
+ if let Ok ( s) = str:: from_utf8 ( data) {
832
+ // Must not panic.
833
+ let mut n = 0 ;
834
+ for _ in svgtypes:: StyleParser :: from ( s) {
835
+ n += 1 ;
836
+
837
+ if n == 1000 {
838
+ panic ! ( "endless loop" ) ;
839
+ }
840
+ }
841
+ }
842
+ }
843
+
844
+ #[ inline( always) ]
845
+ pub fn fuzz_svgtypes_transforms ( data : & [ u8 ] ) {
846
+ use std:: str;
847
+
848
+ if let Ok ( s) = str:: from_utf8 ( data) {
849
+ // Must not panic.
850
+ let mut n = 0 ;
851
+ for _ in svgtypes:: TransformListParser :: from ( s) {
852
+ n += 1 ;
853
+
854
+ if n == 1000 {
855
+ panic ! ( "endless loop" ) ;
856
+ }
857
+ }
858
+ }
859
+ }
860
+
861
+ #[ inline( always) ]
862
+ pub fn fuzz_xmlparser_unescape ( data : & [ u8 ] ) {
863
+ use std:: str;
864
+ use xmlparser:: { TextUnescape , XmlSpace } ;
865
+
866
+ if let Ok ( s) = str:: from_utf8 ( data) {
867
+ let _ = TextUnescape :: unescape ( s, XmlSpace :: Default ) ;
868
+ let _ = TextUnescape :: unescape ( s, XmlSpace :: Preserve ) ;
869
+ }
870
+ }
871
+
872
+ #[ inline( always) ]
873
+ pub fn fuzz_xmlparser_xml ( data : & [ u8 ] ) {
874
+ use std:: str;
875
+
876
+ if let Ok ( text) = str:: from_utf8 ( data) {
877
+ let mut n = 0 ;
878
+ for _ in xmlparser:: Tokenizer :: from ( text) {
879
+ n += 1 ;
880
+
881
+ if n == 1000 {
882
+ panic ! ( "endless loop" ) ;
883
+ }
884
+ }
885
+ }
886
+ }
887
+
888
+ #[ inline( always) ]
889
+ pub fn fuzz_usvg_parse_tree ( data : & [ u8 ] ) {
890
+ use std:: str;
891
+
892
+ if let Ok ( text) = str:: from_utf8 ( data) {
893
+ let _ = usvg:: parse_tree_from_data ( text, & usvg:: Options :: default ( ) ) ;
894
+ }
895
+ }
0 commit comments