@@ -528,46 +528,113 @@ public void testMySQLANSIModeQuoteInjection() {
528528
529529 /**
530530 * Test of encodeForLDAP method, of class org.owasp.esapi.Encoder.
531+ *
532+ * Additional tests: https://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt
531533 */
532534 public void testEncodeForLDAP () {
533535 System .out .println ("encodeForLDAP" );
534536 Encoder instance = ESAPI .encoder ();
535537 assertEquals (null , instance .encodeForLDAP (null ));
536- assertEquals ("No special characters to escape" , "Hi This is a test #��" , instance .encodeForLDAP ("Hi This is a test #��" ));
537- assertEquals ("Zeros" , "Hi \\ 00" , instance .encodeForLDAP ("Hi \u0000 " ));
538- assertEquals ("LDAP Christams Tree" , "Hi \\ 28This\\ 29 = is \\ 2a a \\ 5c test # � � �" , instance .encodeForLDAP ("Hi (This) = is * a \\ test # � � �" ));
538+ assertEquals ("No special characters to escape" , "Hi This is a test" , instance .encodeForLDAP ("Hi This is a test" ));
539+ assertEquals ("No special characters to escape" , "Hi This is a test \u0007 f" , instance .encodeForLDAP ("Hi This is a test \u0007 f" ));
540+ assertEquals ("Special characters to escape" , "Hi This is a test \\ c2\\ 80" , instance .encodeForLDAP ("Hi This is a test \u0080 " ));
541+ assertEquals ("Special characters to escape" , "Hi This is a test \\ c3\\ bf" , instance .encodeForLDAP ("Hi This is a test \u00FF " ));
542+ assertEquals ("Special characters to escape" , "Hi This is a test \\ df\\ bf" , instance .encodeForLDAP ("Hi This is a test \u07FF " ));
543+ assertEquals ("Special characters to escape" , "Hi This is a test \\ e0\\ a0\\ 80" , instance .encodeForLDAP ("Hi This is a test \u0800 " ));
544+ assertEquals ("Special characters to escape" , "Hi This is a test \\ e0\\ a3\\ bf" , instance .encodeForLDAP ("Hi This is a test \u08FF " ));
545+ assertEquals ("Special characters to escape" , "Hi This is a test \\ e7\\ bf\\ bf" , instance .encodeForLDAP ("Hi This is a test \u7FFF " ));
546+ assertEquals ("Special characters to escape" , "Hi This is a test \\ e8\\ 80\\ 80" , instance .encodeForLDAP ("Hi This is a test \u8000 " ));
547+ assertEquals ("Special characters to escape" , "Hi This is a test \\ e8\\ bf\\ bf" , instance .encodeForLDAP ("Hi This is a test \u8FFF " ));
548+ assertEquals ("Special characters to escape" , "Hi This is a test \\ ef\\ bf\\ bf" , instance .encodeForLDAP ("Hi This is a test \uFFFF " ));
549+ assertEquals ("Special characters to escape" , "Hi This is a test #\\ ef\\ bf\\ bd\\ ef\\ bf\\ bd" , instance .encodeForLDAP ("Hi This is a test #��" ));
550+ assertEquals ("NUL" , "Hi \\ 00" , instance .encodeForLDAP ("Hi \u0000 " ));
551+ assertEquals ("LPAREN" , "Hi \\ 28" , instance .encodeForLDAP ("Hi (" ));
552+ assertEquals ("RPAREN" , "Hi \\ 29" , instance .encodeForLDAP ("Hi )" ));
553+ assertEquals ("ASTERISK" , "Hi \\ 2a" , instance .encodeForLDAP ("Hi *" ));
554+ assertEquals ("SLASH" , "Hi \\ 2f" , instance .encodeForLDAP ("Hi /" ));
555+ assertEquals ("ESC" , "Hi \\ 5c" , instance .encodeForLDAP ("Hi \\ " ));
556+ assertEquals ("LDAP Christams Tree" , "Hi \\ 28This\\ 29 = is \\ 2a a \\ 5c test # \\ ef\\ bf\\ bd \\ ef\\ bf\\ bd \\ ef\\ bf\\ bd" , instance .encodeForLDAP ("Hi (This) = is * a \\ test # � � �" ));
539557 assertEquals ("Hi \\ 28This\\ 29 =" , instance .encodeForLDAP ("Hi (This) =" ));
540558 assertEquals ("Forward slash for \\ 2fMicrosoft\\ 2f \\ 2fAD\\ 2f" , instance .encodeForLDAP ("Forward slash for /Microsoft/ /AD/" ));
559+ assertEquals ("RFC 4515, Section 4" , "(cn=Babs Jensen)" , "(cn=" + instance .encodeForLDAP ("Babs Jensen" ) + ")" );
541560 }
542561
543562 /**
544563 * Test of encodeForLDAP method with without encoding wildcard characters, of class org.owasp.esapi.Encoder.
564+ *
565+ * Additional tests: https://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt
545566 */
546567 public void testEncodeForLDAPWithoutEncodingWildcards () {
547568 System .out .println ("encodeForLDAPWithoutEncodingWildcards" );
548569 Encoder instance = ESAPI .encoder ();
549570 assertEquals (null , instance .encodeForLDAP (null , false ));
550- assertEquals ("No special characters to escape" , "Hi This is a test #��" , instance .encodeForLDAP ("Hi This is a test #��" , false ));
551- assertEquals ("Zeros" , "Hi \\ 00" , instance .encodeForLDAP ("Hi \u0000 " , false ));
552- assertEquals ("LDAP Christams Tree" , "Hi \\ 28This\\ 29 = is * a \\ 5c test # � � �" , instance .encodeForLDAP ("Hi (This) = is * a \\ test # � � �" , false ));
571+ assertEquals ("No special characters to escape" , "Hi This is a test" , instance .encodeForLDAP ("Hi This is a test" ));
572+ assertEquals ("No special characters to escape" , "Hi This is a test \u0007 f" , instance .encodeForLDAP ("Hi This is a test \u0007 f" , false ));
573+ assertEquals ("Special characters to escape" , "Hi This is a test \\ c2\\ 80" , instance .encodeForLDAP ("Hi This is a test \u0080 " , false ));
574+ assertEquals ("Special characters to escape" , "Hi This is a test \\ c3\\ bf" , instance .encodeForLDAP ("Hi This is a test \u00FF " , false ));
575+ assertEquals ("Special characters to escape" , "Hi This is a test \\ df\\ bf" , instance .encodeForLDAP ("Hi This is a test \u07FF " , false ));
576+ assertEquals ("Special characters to escape" , "Hi This is a test \\ e0\\ a0\\ 80" , instance .encodeForLDAP ("Hi This is a test \u0800 " , false ));
577+ assertEquals ("Special characters to escape" , "Hi This is a test \\ e0\\ a3\\ bf" , instance .encodeForLDAP ("Hi This is a test \u08FF " , false ));
578+ assertEquals ("Special characters to escape" , "Hi This is a test \\ e7\\ bf\\ bf" , instance .encodeForLDAP ("Hi This is a test \u7FFF " , false ));
579+ assertEquals ("Special characters to escape" , "Hi This is a test \\ e8\\ 80\\ 80" , instance .encodeForLDAP ("Hi This is a test \u8000 " , false ));
580+ assertEquals ("Special characters to escape" , "Hi This is a test \\ e8\\ bf\\ bf" , instance .encodeForLDAP ("Hi This is a test \u8FFF " , false ));
581+ assertEquals ("Special characters to escape" , "Hi This is a test \\ ef\\ bf\\ bf" , instance .encodeForLDAP ("Hi This is a test \uFFFF " , false ));
582+ assertEquals ("Special characters to escape" , "Hi This is a test #\\ ef\\ bf\\ bd\\ ef\\ bf\\ bd" , instance .encodeForLDAP ("Hi This is a test #��" , false ));
583+ assertEquals ("NUL" , "Hi \\ 00" , instance .encodeForLDAP ("Hi \u0000 " , false ));
584+ assertEquals ("LPAREN" , "Hi \\ 28" , instance .encodeForLDAP ("Hi (" , false ));
585+ assertEquals ("RPAREN" , "Hi \\ 29" , instance .encodeForLDAP ("Hi )" , false ));
586+ assertEquals ("ASTERISK" , "Hi *" , instance .encodeForLDAP ("Hi *" , false ));
587+ assertEquals ("SLASH" , "Hi \\ 2f" , instance .encodeForLDAP ("Hi /" , false ));
588+ assertEquals ("ESC" , "Hi \\ 5c" , instance .encodeForLDAP ("Hi \\ " , false ));
589+ assertEquals ("LDAP Christams Tree" , "Hi \\ 28This\\ 29 = is * a \\ 5c test # \\ ef\\ bf\\ bd \\ ef\\ bf\\ bd \\ ef\\ bf\\ bd" , instance .encodeForLDAP ("Hi (This) = is * a \\ test # � � �" , false ));
553590 assertEquals ("Forward slash for \\ 2fMicrosoft\\ 2f \\ 2fAD\\ 2f" , instance .encodeForLDAP ("Forward slash for /Microsoft/ /AD/" ));
591+ assertEquals ("RFC 4515, Section 4" , "(&(objectClass=Person)(|(sn=Jensen)(cn=Babs J*)))" ,
592+ "(&(objectClass=" + instance .encodeForLDAP ("Person" ) + ")(|(sn=" + instance .encodeForLDAP ("Jensen" ) + ")(cn=" + instance .encodeForLDAP ("Babs J*" , false ) + ")))" );
593+ assertEquals ("RFC 4515, Section 4" , "(o=univ*of*mich*)" ,
594+ "(o=" + instance .encodeForLDAP ("univ*of*mich*" , false ) + ")" );
554595 }
555596
556597 /**
557598 * Test of encodeForDN method, of class org.owasp.esapi.Encoder.
599+ *
600+ * Additional tests: https://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-test.txt
558601 */
559602 public void testEncodeForDN () {
560603 System .out .println ("encodeForDN" );
561604 Encoder instance = ESAPI .encoder ();
562605 assertEquals (null , instance .encodeForDN (null ));
563- assertEquals ("No special characters to escape" , "Hello�" , instance .encodeForDN ("Hello�" ));
564- assertEquals ("leading #" , "\\ # Hello�" , instance .encodeForDN ("# Hello�" ));
565- assertEquals ("leading space" , "\\ Hello�" , instance .encodeForDN (" Hello�" ));
566- assertEquals ("trailing space" , "Hello�\\ " , instance .encodeForDN ("Hello� " ));
606+ assertEquals ("No special characters to escape" , "Hello" , instance .encodeForDN ("Hello" ));
607+ assertEquals ("No special characters to escape" , "Hello \u0007 f" , instance .encodeForDN ("Hello \u0007 f" ));
608+ assertEquals ("Special characters to escape" , "Hello \\ c2\\ 80" , instance .encodeForDN ("Hello \u0080 " ));
609+ assertEquals ("Special characters to escape" , "Hello \\ c3\\ bf" , instance .encodeForDN ("Hello \u00FF " ));
610+ assertEquals ("Special characters to escape" , "Hello \\ df\\ bf" , instance .encodeForDN ("Hello \u07FF " ));
611+ assertEquals ("Special characters to escape" , "Hello \\ e0\\ a0\\ 80" , instance .encodeForDN ("Hello \u0800 " ));
612+ assertEquals ("Special characters to escape" , "Hello \\ e0\\ a3\\ bf" , instance .encodeForLDAP ("Hello \u08FF " ));
613+ assertEquals ("Special characters to escape" , "Hello \\ e7\\ bf\\ bf" , instance .encodeForDN ("Hello \u7FFF " ));
614+ assertEquals ("Special characters to escape" , "Hello \\ e8\\ 80\\ 80" , instance .encodeForDN ("Hello \u8000 " ));
615+ assertEquals ("Special characters to escape" , "Hello \\ e8\\ bf\\ bf" , instance .encodeForDN ("Hello \u8FFF " ));
616+ assertEquals ("Special characters to escape" , "Hello \\ ef\\ bf\\ bf" , instance .encodeForDN ("Hello \uFFFF " ));
617+ assertEquals ("Special characters to escape" , "Hello\\ ef\\ bf\\ bd" , instance .encodeForDN ("Hello�" ));
618+ assertEquals ("NUL" , "Hi \\ 00" , instance .encodeForDN ("Hi \u0000 " ));
619+ assertEquals ("DQUOTE" , "Hi \\ \" " , instance .encodeForDN ("Hi \" " ));
620+ assertEquals ("PLUS" , "Hi \\ +" , instance .encodeForDN ("Hi +" ));
621+ assertEquals ("COMMA" , "Hi \\ ," , instance .encodeForDN ("Hi ," ));
622+ assertEquals ("SLASH" , "Hi \\ /" , instance .encodeForDN ("Hi /" ));
623+ assertEquals ("SEMI" , "Hi \\ ;" , instance .encodeForDN ("Hi ;" ));
624+ assertEquals ("LANGLE" , "Hi \\ <" , instance .encodeForDN ("Hi <" ));
625+ assertEquals ("RANGLE" , "Hi \\ >" , instance .encodeForDN ("Hi >" ));
626+ assertEquals ("ESC" , "Hi \\ \\ " , instance .encodeForDN ("Hi \\ " ));
627+ assertEquals ("leading #" , "\\ # Hello\\ ef\\ bf\\ bd" , instance .encodeForDN ("# Hello�" ));
628+ assertEquals ("leading space" , "\\ Hello\\ ef\\ bf\\ bd" , instance .encodeForDN (" Hello�" ));
629+ assertEquals ("trailing space" , "Hello\\ ef\\ bf\\ bd\\ " , instance .encodeForDN ("Hello� " ));
567630 assertEquals ("less than greater than" , "Hello\\ <\\ >" , instance .encodeForDN ("Hello<>" ));
568631 assertEquals ("only 3 spaces" , "\\ \\ " , instance .encodeForDN (" " ));
569632 assertEquals ("Christmas Tree DN" , "\\ Hello\\ \\ \\ + \\ , \\ \" World\\ \" \\ ;\\ " , instance .encodeForDN (" Hello\\ + , \" World\" ; " ));
570633 assertEquals ("Forward slash for \\ /Microsoft\\ / \\ /AD\\ /" , instance .encodeForDN ("Forward slash for /Microsoft/ /AD/" ));
634+ assertEquals ("RFC 4514, Section 4" , "CN=James \\ \" Jim\\ \" Smith\\ , III,DC=example,DC=net" ,
635+ "CN=" + instance .encodeForDN ("James \" Jim\" Smith, III" ) + ",DC=" + instance .encodeForDN ("example" ) + ",DC=" + instance .encodeForDN ("net" ));
636+ assertEquals ("RFC 4514, Section 4" , "CN=Lu\\ c4\\ 8di\\ c4\\ 87" ,
637+ "CN=" + instance .encodeForDN ("\u004C \u0075 \u010D \u0069 \u0107 " ));
571638 }
572639
573640 /**
0 commit comments