From 9873dc30f248c3b7cc928e9ce163754409c6ed9f Mon Sep 17 00:00:00 2001
From: baeumma <none@none>
Date: Tue, 28 Feb 2012 10:43:43 +0100
Subject: [PATCH] expiration warning works only when pwdChangedTime is set

---
 ldap_NS.pl | 64 ++++++++++++++++++++++++++++++------------------------
 1 file changed, 36 insertions(+), 28 deletions(-)

diff --git a/ldap_NS.pl b/ldap_NS.pl
index 6f39498..1029d59 100755
--- a/ldap_NS.pl
+++ b/ldap_NS.pl
@@ -315,41 +315,49 @@ sub connect_ldap_snmc($$;$) {
       }
       elsif (defined($pp->{'warning'}->{'timeBeforeExpiration'})) {
 
-        my ($days, $hours, $minutes) = (gmtime($pp->{'warning'}->{'timeBeforeExpiration'}))[7,2,1];
-        my @values = ();
-        my @formats = ();
+        if ($pp->{'warning'}->{'timeBeforeExpiration'} > 0) {
 
-        if ($days == 1) {
-          push (@formats, 'one day');
-        }
-        elsif ($days > 1) {
-          push (@values, $days);
-          push (@formats, '%d days');
-        }
+          my ($days, $hours, $minutes) = (gmtime($pp->{'warning'}->{'timeBeforeExpiration'}))[7,2,1];
+          my @values = ();
+          my @formats = ();
 
-        if ($hours == 1) {
-          push (@formats, 'one hour');
-        }
-        elsif ($hours > 1) {
-          push (@values, $hours);
-          push (@formats, '%d hours');
-        }
+          if ($days == 1) {
+            push (@formats, 'one day');
+          }
+          elsif ($days > 1) {
+            push (@values, $days);
+            push (@formats, '%d days');
+          }
 
-        if ($minutes <= 1) {
-          push (@formats, 'one minute');
-        }
-        elsif ($minutes > 1) {
-          push (@values, $minutes);
-          push (@formats, '%d minutes');
-        }
+          if ($hours == 1) {
+            push (@formats, 'one hour');
+          }
+          elsif ($hours > 1) {
+            push (@values, $hours);
+            push (@formats, '%d hours');
+          }
+
+          if ($minutes <= 1) {
+            push (@formats, 'one minute');
+          }
+          elsif ($minutes > 1) {
+            push (@values, $minutes);
+            push (@formats, '%d minutes');
+          }
+
+          my $message = sprintf('Your password will expire in '.join(', ', @formats), @values);
 
-        my $message = sprintf('Your password will expire in '.join(', ', @formats), @values);
+          if ($days < 7) {
+            $session->param('error', $message);
+          }
+          else {
+            $session->param('message', $message);
+          }
 
-        if ($days < 7) {
-          $session->param('error', $message);
         }
         else {
-          $session->param('message', $message);
+          # no ppolicy, or no pwdChangedTime
+          $session->param('message', 'Your password never expires');
         }
 
       }
-- 
GitLab