@@ -30,7 +30,10 @@ impl Limits {
3030 let default = Self :: new ( config) ;
3131 let overrides = Overrides :: for_crate ( conn, name) ?. unwrap_or_default ( ) ;
3232 Ok ( Self {
33- memory : overrides. memory . unwrap_or ( default. memory ) ,
33+ memory : overrides
34+ . memory
35+ . unwrap_or ( default. memory )
36+ . max ( default. memory ) ,
3437 targets : overrides
3538 . targets
3639 . or ( overrides. timeout . map ( |_| 1 ) )
@@ -72,10 +75,12 @@ mod test {
7275 wrapper ( |env| {
7376 let db = env. db ( ) ;
7477
78+ let defaults = Limits :: new ( & env. config ( ) ) ;
79+
7580 let krate = "hexponent" ;
7681 // limits work if no crate has limits set
7782 let hexponent = Limits :: for_crate ( & env. config ( ) , & mut db. conn ( ) , krate) ?;
78- assert_eq ! ( hexponent, Limits :: new ( & env . config ( ) ) ) ;
83+ assert_eq ! ( hexponent, defaults ) ;
7984
8085 Overrides :: save (
8186 & mut db. conn ( ) ,
@@ -91,17 +96,17 @@ mod test {
9196 hexponent,
9297 Limits {
9398 targets: 15 ,
94- ..Limits :: new ( & env . config ( ) )
99+ ..defaults
95100 }
96101 ) ;
97102
98103 // all limits work
99104 let krate = "regex" ;
100105 let limits = Limits {
101- memory : 100_000 ,
102- timeout : Duration :: from_secs ( 300 ) ,
106+ memory : defaults . memory * 2 ,
107+ timeout : defaults . timeout * 2 ,
103108 targets : 1 ,
104- ..Limits :: new ( & env . config ( ) )
109+ ..defaults
105110 } ;
106111 Overrides :: save (
107112 & mut db. conn ( ) ,
@@ -155,4 +160,27 @@ mod test {
155160 Ok ( ( ) )
156161 } ) ;
157162 }
163+
164+ #[ test]
165+ fn overrides_dont_lower_memory_limit ( ) {
166+ wrapper ( |env| {
167+ let db = env. db ( ) ;
168+
169+ let defaults = Limits :: new ( & env. config ( ) ) ;
170+
171+ Overrides :: save (
172+ & mut db. conn ( ) ,
173+ "krate" ,
174+ Overrides {
175+ memory : Some ( defaults. memory / 2 ) ,
176+ ..Overrides :: default ( )
177+ } ,
178+ ) ?;
179+
180+ let limits = Limits :: for_crate ( & env. config ( ) , & mut db. conn ( ) , "krate" ) ?;
181+ assert_eq ! ( limits, defaults) ;
182+
183+ Ok ( ( ) )
184+ } ) ;
185+ }
158186}
0 commit comments