Hotfix: Never lower mailbox quotas to ridiculous small/negative values. Never silently drop space below previous quota
Bernd Wurst

Bernd Wurst commited on 2018-01-05 14:52:18
Zeige 1 geänderte Dateien mit 5 Einfügungen und 1 Löschungen.

... ...
@@ -193,7 +193,7 @@ function get_max_mailboxquota($server, $oldquota) {
193 193
   $result = db_query("SELECT systemquota - (COALESCE(systemquota_used,0) + COALESCE(mailquota,0)) AS free FROM system.v_quota WHERE uid=:uid AND server=:server", array(":uid" => $uid, ":server" => $server));
194 194
   $item = $result->fetch();
195 195
   DEBUG("Free space: ".$item['free']." / Really: ".($item['free'] + ($oldquota - config('vmail_basequota'))));
196
-  return $item['free'] + ($oldquota - config('vmail_basequota'));
196
+  return max(0, $item['free'] + ($oldquota - config('vmail_basequota')));
197 197
 }
198 198
 
199 199
 
... ...
@@ -305,6 +305,10 @@ function save_vmail_account($account)
305 305
     $newquota = max((int) config('vmail_basequota'), (int) $account['quota']);
306 306
     if ($newquota > config('vmail_basequota') && $newquota > ($free+config('vmail_basequota'))) {
307 307
       $newquota = $free + config('vmail_basequota');
308
+      if ($account['quota'] >= $oldaccount['quota'] && $newquota < $oldaccount['quota']) {
309
+        # Wenn das Limit künstlich reduziert wurde, dann maximal auf den alten Wert.
310
+        $newquota = $oldaccount['quota'];
311
+      }
308 312
       warning("Ihr Speicherplatz reicht für diese Postfach-Größe nicht mehr aus. Ihr Postfach wurde auf {$newquota} MB reduziert. Bitte beachten Sie, dass damit Ihr Benutzerkonto keinen freien Speicherplatz mehr aufweist!");
309 313
     }
310 314
   
311 315