@@ -694,6 +694,34 @@ tap.test('modify DN excessive length (GH-480)', function (t) {
694
694
} )
695
695
} )
696
696
697
+ tap . test ( 'modify DN excessive superior length' , function ( t ) {
698
+ const { BerReader, BerWriter } = require ( 'asn1' )
699
+ const ModifyDNRequest = require ( '../lib/messages/moddn_request' )
700
+ const ber = new BerWriter ( )
701
+ const entry = 'cn=Test User,ou=A Long OU ,ou=Another Long OU ,ou=Another Long OU ,dc=acompany,DC=io'
702
+ const newSuperior = 'ou=A New Long OU , ou=Another New Long OU , ou=An OU , dc=acompany, dc=io'
703
+ const newRdn = entry . replace ( / ( .* ?) , .* / , '$1' )
704
+ const deleteOldRdn = true
705
+ const req = new ModifyDNRequest ( {
706
+ entry : entry ,
707
+ deleteOldRdn : deleteOldRdn ,
708
+ controls : [ ]
709
+ } )
710
+ req . newRdn = newRdn
711
+ req . newSuperior = newSuperior
712
+ req . _toBer ( ber )
713
+ const reader = new BerReader ( ber . buffer )
714
+ t . equal ( reader . readString ( ) , entry )
715
+ t . equal ( reader . readString ( ) , newRdn )
716
+ t . equal ( reader . readBoolean ( ) , deleteOldRdn )
717
+ t . equal ( reader . readByte ( ) , 0x80 )
718
+ reader . readLength ( )
719
+ t . equal ( reader . _len , newSuperior . length )
720
+ reader . _buf [ -- reader . _offset ] = 0x4
721
+ t . equal ( reader . readString ( ) , newSuperior )
722
+ t . end ( )
723
+ } )
724
+
697
725
tap . test ( 'search basic' , function ( t ) {
698
726
t . context . client . search ( 'cn=test, ' + SUFFIX , '(objectclass=*)' , function ( err , res ) {
699
727
t . error ( err )
0 commit comments