Nach SecurityUpdate Fehler im ve_guestbook [Gelöst]

  • DiePicknickerin DiePickni...
    Jedi-Ritter
    0 x
    130 Beiträge
    0 Hilfreiche Beiträge
    16. 06. 2009, 12:28

    Hallo,

    ich habe gerade nach dem Announce ein Gästebuch upgedated auf 2.7.2 von der Vorversion.

    Nun habe ich einen Fehler:

    Warning: Invalid argument supplied for foreach() in /xxx/typo3conf/ext/ve_guestbook/pi1/class.tx_veguestbook_pi1.php on line 694

    Die Zeile 694 ist das besagte removeBadHTML - das war doch eigentlich der Auslöser für das Update, oder?

    Was kann man da tun?


  • 1
  • daimos daimos
    Sternenflotten-Admiral
    0 x
    178 Beiträge
    0 Hilfreiche Beiträge
    16. 06. 2009, 12:36

    Stehe gerade vor dem gleichen Problem, bisher noch ohne Lösung.
    Die Meldung erscheint nur der Seite, in der man einen neuen Eintrag vornehmen kann.
    Es wird auch kein neuer mehr eingetragen.

  • DiePicknickerin DiePickni...
    Jedi-Ritter
    0 x
    130 Beiträge
    0 Hilfreiche Beiträge
    16. 06. 2009, 12:56

    Mhm, ich habe die foreach-Anweisung jetzt mal auskommentiert und damit die Sicherheitslücke wieder geöffnet ;-)

    Immerhin wird ein paar Zeilen tiefer ja wieder strtoupper ud stipslashes ausgeführt.

    Nach einer gescheiteren Lösung muss ich noch suchen.

  • Norman2k Norman2k
    Jedi-General
    0 x
    1657 Beiträge
    80 Hilfreiche Beiträge
    16. 06. 2009, 13:22

    Das liegt daran, dass das Array ($this->postvars) leer ist. Checkt einfach vorher, ob $this->postvars ein Array ist.
    Solange keine Werte vom Formular übergeben werden, muss ja auch nichts geprüft werden.

    1. <?php
    2. $this->postvars = t3lib_div::GPvar('tx_veguestbook_pi1');
    3.  
    4. if(is_array($this->postvars)) { //NEU
    5. foreach ($this->postvars as $key => $value) {
    6. $value = $this->local_cObj->removeBadHTML($value, array());
    7. $this->postvars[$key] = $value;
    8. }
    9. } //NEU
    10. ?>

  • DiePicknickerin DiePickni...
    Jedi-Ritter
    0 x
    130 Beiträge
    0 Hilfreiche Beiträge
    16. 06. 2009, 13:35

    Hatte ich dann auch schon raus, aber ganz vielen Dank für deine schnelle Lösung!

    Da muss es aber trotzdem noch ein Update der Extension geben, ne?

    Trotzdem, ich denke, das von dir hilft vielen erstmal, die jetzt direkt upgedatet haben und auf ihr Eintrags-Formular starren.

    #giggle#

  • feelx feelx
    Padawan
    0 x
    41 Beiträge
    0 Hilfreiche Beiträge
    16. 06. 2009, 14:20

    hoi ihrs!
    Respekt... :) Ihr seid ja schneller als die Liste :)

    Da siehts so - aber kommt ja aufs gleiche raus :)

    1. <?php
    2. if (!empty($this->postvars)) {
    3. > foreach ($this->postvars as $key => $value) {
    4. > $value =
    5. > $this->local_cObj->removeBadHTML($value, array());
    6. > $this->postvars[$key] = $value;
    7. > }
    8. > }
    9. ?>

    Und toll/vorbildlich, dass viele so schnell updaten :)
    LG und noch eine bugfreie Woche..., ähm... "schöne"
    Felix

  • Norman2k Norman2k
    Jedi-General
    0 x
    1657 Beiträge
    80 Hilfreiche Beiträge
    16. 06. 2009, 18:43

    Naja, aber was passiert wenn $this->postvars nicht leer ist aber auch kein array sondern z.B. ein String?
    Sehr unwahrscheinlich aber es würde die if-Anweisung passieren und dann schmeißt die foreach-Schleife wieder den Fehler.

    Wenn du mit is_array prüfst, würde ein String die if-Anweisung nicht passieren und ein leeres Array würde auch kein Fehler werfen, weil es ja ein Array ist

    Ach ja, das schreibt Mittwald dazu :D

    VORSICHT bei einem Update der Erweiterung "Modern Guestbook", da es hierbei
    aufgrund eines Programmierfehlers zu Fehlermeldungen auf der Website kommen
    kann. Sollte diese bei Ihnen geschehen, empfehlen wir Ihnen die Datei

    typo3conf/ext/ve_guestbook/pi1/class.tx_veguestbook_pi1.php

    folgendermaßen anzupassen:

    Zeile Code

    1. <?php
    2. 692 $this->postvars = t3lib_div::GPvar('tx_veguestbook_pi1');
    3. 693
    4. 694 if(is_array($this->postvars)) {
    5. 695 foreach ($this->postvars as $key => $value) {
    6. 696 $value = $this->local_cObj->removeBadHTML($value, array());
    7. 697 $this->postvars[$key] = $value;
    8. 698 }
    9. 699 }
    10. ?>

    Die Zeilen 694 und 699 sind dem Quellcode hinzu zufügen.

  • 1