@@ -728,6 +728,34 @@ tap.test('modify DN excessive length (GH-480)', function (t) {
728
728
} )
729
729
} )
730
730
731
+ tap . test ( 'modify DN excessive superior length' , function ( t ) {
732
+ const { BerReader, BerWriter } = require ( 'asn1' )
733
+ const ModifyDNRequest = require ( '../lib/messages/moddn_request' )
734
+ const ber = new BerWriter ( )
735
+ const entry = 'cn=Test User,ou=A Long OU ,ou=Another Long OU ,ou=Another Long OU ,dc=acompany,DC=io'
736
+ const newSuperior = 'ou=A New Long OU , ou=Another New Long OU , ou=An OU , dc=acompany, dc=io'
737
+ const newRdn = entry . replace ( / ( .* ?) , .* / , '$1' )
738
+ const deleteOldRdn = true
739
+ const req = new ModifyDNRequest ( {
740
+ entry : entry ,
741
+ deleteOldRdn : deleteOldRdn ,
742
+ controls : [ ]
743
+ } )
744
+ req . newRdn = newRdn
745
+ req . newSuperior = newSuperior
746
+ req . _toBer ( ber )
747
+ const reader = new BerReader ( ber . buffer )
748
+ t . equal ( reader . readString ( ) , entry )
749
+ t . equal ( reader . readString ( ) , newRdn )
750
+ t . equal ( reader . readBoolean ( ) , deleteOldRdn )
751
+ t . equal ( reader . readByte ( ) , 0x80 )
752
+ reader . readLength ( )
753
+ t . equal ( reader . _len , newSuperior . length )
754
+ reader . _buf [ -- reader . _offset ] = 0x4
755
+ t . equal ( reader . readString ( ) , newSuperior )
756
+ t . end ( )
757
+ } )
758
+
731
759
tap . test ( 'search basic' , function ( t ) {
732
760
t . context . client . search ( 'cn=test, ' + SUFFIX , '(objectclass=*)' , function ( err , res ) {
733
761
t . error ( err )
0 commit comments