From 5c199783c2cdb4138e73c8c876eab3033ed23ae2 Mon Sep 17 00:00:00 2001
From: Erik Thuning <boooink@gmail.com>
Date: Mon, 26 Feb 2024 12:39:11 +0100
Subject: [PATCH] Added error handling for missing attributes in ldap lookups

---
 include/Ldap.php | 9 ++++++++-
 1 file changed, 8 insertions(+), 1 deletion(-)

diff --git a/include/Ldap.php b/include/Ldap.php
index f43d7f9..e4ba83b 100644
--- a/include/Ldap.php
+++ b/include/Ldap.php
@@ -15,12 +15,19 @@ class Ldap {
     }
 
     public function get_attribute($uid, $attribute) {
+        $attribute = strtolower($attribute);
         $data = $this->search("uid=$uid", $attribute);
         if($data['count'] !== 1) {
             $err = "LDAP search for '$uid' did not return exactly one result";
             throw new Exception($err);
         }
-        return $data[0][strtolower($attribute)][0];
+        $result = $data[0];
+        if(!in_array($attribute, $result) || !$result[$attribute][0] ) {
+            $err = "LDAP search for '$uid' did not return "
+                  ."a value for '$attribute'";
+            throw new Exception($err);
+        }
+        return $result[$attribute][0];
     }
 
     public function get_user($uid) {