Mögliche Probleme mit SUPEE-10975


16

SUPEE-10975 wurde veröffentlicht. Es wäre toll zu wissen, ob jemand auf Probleme stößt, wenn er versucht, dies anzuwenden. Steht dies im Konflikt mit dem neuesten Patch, der 7.2-Unterstützung hinzufügt?

Bisher sind dies die geänderten Dateien, die ich sehen kann

app/code/core/Mage/Adminhtml/Block/Customer/Group/Edit.php
app/code/core/Mage/Adminhtml/Block/Newsletter/Template/Edit.php
app/code/core/Mage/Adminhtml/controllers/Cms/BlockController.php
app/code/core/Mage/Adminhtml/controllers/Customer/GroupController.php
app/code/core/Mage/Adminhtml/controllers/SitemapController.php
app/code/core/Mage/Adminhtml/controllers/System/BackupController.php
app/code/core/Mage/Captcha/Model/Observer.php
app/code/core/Mage/Captcha/Model/Zend.php
app/code/core/Mage/Captcha/etc/config.xml
app/code/core/Mage/Catalog/Model/Api2/Product/Image/Rest/Admin/V1.php
app/code/core/Mage/Catalog/Model/Product/Attribute/Media/Api.php
app/code/core/Mage/Cms/Model/Wysiwyg/Images/Storage.php
app/code/core/Mage/Core/etc/config.xml
app/code/core/Mage/Core/sql/core_setup/upgrade-1.6.0.7.1.1-1.6.0.7.1.2.php
app/code/core/Mage/Dataflow/Model/Convert/Container/Abstract.php
app/code/core/Mage/ImportExport/Model/Import/Entity/Customer.php
app/code/core/Mage/ImportExport/Model/Import/Entity/Customer/Address.php
app/code/core/Mage/Payment/etc/config.xml
app/code/core/Mage/Payment/etc/system.xml
app/code/core/Mage/Payment/sql/payment_setup/upgrade-1.6.0.0.1.1-1.6.0.0.1.2.php
app/code/core/Mage/Sendfriend/Block/Send.php
app/code/core/Mage/Wishlist/controllers/IndexController.php
app/code/core/Zend/Controller/Request/Http.php
app/design/adminhtml/default/default/template/cms/browser/content/files.phtml
app/design/frontend/base/default/layout/captcha.xml
app/design/frontend/base/default/template/wishlist/sharing.phtml
app/design/frontend/rwd/default/layout/page.xml
app/design/frontend/rwd/default/template/sendfriend/send.phtml
app/etc/modules/Mage_All.xml
app/etc/modules/Mage_Captcha.xml
app/locale/en_US/Mage_Wishlist.csv
js/lib/jquery/jquery-1.12.0.js
js/lib/jquery/jquery-1.12.0.min.js
js/lib/jquery/jquery-1.12.0.min.map
js/lib/jquery/jquery-1.12.1.js
js/lib/jquery/jquery-1.12.1.min.js
js/lib/jquery/jquery-1.12.1.min.map

Hat jemand Probleme mit diesen Änderungen?

Antworten:


12

Bisher bin ich auf die folgenden Probleme mit dem SUPEE-10975-Patch gestoßen:

  • Es ist nicht mehr möglich, Kundengruppen über den Admin zu löschen, da in der neuen Methode eine Return-Anweisung fehlt Mage_Adminhtml_Block_Customer_Group_Edit::getDeleteUrl(Problem von @ mikhail-chelevich). Dies ist der Fall, wenn geheime Schlüssel für den Administrator aktiviert sind. Dies ist die Standardeinstellung. Das Problem ist auch in 1.9.4.0 vorhanden. Dieses Problem wird durch den SUPEE-11043-Patch behoben, der nicht offiziell veröffentlicht wurde, aber als GitHub Gist verfügbar ist .
  • Das Mage_SendfriendModul kann nicht deaktiviert werden, ohne das Mage_CaptchaModul zu deaktivieren . Andernfalls tritt die folgende Module "Mage_Captcha" requires module "Mage_Sendfriend".Kernausnahme auf: (Problem von @zlep gefunden)
  • Die Änderungen an der sendfriend/send.phtmlVorlage, die im rwd/defaultDesign vorgenommen wurden, werden nicht im base/defaultDesign vorgenommen. Dies bedeutet, dass base/defaultdas CAPTCHA für das Thema nicht aktiviert werden kann und Namen und E-Mails von zuvor eingegebenen Empfängern nicht auf der Seite angezeigt werden (für den typischen Fall eines Formulars, das einen serverseitigen Validierungsfehler auslöst).
  • Die neue Methode Mage_Sendfriend_Block_Send::getRecipientsCountführt zu einer Inkompatibilität mit PHP 7.2, da beim Laden der Seite ohne Empfänger countein NULLWert bearbeitet wird (dies ist die Standardeinstellung beim Laden neuer Seiten). Dieses Problem wurde in 1.9.4.0 behoben.

