Lowlevel

Lowlevel => Lowlevel-Coding => Thema gestartet von: OsDevNewbie am 10. January 2015, 19:17

Titel: Memoryleak im CDI-Treiber ISO9660
Beitrag von: OsDevNewbie am 10. January 2015, 19:17
Hallo,
ich glaube ich habe einen memoryleak im CDI-Treiber für das Dateisystem ISO9660 gefunden.
In der Funktion iso9660_fs_res_destroy wird der Speicher für die Struktur selber nie freigegeben:
int iso9660_fs_res_destroy(struct iso9660_fs_res *res) {
  debug("iso9660_fs_res_destroy(0x%x)\n",res);
  free(res->res.name);
  if (res->res.children!=NULL) {
    size_t i;
    struct iso9660_fs_res *child;
    for (i=0;(child = cdi_list_get(res->res.children,i));i++) iso9660_fs_res_destroy(child);
    cdi_list_destroy(res->res.children);
  }
  return 0;
}

Ich hoffe ich liege mit meiner Vermutung richtig.
Titel: Re: Memoryleak im CDI-Treiber ISO9660
Beitrag von: kevin am 10. January 2015, 21:50
Ja, ich glaube, du hast recht.
Titel: Re: Memoryleak im CDI-Treiber ISO9660
Beitrag von: OsDevNewbie am 10. January 2015, 22:01
Das bedeuted vor dem return muss noch ein free(res) stehen.
Kann mir jemand erklären wie das funktioniert mit dem Patchen? Ich verstehe das irgendwie nicht.
Titel: Re: Memoryleak im CDI-Treiber ISO9660
Beitrag von: kevin am 10. January 2015, 23:15
Vielleicht hilft dir das: http://www.lowlevel.eu/wiki/Týndur/Entwicklung#Entwicklungsstand_ver.C3.B6ffentlichen (http://www.lowlevel.eu/wiki/Týndur/Entwicklung#Entwicklungsstand_ver.C3.B6ffentlichen) (sinngemäß natürlich nur, statt tyndur-Repo und -Mailingliste nimmst du die von CDI).

Was dort nicht erwähnt ist, ist, dass du vermutlich nicht auf master, sondern einem separaten Branch arbeiten willst, wenn du lokale Patches committest. Bist du mit git soweit vertraut?

Außerdem musst du die Maillingliste abonniert haben, damit die Patches auch ankommen und nicht erst von einem Moderator freigeschaltet werden müssen. Aber ich glaube, das hast du ja inzwischen, oder?
Titel: Re: Memoryleak im CDI-Treiber ISO9660
Beitrag von: OsDevNewbie am 10. January 2015, 23:42
Danke für den Link. Jetzt verstehe ich es. Mit git kann ich soweit umgehen. Auf der Mailingliste bin ich auch registriert.
Titel: Re: Memoryleak im CDI-Treiber ISO9660
Beitrag von: OsDevNewbie am 13. January 2015, 16:05
Ich habe jetzt den Patch fertig, aber mein git weigert sich Es zu verschicken. Ich habe es so gemacht wie in der Anleitung, aber bei mir kommt dann nur der Fehler: "'AUTH' unknown command" oder so ähnlich. Oder es kommt der Fehler, dass der Benutzername oder das Passwort falsch sei.
Für den 2. Fehler habe ich den Grund gefunden, nämlich dass git Base64 nicht unterstützt.

Kann mir jemand helfen?
Titel: Re: Memoryleak im CDI-Treiber ISO9660
Beitrag von: kevin am 13. January 2015, 16:59
Die richtige Konfigration hängt natürlich davon ab, was für einen SMTP-Server du benutzt. Das Internet behauptet, dass dieser Fehler kommt, wenn du Benutzername/Passwort angegeben hast, aber der Server gar keinen haben will. Könnte das der Fall sein?

Oder womit ich früher mal Probleme hatte, war, dass irgendwelche Perl-Pakete gefehlt haben (perl-authen-sasl oder so), aber ich glaube, das ist mittlerweile in allen Distros gefixt und als Abhängigkeit eingetragen.
Titel: Re: Memoryleak im CDI-Treiber ISO9660
Beitrag von: OsDevNewbie am 13. January 2015, 17:09
Ich habe den Fehler gefunden. Ich musste noch ein "--smtp-encryption tls" einfügen. Jetzt sollte etwas angekommen sein.