diff options
Diffstat (limited to 'perl/lib/Wallet/Kadmin/AD.pm')
-rw-r--r-- | perl/lib/Wallet/Kadmin/AD.pm | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/perl/lib/Wallet/Kadmin/AD.pm b/perl/lib/Wallet/Kadmin/AD.pm index 9749a2a..a599142 100644 --- a/perl/lib/Wallet/Kadmin/AD.pm +++ b/perl/lib/Wallet/Kadmin/AD.pm @@ -272,15 +272,21 @@ sub get_account_id { $this_id =~ s/.*?=//xms; } else { my ($this_type, $this_cn) = split '/', $this_princ, 2; - if ($Wallet::Config::AD_SERVICE_PREFIX && $this_type = 'service') { - $this_cn = $Wallet::Config::AD_SERVICE_PREFIX . $this_cn; + my $max_len; + if ($this_type eq 'host') { + $max_len = $Wallet::Config::AD_SERVICE_LENGTH - 1; + } else { + $max_len = $Wallet::Config::AD_SERVICE_LENGTH; + if ($Wallet::Config::AD_SERVICE_PREFIX) { + $this_cn = $Wallet::Config::AD_SERVICE_PREFIX . $this_cn; + } } my $loop_limit = $Wallet::Config::AD_SERVICE_LIMIT; - if (length($this_cn)>20) { + if (length($this_cn)>$max_len) { my $cnt = 0; my $this_dn; my $suffix_size = length("$loop_limit"); - my $this_prefix = substr($this_cn, 0, 20-$suffix_size); + my $this_prefix = substr($this_cn, 0, $max_len - $suffix_size); my $this_format = "%0${suffix_size}i"; while ($cnt<$loop_limit) { $this_cn = $this_prefix . sprintf($this_format, $cnt); |