Beachten Sie, dass ich den Patch nur für 1.9.3.10 überprüft habe, aber ich vermute, dass die Probleme in allen Versionen des Patches vorhanden sind.


11

Fehlende return parent::getDeleteUrl()in app / code / core / Mage / Adminhtml / Block / Kunde / Gruppe / edit.php

+    public function getDeleteUrl()
+    {
+        if (!Mage::getSingleton('adminhtml/url')->useSecretKey()) {
+            return $this->getUrl('*/*/delete', array(
+                $this->_objectId => $this->getRequest()->getParam($this->_objectId),
+                'form_key' => Mage::getSingleton('core/session')->getFormKey()
+            ));
+        } else {
+            parent::getDeleteUrl();
+        }
+    }

Für welche Magento-Version war das?
Danmentzer

1
Ich kann dieses Problem bestätigen: Es ist nicht mehr möglich, Kundengruppen über den Administrator zu löschen. Dies geschieht, wenn geheime Schlüssel für den Administrator aktiviert sind. Dies ist die Standardeinstellung. Dies ist im SUPEE-10975-Patch und auch in Magento Open Source 1.9.4.0 enthalten.
Aad Mathijssen

Ein zusätzlicher Patch wurde erstellt, um dieses Problem zu beheben. SUPEE-11043
Andrew

Ich kann nichts über SUPEE-11043 finden. Kannst du ein paar Quellen verlinken?
Darnok

1
Also sollte das parent::getDeleteUrl();Update in App / Code / Core / Magier / Adminhtml / Block / Kunde / Gruppe / Edit.php durchreturn parent::getDeleteUrl();
René Schep

8

Ich bin auf ein Problem mit dem 10975-Patch gestoßen. Nach einigen Nachforschungen war ich in der Lage, die Antwort darauf zu finden, wo der Patch durcheinander gebracht wurde und warum.

Um das Folgende zusammenzufassen, überprüfen Sie, ob Sie SUPEE 9767 V2 ordnungsgemäß gepatcht haben . Das ist die Wurzel meines Problems.

sh PATCH_SUPEE-10975_EE_v1.12.0.2_v1-2018-11-27-10-36-30.sh
Checking if patch can be applied/reverted successfully...
ERROR: Patch can't be applied/reverted successfully.

