@@ -250,6 +250,10 @@ fn permission_test() {
250
250
pass ! ( [ "a\\ ,b ALL=ALL" ] , "a,b" => request! { root, root } , "server" ; "/bin/foo" ) ;
251
251
pass ! ( [ "\" a,b\" ALL=ALL" ] , "a,b" => request! { root, root } , "server" ; "/bin/foo" ) ;
252
252
pass ! ( [ "\" a\\ b\" ALL=ALL" ] , "a\\ b" => request! { root, root } , "server" ; "/bin/foo" ) ;
253
+
254
+ // special chacters
255
+ pass ! ( [ "[email protected] ALL=ALL" ] , "[email protected] " => request!
{ root
, root
} , "server" ; "/bin/foo" ) ;
256
+ pass ! ( [ "fnord$ ALL=ALL" ] , "fnord$" => request! { root, root } , "server" ; "/bin/foo" ) ;
253
257
}
254
258
255
259
#[ test]
@@ -346,6 +350,12 @@ fn invalid_directive() {
346
350
parse_eval :: < ast:: Sudo > ( "User_Alias, user Alias = user1, user2" ) ;
347
351
}
348
352
353
+ #[ test]
354
+ #[ should_panic]
355
+ fn invalid_username ( ) {
356
+ parse_eval :: < ast:: Sudo > ( "User_Alias FOO = $dollar" ) ;
357
+ }
358
+
349
359
#[ test]
350
360
fn directive_test ( ) {
351
361
let y = parse_eval :: < Spec < UserSpecifier > > ;
@@ -467,6 +477,12 @@ fn specific_defaults() {
467
477
assert ! ( try_parse_line( "Defaults >user !use_pty" ) . is_none( ) ) ;
468
478
}
469
479
480
+ #[ test]
481
+ fn at_sign_ambiguity ( ) {
482
+ assert ! ( parse_line( "Defaults@host env_keep=ALL" ) . is_decl( ) ) ;
483
+ assert ! ( parse_line( "defaults@host env_keep=ALL" ) . is_spec( ) ) ;
484
+ }
485
+
470
486
#[ test]
471
487
fn default_specific_test ( ) {
472
488
let sudoers = || {
0 commit comments