xpfilter 1.4212 & SuSE >= 12.1

29/12/2013 - 04:45 von JURKSCH | Report spam
Hallo,

nachdem mein nur für OpenXP reservierter Rechner mit SuSE 10.3
den Weg allen Vergànglichen angetreten hat, bin ich mit viel
Ärger mit ISDN-Karte und OpenXP auf einen Rechner mit Suse 12.1
umgestiegen. Hier steigen meine alten XPFilter-Binaries mit
Segfaults aus. Neukompilieren setzt einige Änderungen an den
Quellen voraus - aber die Segfaults bleiben. Bevor ich jetzt
auf die Suche gehe, woran das liegt, würde es mich interessieren,
ob jemand schon eine mit aktuellen Compilern übersetzbare und
laufende Version erzeugt hat.

MfG
Hermann
 

Lesen sie die antworten

#1 JURKSCH
29/12/2013 - 16:22 | Warnen spam
Die Fehlerquelle ist identifiziert. Sie liegt in der Datei xpfilter.cpp
nahe Zeile 4382 (Meine Zeilennummern müssen nicht mit dem Original
übereinstimmen) in Funktion XPFilter::ReadUserDB. Diese Funktion geht
davon aus, daß ein gelöschter Datensatz ansonsten gültige Daten
beinhalten müsse. Er versucht, auch die Namen gelöschter User zu
lesen.

// Lànge des Strings bestimmen, String einlesen
i = in.get();
//in.get();
for( p = area; i && ! in.eof(); i-- )
*p++ = in.get();
*p = '\0';

geht natürlich in die Hose, wenn i anfangs mit dem Wert -1 belegt
wird.
Es ist jetzt Temperamentsfrage, ob man in der for-Schleife i > 0 statt i
schreibt oder die gesamte Leserei und Debugausgabe gelöschter User
unterbindet.

Warum bei mir nach vielen Jahren eine Stringlànge von -1 bei einem
gelöschten User in user.db steht, ist mir auch nicht klar. Es könnte
daran liegen, daß das der letzte Eintrag war.

MfG
Hermann

P.S.: Mit den Schönheitskorrekturen, damit die Geschichte auch durch
einen modernen C++-Compiler làuft, bin ich nicht ganz fertig.
Auch wàre anschließend zu prüfen, ob das Programm dann auch noch
für Nonlinuxsysteme übersetzbar geblieben ist.

Ähnliche fragen