patching file app/code/core/Enterprise/PageCache/Model/Processor.php
Hunk #1 succeeded at 690 (offset -3 lines).
patching file app/code/core/Enterprise/Pci/etc/config.xml
patching file app/code/core/Enterprise/Wishlist/Block/Customer/Sharing.php
patching file app/code/core/Mage/Adminhtml/Block/Customer/Group/Edit.php
patching file app/code/core/Mage/Adminhtml/Block/Newsletter/Template/Edit.php
patching file app/code/core/Mage/Adminhtml/controllers/Cms/BlockController.php
patching file app/code/core/Mage/Adminhtml/controllers/Customer/GroupController.php
patching file app/code/core/Mage/Adminhtml/controllers/SitemapController.php
patching file app/code/core/Mage/Adminhtml/controllers/System/BackupController.php
patching file app/code/core/Mage/Captcha/Model/Observer.php
patching file app/code/core/Mage/Captcha/Model/Zend.php
patching file app/code/core/Mage/Captcha/etc/config.xml
patching file app/code/core/Mage/Catalog/Model/Api2/Product/Image/Rest/Admin/V1.php
patching file app/code/core/Mage/Catalog/Model/Product/Attribute/Media/Api.php
patching file app/code/core/Mage/Cms/Model/Wysiwyg/Images/Storage.php
patching file app/code/core/Mage/Core/etc/config.xml
Hunk #1 FAILED at 28.
1 out of 3 hunks FAILED -- saving rejects to file app/code/core/Mage/Core/etc/config.xml.rej
patching file app/code/core/Mage/Core/sql/core_setup/upgrade-1.6.0.2.1.2-1.6.0.2.1.3.php
patching file app/code/core/Mage/Dataflow/Model/Convert/Container/Abstract.php
patching file app/code/core/Mage/ImportExport/Model/Import/Entity/Customer.php
patching file app/code/core/Mage/ImportExport/Model/Import/Entity/Customer/Address.php
patching file app/code/core/Mage/Payment/etc/config.xml
patching file app/code/core/Mage/Payment/etc/system.xml
patching file app/code/core/Mage/Payment/sql/payment_setup/upgrade-1.6.0.0.1.1-1.6.0.0.1.2.php
patching file app/code/core/Mage/Wishlist/controllers/IndexController.php
patching file app/code/core/Zend/Controller/Request/Http.php
patching file app/design/adminhtml/default/default/template/cms/browser/content/files.phtml
patching file app/design/adminhtml/default/default/template/enterprise/cms/page/preview/revision.phtml
patching file app/design/adminhtml/default/default/template/enterprise/customersegment/report/detail/grid/container.phtml
patching file app/design/adminhtml/default/default/template/enterprise/giftregistry/customer/form.phtml
patching file app/design/adminhtml/default/default/template/enterprise/staging/log/information/merge.phtml
patching file app/design/adminhtml/default/default/template/enterprise/staging/log/information/rollback.phtml
patching file app/design/frontend/base/default/layout/captcha.xml
patching file app/design/frontend/base/default/template/wishlist/sharing.phtml
patching file app/design/frontend/enterprise/iphone/template/downloadable/sales/order/creditmemo/items/renderer/downloadable.phtml
patching file app/etc/modules/Mage_All.xml
patching file app/etc/modules/Mage_Captcha.xml
patching file app/locale/en_US/Enterprise_Wishlist.csv
patching file app/locale/en_US/Mage_Wishlist.csv
patching file js/enterprise/adminhtml/staging.js

Oben ist der Fehler, den ich getroffen habe, der für diese Datei spezifisch ist.

Magier / Core / etc / config.xml

Der Fehler kommt aus dieser Zeile des Patches.

diff --git app/code/core/Mage/Core/etc/config.xml app/code/core/Mage/Core/etc/config.xml
index 4aebdcdc2cf..4b28f2765a1 100644
--- app/code/core/Mage/Core/etc/config.xml
+++ app/code/core/Mage/Core/etc/config.xml
@@ -28,7 +28,7 @@
 <config>
     <modules>
         <Mage_Core>
-            <version>1.6.0.2.1.2</version>
+            <version>1.6.0.2.1.3</version>
         </Mage_Core>
     </modules>
     <global>

Die hier aufgelistete Version stimmt aufgrund des manuellen Patchens nicht richtig überein

SUPEE 9767 v2

Dieser Patch kam mit dieser Zeile, die ich beim manuellen Patchen verpasst habe.

diff --git app/code/core/Mage/Core/etc/config.xml app/code/core/Mage/Core/etc/config.xml
index 4a0ff1b..d0de702 100644
--- app/code/core/Mage/Core/etc/config.xml
+++ app/code/core/Mage/Core/etc/config.xml
@@ -28,7 +28,7 @@
 <config>
     <modules>
         <Mage_Core>
-            <version>1.6.0.2</version>
+            <version>1.6.0.2.1.2</version>
         </Mage_Core>
     </modules>
     <global>

5

Erstens, entschuldige das Duplikat von erejs Antwort , ich kann wegen meines Reputations-Scores weder kommentieren noch bearbeiten.

Der Patch erstellt hier eine neue Datei: app/code/core/Zend/Controller/Request/Http.php

Welches hinzugefügt wird, um diese Datei zu überschreiben: lib/Zend/Controller/Request/Http.php

Problem ist für Magento unter 1.9.0.0 (EE 1.14.0.0):

Diese Methode :

/**
 * Everything in REQUEST_URI before PATH_INFO
 * <form action="<?=$baseUrl?>/news/submit" method="POST"/>
 *
 * @return string
 */
