From 9323dc5ab18b31d388632e44f24a1c93dc8c5b83 Mon Sep 17 00:00:00 2001
From: Guido Schmechel <guido.schmechel@brandung.de>
Date: Sun, 19 Jan 2020 00:58:30 +0100
Subject: [PATCH] [BUGFIX] Task for IP anonymization respects mask

IP anonymization now takes the correct pattern when querying the database.
Depending on the mask to be shortened.

Resolves: #89788
Releases: master, 9.5
Change-Id: Ic09d2385b33434cc2d7553087c2014b190f9c339
Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/62992
Tested-by: TYPO3com <noreply@typo3.com>
Tested-by: Benni Mack <benni@typo3.org>
Tested-by: Georg Ringer <georg.ringer@gmail.com>
Reviewed-by: Benni Mack <benni@typo3.org>
Reviewed-by: Georg Ringer <georg.ringer@gmail.com>
---
 .../sysext/scheduler/Classes/Task/IpAnonymizationTask.php  | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/typo3/sysext/scheduler/Classes/Task/IpAnonymizationTask.php b/typo3/sysext/scheduler/Classes/Task/IpAnonymizationTask.php
index 97d9cc742116..8ca209f1da83 100644
--- a/typo3/sysext/scheduler/Classes/Task/IpAnonymizationTask.php
+++ b/typo3/sysext/scheduler/Classes/Task/IpAnonymizationTask.php
@@ -87,6 +87,11 @@ class IpAnonymizationTask extends AbstractTask
         if ($deleteTimestamp === false) {
             throw new \RuntimeException(self::class . ' misconfiguration: number of days could not be calculated for table ' . $table, 1524526354);
         }
+        if ($this->mask === 2) {
+            $notLikeMaskPattern = '%.0.0';
+        } else {
+            $notLikeMaskPattern = '%.0';
+        }
         try {
             $result = $queryBuilder
                 ->select('uid', $configuration['ipField'])
@@ -102,7 +107,7 @@ class IpAnonymizationTask extends AbstractTask
                     $queryBuilder->expr()->isNotNull($configuration['ipField']),
                     $queryBuilder->expr()->notLike(
                         $configuration['ipField'],
-                        $queryBuilder->createNamedParameter('%.0.0', \PDO::PARAM_STR)
+                        $queryBuilder->createNamedParameter($notLikeMaskPattern, \PDO::PARAM_STR)
                     ),
                     $queryBuilder->expr()->notLike(
                         $configuration['ipField'],
-- 
GitLab