Autor Thema: Memoryleak im CDI-Treiber ISO9660  (Gelesen 7485 mal)

OsDevNewbie

  • Beiträge: 282
    • Profil anzeigen
    • YourOS Kernel
Gespeichert
« 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.
Viele Grüsse
OsDevNewbie

Ein Computer ohne Betriebsystem ist nicht mehr wert als ein Haufen Schrott.
Ein Computer ist eine Maschine, die einem Lebewesen das kostbarste klaut, was sie selber nicht hat:
DIE ZEIT DES LEBENS

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #1 am: 10. January 2015, 21:50 »
Ja, ich glaube, du hast recht.
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

OsDevNewbie

  • Beiträge: 282
    • Profil anzeigen
    • YourOS Kernel
Gespeichert
« Antwort #2 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.
Viele Grüsse
OsDevNewbie

Ein Computer ohne Betriebsystem ist nicht mehr wert als ein Haufen Schrott.
Ein Computer ist eine Maschine, die einem Lebewesen das kostbarste klaut, was sie selber nicht hat:
DIE ZEIT DES LEBENS

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #3 am: 10. January 2015, 23:15 »
Vielleicht hilft dir das: 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?
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

OsDevNewbie

  • Beiträge: 282
    • Profil anzeigen
    • YourOS Kernel
Gespeichert
« Antwort #4 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.
Viele Grüsse
OsDevNewbie

Ein Computer ohne Betriebsystem ist nicht mehr wert als ein Haufen Schrott.
Ein Computer ist eine Maschine, die einem Lebewesen das kostbarste klaut, was sie selber nicht hat:
DIE ZEIT DES LEBENS

OsDevNewbie

  • Beiträge: 282
    • Profil anzeigen
    • YourOS Kernel
Gespeichert
« Antwort #5 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?
Viele Grüsse
OsDevNewbie

Ein Computer ohne Betriebsystem ist nicht mehr wert als ein Haufen Schrott.
Ein Computer ist eine Maschine, die einem Lebewesen das kostbarste klaut, was sie selber nicht hat:
DIE ZEIT DES LEBENS

kevin

  • Administrator
  • Beiträge: 2 767
    • Profil anzeigen
Gespeichert
« Antwort #6 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.
« Letzte Änderung: 13. January 2015, 17:01 von kevin »
Thou shalt not follow the NULL pointer, for chaos and madness await thee at its end.

OsDevNewbie

  • Beiträge: 282
    • Profil anzeigen
    • YourOS Kernel
Gespeichert
« Antwort #7 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.
Viele Grüsse
OsDevNewbie

Ein Computer ohne Betriebsystem ist nicht mehr wert als ein Haufen Schrott.
Ein Computer ist eine Maschine, die einem Lebewesen das kostbarste klaut, was sie selber nicht hat:
DIE ZEIT DES LEBENS

 

Einloggen