public function getBaseUrl($raw = false)
{
    if (null === $this->_baseUrl) {
        $this->setBaseUrl();
    }

    return (($raw == false) ? urldecode($this->_baseUrl) : $this->_baseUrl);
}

Wird in der Magento Core-Datei überschrieben app/code/core/Mage/Core/Controller/Request/Http.php

public function getBaseUrl()
{
    $url = parent::getBaseUrl();
    $url = str_replace('\\', '/', $url);
    return $url;
}

Wofür es keine Argumente gibt.

Daher wird dieser strenge Hinweis auf jeder Website-URL, Front & Admin ausgelöst:

Strict Notice: Declaration of Mage_Core_Controller_Request_Http::getBaseUrl() should be compatible with Zend_Controller_Request_Http::getBaseUrl($raw = false) in /var/www/htdocs/app/code/core/Mage/Core/Controller/Request/Http.php on line 36

Wenn jemand weiß, ob eine Version dieses Patches in Arbeit ist, lassen Sie es mich bitte wissen.

Während Sie auf das Update warten, können Sie die Methode folgendermaßen neu definieren app/code/core/Mage/Core/Controller/Request/Http.php:

/**
 * @param bool $raw - Added manually to correct SUPEE-10975 oversight
 *      See /magento/251317/supee-10975-potential-issues
 *      for more information
 *
 * @return mixed|string
 */
public function getBaseUrl($raw = false)
{
    $url = parent::getBaseUrl($raw); // Argument added manually to correct SUPEE-10975 oversight
    $url = str_replace('\\', '/', $url);
    return $url;
}

4

Mit der Version 1.8.1.0 mussten wir nach dem Anwenden dieses Patches auch die app/code/core/Mage/Core/Controller/Request/Http.php::getBaseUrl()Funktion ändern

public function getBaseUrl($raw = false)
{
    $url = parent::getBaseUrl($raw);
    $url = str_replace('\\', '/', $url);
    return $url;
}

weil dieser Patch app/code/core/Zend/Controller/Request/Http.phpDatei hinzufügt und getBaseUrl()Funktion mit Parameter deklariert wird $raw = false.


Es sollte nicht notwendig sein, diese Funktion hinzuzufügen. Es wird nur immer standardmäßig nicht raw sein, da für jede Funktionalität, die diese Funktion aufruft, in 1.8.1 nicht $ raw gesetzt sein sollte.
René Schep

4

Ich habe ein Problem mit "Hunk # 1 FAILED at 28"

Ablehnungen werden angeblich in config.xml.rej gespeichert, aber diese Datei existiert nicht und es gibt auch keine Beschreibung, welcher Teil des Skripts in meinem Terminalfenster fehlgeschlagen ist. Grundsätzlich schlägt der Patch fehl und es gibt keinen Hinweis auf den Grund - zumindest nicht für einen Dummkopf wie mich!

Beim ersten Ausführen hat der Patch versucht, drei nicht vorhandene jquery v 1.12.0-Dateien zu löschen. Ich habe diese ersetzt und den Patch erneut angewendet, aber jetzt schlägt er ohne nützliche Beschreibung fehl.

Magento 1.9.0.1 ist vollständig gepatcht, abgesehen vom PHP 7.2-Kompatibilitätsupdate. Es wird nicht gepatcht, es sei denn, ich kann es herausfinden oder jemand hier kann mir einen Hinweis geben (bitte!). Danke H

PS: Ich bin mir nicht sicher, ob mein Beitrag gegen die SE-Richtlinien verstößt. Ich beantworte die ursprüngliche Frage, bitte aber auch um Hilfe.


1
Ich bin auch auf dieses Problem gestoßen, da es mit dem Patch 9767 v2 zusammenhängt. Es fügt eine neue Versionsnummer zur Mage / Core / etc / config.xml hinzu. Sie müssen nur die aktuelle Versionsnummer hinzufügen. 1.2 Ich werde auch schreiben auch dafür eine antwort.
Danmentzer

3

Das Mage_BackupModul wird durch den Patch deaktiviert.

