Upgrade dev-dependencies
This commit is contained in:
		
				
					committed by
					
						 Sean McArthur
						Sean McArthur
					
				
			
			
				
	
			
			
			
						parent
						
							47e9f62fb5
						
					
				
				
					commit
					4c31a320be
				
			| @@ -1,7 +1,7 @@ | ||||
| #[cfg(fuzzing)] | ||||
| pub mod fuzz_logic { | ||||
|     use crate::hpack; | ||||
|     use bytes::{BufMut, BytesMut}; | ||||
|     use bytes::BytesMut; | ||||
|     use http::header::HeaderName; | ||||
|     use std::io::Cursor; | ||||
|  | ||||
|   | ||||
| @@ -4,7 +4,9 @@ use http::header::{HeaderName, HeaderValue}; | ||||
|  | ||||
| use bytes::BytesMut; | ||||
| use quickcheck::{Arbitrary, Gen, QuickCheck, TestResult}; | ||||
| use rand::{Rng, SeedableRng, StdRng}; | ||||
| use rand::distributions::Slice; | ||||
| use rand::rngs::StdRng; | ||||
| use rand::{thread_rng, Rng, SeedableRng}; | ||||
|  | ||||
| use std::io::Cursor; | ||||
|  | ||||
| @@ -46,9 +48,9 @@ struct HeaderFrame { | ||||
| } | ||||
|  | ||||
| impl FuzzHpack { | ||||
|     fn new(seed: [usize; 4]) -> FuzzHpack { | ||||
|     fn new(seed: [u8; 32]) -> FuzzHpack { | ||||
|         // Seed the RNG | ||||
|         let mut rng = StdRng::from_seed(&seed); | ||||
|         let mut rng = StdRng::from_seed(seed); | ||||
|  | ||||
|         // Generates a bunch of source headers | ||||
|         let mut source: Vec<Header<Option<HeaderName>>> = vec![]; | ||||
| @@ -58,12 +60,12 @@ impl FuzzHpack { | ||||
|         } | ||||
|  | ||||
|         // Actual test run headers | ||||
|         let num: usize = rng.gen_range(40, 500); | ||||
|         let num: usize = rng.gen_range(40..500); | ||||
|  | ||||
|         let mut frames: Vec<HeaderFrame> = vec![]; | ||||
|         let mut added = 0; | ||||
|  | ||||
|         let skew: i32 = rng.gen_range(1, 5); | ||||
|         let skew: i32 = rng.gen_range(1..5); | ||||
|  | ||||
|         // Rough number of headers to add | ||||
|         while added < num { | ||||
| @@ -72,24 +74,24 @@ impl FuzzHpack { | ||||
|                 headers: vec![], | ||||
|             }; | ||||
|  | ||||
|             match rng.gen_range(0, 20) { | ||||
|             match rng.gen_range(0..20) { | ||||
|                 0 => { | ||||
|                     // Two resizes | ||||
|                     let high = rng.gen_range(128, MAX_CHUNK * 2); | ||||
|                     let low = rng.gen_range(0, high); | ||||
|                     let high = rng.gen_range(128..MAX_CHUNK * 2); | ||||
|                     let low = rng.gen_range(0..high); | ||||
|  | ||||
|                     frame.resizes.extend(&[low, high]); | ||||
|                 } | ||||
|                 1..=3 => { | ||||
|                     frame.resizes.push(rng.gen_range(128, MAX_CHUNK * 2)); | ||||
|                     frame.resizes.push(rng.gen_range(128..MAX_CHUNK * 2)); | ||||
|                 } | ||||
|                 _ => {} | ||||
|             } | ||||
|  | ||||
|             let mut is_name_required = true; | ||||
|  | ||||
|             for _ in 0..rng.gen_range(1, (num - added) + 1) { | ||||
|                 let x: f64 = rng.gen_range(0.0, 1.0); | ||||
|             for _ in 0..rng.gen_range(1..(num - added) + 1) { | ||||
|                 let x: f64 = rng.gen_range(0.0..1.0); | ||||
|                 let x = x.powi(skew); | ||||
|  | ||||
|                 let i = (x * source.len() as f64) as usize; | ||||
| @@ -177,31 +179,31 @@ impl FuzzHpack { | ||||
| } | ||||
|  | ||||
| impl Arbitrary for FuzzHpack { | ||||
|     fn arbitrary<G: Gen>(g: &mut G) -> Self { | ||||
|         FuzzHpack::new(quickcheck::Rng::gen(g)) | ||||
|     fn arbitrary(_: &mut Gen) -> Self { | ||||
|         FuzzHpack::new(thread_rng().gen()) | ||||
|     } | ||||
| } | ||||
|  | ||||
| fn gen_header(g: &mut StdRng) -> Header<Option<HeaderName>> { | ||||
|     use http::{Method, StatusCode}; | ||||
|  | ||||
|     if g.gen_weighted_bool(10) { | ||||
|         match g.next_u32() % 5 { | ||||
|     if g.gen_ratio(1, 10) { | ||||
|         match g.gen_range(0u32..5) { | ||||
|             0 => { | ||||
|                 let value = gen_string(g, 4, 20); | ||||
|                 Header::Authority(to_shared(value)) | ||||
|             } | ||||
|             1 => { | ||||
|                 let method = match g.next_u32() % 6 { | ||||
|                 let method = match g.gen_range(0u32..6) { | ||||
|                     0 => Method::GET, | ||||
|                     1 => Method::POST, | ||||
|                     2 => Method::PUT, | ||||
|                     3 => Method::PATCH, | ||||
|                     4 => Method::DELETE, | ||||
|                     5 => { | ||||
|                         let n: usize = g.gen_range(3, 7); | ||||
|                         let n: usize = g.gen_range(3..7); | ||||
|                         let bytes: Vec<u8> = (0..n) | ||||
|                             .map(|_| g.choose(b"ABCDEFGHIJKLMNOPQRSTUVWXYZ").unwrap().clone()) | ||||
|                             .map(|_| *g.sample(Slice::new(b"ABCDEFGHIJKLMNOPQRSTUVWXYZ").unwrap())) | ||||
|                             .collect(); | ||||
|  | ||||
|                         Method::from_bytes(&bytes).unwrap() | ||||
| @@ -212,7 +214,7 @@ fn gen_header(g: &mut StdRng) -> Header<Option<HeaderName>> { | ||||
|                 Header::Method(method) | ||||
|             } | ||||
|             2 => { | ||||
|                 let value = match g.next_u32() % 2 { | ||||
|                 let value = match g.gen_range(0u32..2) { | ||||
|                     0 => "http", | ||||
|                     1 => "https", | ||||
|                     _ => unreachable!(), | ||||
| @@ -221,7 +223,7 @@ fn gen_header(g: &mut StdRng) -> Header<Option<HeaderName>> { | ||||
|                 Header::Scheme(to_shared(value.to_string())) | ||||
|             } | ||||
|             3 => { | ||||
|                 let value = match g.next_u32() % 100 { | ||||
|                 let value = match g.gen_range(0u32..100) { | ||||
|                     0 => "/".to_string(), | ||||
|                     1 => "/index.html".to_string(), | ||||
|                     _ => gen_string(g, 2, 20), | ||||
| @@ -237,14 +239,14 @@ fn gen_header(g: &mut StdRng) -> Header<Option<HeaderName>> { | ||||
|             _ => unreachable!(), | ||||
|         } | ||||
|     } else { | ||||
|         let name = if g.gen_weighted_bool(10) { | ||||
|         let name = if g.gen_ratio(1, 10) { | ||||
|             None | ||||
|         } else { | ||||
|             Some(gen_header_name(g)) | ||||
|         }; | ||||
|         let mut value = gen_header_value(g); | ||||
|  | ||||
|         if g.gen_weighted_bool(30) { | ||||
|         if g.gen_ratio(1, 30) { | ||||
|             value.set_sensitive(true); | ||||
|         } | ||||
|  | ||||
| @@ -255,84 +257,86 @@ fn gen_header(g: &mut StdRng) -> Header<Option<HeaderName>> { | ||||
| fn gen_header_name(g: &mut StdRng) -> HeaderName { | ||||
|     use http::header; | ||||
|  | ||||
|     if g.gen_weighted_bool(2) { | ||||
|         g.choose(&[ | ||||
|             header::ACCEPT, | ||||
|             header::ACCEPT_CHARSET, | ||||
|             header::ACCEPT_ENCODING, | ||||
|             header::ACCEPT_LANGUAGE, | ||||
|             header::ACCEPT_RANGES, | ||||
|             header::ACCESS_CONTROL_ALLOW_CREDENTIALS, | ||||
|             header::ACCESS_CONTROL_ALLOW_HEADERS, | ||||
|             header::ACCESS_CONTROL_ALLOW_METHODS, | ||||
|             header::ACCESS_CONTROL_ALLOW_ORIGIN, | ||||
|             header::ACCESS_CONTROL_EXPOSE_HEADERS, | ||||
|             header::ACCESS_CONTROL_MAX_AGE, | ||||
|             header::ACCESS_CONTROL_REQUEST_HEADERS, | ||||
|             header::ACCESS_CONTROL_REQUEST_METHOD, | ||||
|             header::AGE, | ||||
|             header::ALLOW, | ||||
|             header::ALT_SVC, | ||||
|             header::AUTHORIZATION, | ||||
|             header::CACHE_CONTROL, | ||||
|             header::CONNECTION, | ||||
|             header::CONTENT_DISPOSITION, | ||||
|             header::CONTENT_ENCODING, | ||||
|             header::CONTENT_LANGUAGE, | ||||
|             header::CONTENT_LENGTH, | ||||
|             header::CONTENT_LOCATION, | ||||
|             header::CONTENT_RANGE, | ||||
|             header::CONTENT_SECURITY_POLICY, | ||||
|             header::CONTENT_SECURITY_POLICY_REPORT_ONLY, | ||||
|             header::CONTENT_TYPE, | ||||
|             header::COOKIE, | ||||
|             header::DNT, | ||||
|             header::DATE, | ||||
|             header::ETAG, | ||||
|             header::EXPECT, | ||||
|             header::EXPIRES, | ||||
|             header::FORWARDED, | ||||
|             header::FROM, | ||||
|             header::HOST, | ||||
|             header::IF_MATCH, | ||||
|             header::IF_MODIFIED_SINCE, | ||||
|             header::IF_NONE_MATCH, | ||||
|             header::IF_RANGE, | ||||
|             header::IF_UNMODIFIED_SINCE, | ||||
|             header::LAST_MODIFIED, | ||||
|             header::LINK, | ||||
|             header::LOCATION, | ||||
|             header::MAX_FORWARDS, | ||||
|             header::ORIGIN, | ||||
|             header::PRAGMA, | ||||
|             header::PROXY_AUTHENTICATE, | ||||
|             header::PROXY_AUTHORIZATION, | ||||
|             header::PUBLIC_KEY_PINS, | ||||
|             header::PUBLIC_KEY_PINS_REPORT_ONLY, | ||||
|             header::RANGE, | ||||
|             header::REFERER, | ||||
|             header::REFERRER_POLICY, | ||||
|             header::REFRESH, | ||||
|             header::RETRY_AFTER, | ||||
|             header::SERVER, | ||||
|             header::SET_COOKIE, | ||||
|             header::STRICT_TRANSPORT_SECURITY, | ||||
|             header::TE, | ||||
|             header::TRAILER, | ||||
|             header::TRANSFER_ENCODING, | ||||
|             header::USER_AGENT, | ||||
|             header::UPGRADE, | ||||
|             header::UPGRADE_INSECURE_REQUESTS, | ||||
|             header::VARY, | ||||
|             header::VIA, | ||||
|             header::WARNING, | ||||
|             header::WWW_AUTHENTICATE, | ||||
|             header::X_CONTENT_TYPE_OPTIONS, | ||||
|             header::X_DNS_PREFETCH_CONTROL, | ||||
|             header::X_FRAME_OPTIONS, | ||||
|             header::X_XSS_PROTECTION, | ||||
|         ]) | ||||
|         .unwrap() | ||||
|     if g.gen_ratio(1, 2) { | ||||
|         g.sample( | ||||
|             Slice::new(&[ | ||||
|                 header::ACCEPT, | ||||
|                 header::ACCEPT_CHARSET, | ||||
|                 header::ACCEPT_ENCODING, | ||||
|                 header::ACCEPT_LANGUAGE, | ||||
|                 header::ACCEPT_RANGES, | ||||
|                 header::ACCESS_CONTROL_ALLOW_CREDENTIALS, | ||||
|                 header::ACCESS_CONTROL_ALLOW_HEADERS, | ||||
|                 header::ACCESS_CONTROL_ALLOW_METHODS, | ||||
|                 header::ACCESS_CONTROL_ALLOW_ORIGIN, | ||||
|                 header::ACCESS_CONTROL_EXPOSE_HEADERS, | ||||
|                 header::ACCESS_CONTROL_MAX_AGE, | ||||
|                 header::ACCESS_CONTROL_REQUEST_HEADERS, | ||||
|                 header::ACCESS_CONTROL_REQUEST_METHOD, | ||||
|                 header::AGE, | ||||
|                 header::ALLOW, | ||||
|                 header::ALT_SVC, | ||||
|                 header::AUTHORIZATION, | ||||
|                 header::CACHE_CONTROL, | ||||
|                 header::CONNECTION, | ||||
|                 header::CONTENT_DISPOSITION, | ||||
|                 header::CONTENT_ENCODING, | ||||
|                 header::CONTENT_LANGUAGE, | ||||
|                 header::CONTENT_LENGTH, | ||||
|                 header::CONTENT_LOCATION, | ||||
|                 header::CONTENT_RANGE, | ||||
|                 header::CONTENT_SECURITY_POLICY, | ||||
|                 header::CONTENT_SECURITY_POLICY_REPORT_ONLY, | ||||
|                 header::CONTENT_TYPE, | ||||
|                 header::COOKIE, | ||||
|                 header::DNT, | ||||
|                 header::DATE, | ||||
|                 header::ETAG, | ||||
|                 header::EXPECT, | ||||
|                 header::EXPIRES, | ||||
|                 header::FORWARDED, | ||||
|                 header::FROM, | ||||
|                 header::HOST, | ||||
|                 header::IF_MATCH, | ||||
|                 header::IF_MODIFIED_SINCE, | ||||
|                 header::IF_NONE_MATCH, | ||||
|                 header::IF_RANGE, | ||||
|                 header::IF_UNMODIFIED_SINCE, | ||||
|                 header::LAST_MODIFIED, | ||||
|                 header::LINK, | ||||
|                 header::LOCATION, | ||||
|                 header::MAX_FORWARDS, | ||||
|                 header::ORIGIN, | ||||
|                 header::PRAGMA, | ||||
|                 header::PROXY_AUTHENTICATE, | ||||
|                 header::PROXY_AUTHORIZATION, | ||||
|                 header::PUBLIC_KEY_PINS, | ||||
|                 header::PUBLIC_KEY_PINS_REPORT_ONLY, | ||||
|                 header::RANGE, | ||||
|                 header::REFERER, | ||||
|                 header::REFERRER_POLICY, | ||||
|                 header::REFRESH, | ||||
|                 header::RETRY_AFTER, | ||||
|                 header::SERVER, | ||||
|                 header::SET_COOKIE, | ||||
|                 header::STRICT_TRANSPORT_SECURITY, | ||||
|                 header::TE, | ||||
|                 header::TRAILER, | ||||
|                 header::TRANSFER_ENCODING, | ||||
|                 header::USER_AGENT, | ||||
|                 header::UPGRADE, | ||||
|                 header::UPGRADE_INSECURE_REQUESTS, | ||||
|                 header::VARY, | ||||
|                 header::VIA, | ||||
|                 header::WARNING, | ||||
|                 header::WWW_AUTHENTICATE, | ||||
|                 header::X_CONTENT_TYPE_OPTIONS, | ||||
|                 header::X_DNS_PREFETCH_CONTROL, | ||||
|                 header::X_FRAME_OPTIONS, | ||||
|                 header::X_XSS_PROTECTION, | ||||
|             ]) | ||||
|             .unwrap(), | ||||
|         ) | ||||
|         .clone() | ||||
|     } else { | ||||
|         let value = gen_string(g, 1, 25); | ||||
| @@ -349,9 +353,7 @@ fn gen_string(g: &mut StdRng, min: usize, max: usize) -> String { | ||||
|     let bytes: Vec<_> = (min..max) | ||||
|         .map(|_| { | ||||
|             // Chars to pick from | ||||
|             g.choose(b"ABCDEFGHIJKLMNOPQRSTUVabcdefghilpqrstuvwxyz----") | ||||
|                 .unwrap() | ||||
|                 .clone() | ||||
|             *g.sample(Slice::new(b"ABCDEFGHIJKLMNOPQRSTUVabcdefghilpqrstuvwxyz----").unwrap()) | ||||
|         }) | ||||
|         .collect(); | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user