Default IP address to `::` if `$_SERVER['REMOTE_ADDR']` is unavailable
authorTim Düsterhus <duesterhus@woltlab.com>
Tue, 20 Jul 2021 10:43:38 +0000 (12:43 +0200)
committerTim Düsterhus <duesterhus@woltlab.com>
Tue, 20 Jul 2021 10:50:05 +0000 (12:50 +0200)
The session list within the AccountSecurityPage relies on all sessions storing
valid IP addresses. When using `cli.php` no `REMOTE_ADDR` will be available and
an empty string was being stored. As the empty string is not a valid IP address
the `\wcf\util\IpAddress` class errored out.

Fix this issue by always returning a syntactically valid IP address from
`UserUtil::getIpAddress()`. `::` is being used which is commonly used to
indicate unknown IP addresses and must never appear within valid IP packets.

wcfsetup/install/files/lib/util/UserUtil.class.php

index 5bb6ca56d282fe5512323d19a33cc4702751d14f..9d1b774ec9f85d18165c99bcaf62c93322ed3084 100644 (file)
@@ -145,8 +145,8 @@ final class UserUtil
      */
     public static function getIpAddress()
     {
-        $REMOTE_ADDR = '';
-        if (isset($_SERVER['REMOTE_ADDR'])) {
+        $REMOTE_ADDR = '::';
+        if (!empty($_SERVER['REMOTE_ADDR'])) {
             $REMOTE_ADDR = $_SERVER['REMOTE_ADDR'];
         }