Created attachment 3261 [details] Fix UCS-C-Library Leaks: univention_config_get_int(): s_var=(char*)strndup(&(line[strlen(value)+2]), strlen(line) - (strlen(value)+2) - 1 ); - return atoi(s_var); univention_config_get_long(): - s_var=(char*)strndup(&(line[strlen(value)+2]), strlen(line) - (strlen(value)+2) - 1 ); - return atol(s_var); u_c_r_set_string() funktioniert nicht: - argv[2] = "univention-config-registry"; - argv[2] = "set"; Patch: !Fix memory leak !Fix u_c_r_set_string() +Dokumentation
Der Patch wurde in nochmals leicht überarbeiteter Form eingespielt. In tests/clib.c befindet sich ein einfacher Test, um die Implementierung zu testen. Dafür muß allerdings u-c bereits installiert sein, weil die Pfade /u/sbin/ucr hart kodiert sind. svn24261, univention-config-registry_7.0.7-1.334.201105181244 ChangeLog: \item Several memory leaks and implementation details in the C-library have been fixed (\ucsBug{22495}).
Die Speicherfreigabe im Fehlerfall ist jetzt korrekt. Die Asserts im clib-Testprogramm werden mit der aktuellen Version nicht getriggert. Der Changelog-Eintrag aus Kommentar 1 fehlte im SVN, den habe ich aber selbst commitet.
UCS 3.0-0 wurde veröffentlicht. Sollte der hier beschriebene Bug mit einer neueren Version von UCS erneut auftreten, so sollte dieser Bug dupliziert werden: "Clone This Bug"