Dies wird in den offiziellen Versionshinweisen ( https://devdocs.magento.com/guides/m1x/ce19-ee114/ce1.9_release-notes.html#ce19-1940 ) erwähnt.

Die vorgeschlagene Lösung zum erneuten Aktivieren ist jedoch falsch:

("Alternativ können Sie eine dieser beiden Methoden verwenden, um Datenbanksicherungen zu aktivieren")

Sie müssen tatsächlich beide genannten Methoden verwenden, um es wieder vollständig zu aktivieren.


2
Denken Sie auch daran, dass Sie durch das erneute Aktivieren des Mage_Backup-Moduls folgende Probleme haben: "RCE (Remote Code Execution), XSS (Cross Site Scripting) und CSRF (Cross Site Request Forgery)."
René Schep

2

Es kann Probleme mit der korrekten Behandlung der Steuerberechnung geben .

Wie in vielen Ländern üblich, verwendet unser Kunde die Konfiguration " Preise inkl. Steuern " von Magento.

Nach dem Update von 1.9.3.10 auf 1.9.4.0 wurde die Steuer zusätzlich zu den Artikelpreisen, die bereits Steuern enthalten, zur Gesamtsumme in der Kasse hinzugefügt.

Ich habe das Problem durch eine Änderung der Konfiguration in der Datei app / code / core / Mage / Sales / etc / config.xml aufgespürt , wobei " msrp " zum Knoten sales / quote / totals / shipping / after hinzugefügt wurde .

Ich habe in den Versionshinweisen nichts in Bezug auf MSRP gefunden und hoffe, dass dies eine isolierte Änderung ohne Nebenwirkungen ist.

Meine Lösung war, diesen Knoten wieder auf seinen ursprünglichen Wert " Zwischensumme, Freeshipping, Tax_subtotal " ohne das " msrp " zu ändern . Das habe ich in der etc / config.xml meines eigenen Moduls gemacht.


1

Spezifisches Problem, aber wenn Sie Mage_Sendfriend deaktiviert haben (das zuvor ein Modul war, das Sie sicher deaktivieren konnten), wird ein Ausnahmefehler ausgegeben.


1
Sie haben Mage_Captcha von Mage_Sendfriend abhängig gemacht und nicht umgekehrt. Du musst also auch Mage_Captcha deaktivieren, um Mage_Sendfriend zu deaktivieren. Was möglicherweise nicht das ist, was Sie wollen, weil es alle Magento-Standard-Recaptchas deaktiviert
René Schep

0

Ich habe heute versucht, ein Upgrade von Magento CE 1.9.3.10 auf 1.9.4.0 durchzuführen, und es sind mehrere Fehler aufgetreten. Zum Glück hat es die Installation nicht durcheinander gebracht. Nach der Installation habe ich den gefürchteten - Internal Server Error bekommen. Ich wurde ausgesperrt und musste alle meine Datei- und Ordnerberechtigungen über SSH zurücksetzen und die maintenance.flag entfernen. Ich habe dann den Cache neu indiziert und wieder aktiviert. Außerdem musste ich zu meiner alten .htaccess-Datei im Root- und Download-Ordner zurückkehren. Sie sind sich nicht sicher, welche Korrekturmaßnahme erforderlich ist, um eine erfolgreiche Installation zu erzielen. Ich habe vergessen, den Text aus dem Befehlszeilenfenster zu kopieren. Daher kann ich nicht alle Fehler posten. Was ich gesehen habe, waren inkompatible Nachrichten.


1
Ich glaube nicht, dass die "Upgrade" -Methode durch den Downloader jemals bei einer Installation funktioniert hat, die zumindest ein wenig bearbeitet wurde. Bin ich verrückt?
Kalvin Klien

Die "Upgrade" -Methode mit Magento Connect funktioniert bei mir jedes Mal. Ich benutze es für alle drei unserer M1-Sites und sie sind alle stark (wenn auch richtig) angepasst.
MagentoAaron

0

Wurde die geplante Sicherung entfernt? Kein geplanter Sicherungsabschnitt

Oder habe ich ein Problem? Warum wird dies in keinem der Notizen erwähnt? Dies scheint ein Muster für Magento zu sein, bei dem solche Änderungen nicht erwähnt werden, wenn Updates veröffentlicht werden.

UPDATE: Sieht so aus, als hätten sie es vollständig aus allen Versionen entfernt.

UPDATE: musste Backups anders machen. Bei Interesse habe ich hier einige CRON-Befehle gepostet: Backup-Strategie-Beitrag SUPEE-10975?


Ist das für eine bestimmte Version?
Razentic

2
Per twitter.com/ryanhoerr/status/1067819214314987520 Dies ist ein bestimmter Teil, den sie mit diesem Patch entfernt haben.
Danmentzer

Oh Gott ... ok Klassiker - ich muss aus einer anderen Quelle als Magento herausfinden, ob Features entfernt oder hinzugefügt wurden.
Kalvin Klien

1
@ KalvinKlien tatsächlich, erster Absatz in den Versionshinweisen besagt, dass es deaktiviert wurde; devdocs.magento.com/guides/m1x/ce19-ee114/…
Peter Jaap Blaakmeer

3
Die Änderung in diesem Patch ist, dass Mage_Backup standardmäßig deaktiviert ist und die Überprüfungen zur Ausführung des Codes strenger sind (z. B. wenn die Blockausgabe für das Modul deaktiviert ist, werden die Sicherungen nicht ausgeführt). Sie können das Modul weiterhin manuell wieder aktivieren, indem Sie false in true im Abschnitt Mage_Backup von app / etc / modules / Mage_All.xml ändern. Achten Sie darauf, dass das erneute Aktivieren der Sicherungsfunktion möglicherweise Folgendes ermöglicht: "Probleme mit der Remotecodeausführung (RCE), dem Cross-Site-Scripting (XSS) und dem Cross-Site-Request-Forgery (CSRF)."
René Schep

0

Auf einer Website, die eine benutzerdefinierte Multishop-Konfiguration eines früheren Entwicklers verwendete, ist ein Problem aufgetreten. Alle URLs für andere Geschäfte als das Basisgeschäft waren 404ing. Es wurde die Servervariable "HTTP_X_REWRITE_URL" / der HTTP-Header festgelegt, wodurch die von der Magento-Anforderung verarbeitete URL geändert wurde.

Diese Variable wird / wurde von \ Zend_Controller_Request_Http :: setRequestUri () verwendet, aber die neue Version in app / code / core / Zend / Controller / Request / Http.php verwendet dies nicht mehr. Die möglichen Korrekturen waren:

  • Setze $ _SERVER ["IIS_WasUrlRewritten"] auf '1' und setze stattdessen $ _SERVER ["UNENCODED_URL"]
  • Legen Sie stattdessen $ _SERVER ["REQUEST_URI"] fest

Beides würde wahrscheinlich funktionieren, aber ersteres hat wahrscheinlich weniger unbeabsichtigte Konsequenzen, da es näher am vorherigen System funktioniert.


0

Spezifischer Fehler bei der Zahlungsmethode ist nicht verfügbar

Wir haben eine Menge The requested Payment Method is not availableFehler von Magento bekommen. Alle auf Bestellungen, bei denen die Zahlungsmethode in der Produktrücksendung war ccsave, die von diesem Supee in entfernt wurde config.xml.

Der Fehler wird geworfen, weil Magento für eine Suche $key(die Zahlungsmethode ccsave in diesem Fall) , indem Sie die XML - Pfade: payment/ccsave/model. Wenn es es nicht findet, wird ein Fehler ausgegeben. Also machten wir einfach einen git checkout [insert supee commit]^ app/code/core/Mage/Payment/etc/config.xmlund drängten auf Master, um den Fehler zu beheben.

app / code / core / Mage / Payment / Helper / Data.php

public function getMethodInstance($code)
{
    $key = self::XML_PATH_PAYMENT_METHODS.'/'.$code.'/model';
    $class = Mage::getStoreConfig($key);
    return Mage::getModel($class);
}

app / code / core / Mage / Payment / etc / config.xml

<default>
  <payment>
      <ccsave>
        <model>payment/method_ccsave</model>
      </ccsave>
  </payment>
  ...
</default>


-5

Wahrscheinlich nicht, aber in Version 1.9.4.0 sind beide bereits implementiert.


1
Diese Stapelveröffentlichungen sind speziell dafür vorgesehen, dass andere Entwickler auf Probleme aufmerksam werden, bei denen Ihre Antwort auf diese Frage nicht hilfreich oder beschreibend ist. Ich würde das ehrlich gesagt einfach entfernen.
Danmentzer
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.