avoided a memory leak in the ubi code by deleting a mangled cache
authorAndrew Tridgell <tridge@samba.org>
Sun, 23 Apr 2000 07:40:13 +0000 (07:40 +0000)
committerAndrew Tridgell <tridge@samba.org>
Sun, 23 Apr 2000 07:40:13 +0000 (07:40 +0000)
entry before adding to ensure that we don't ever add a duplicate entry

this code can be removed when ubi gets fixed
(This used to be commit 062d79bf8ba5308803393c7b9140d1f77db3690f)

source3/smbd/mangle.c

index e47bcd896f61e00bee8f2d4b64e73174b46aec31..8ac91d49c81dbe36f205565fd52d9aa7f5cdd3c5 100644 (file)
@@ -465,7 +465,8 @@ static signed int cache_compare( ubi_btItemPtr ItemPtr, ubi_btNodePtr NodePtr )
  */
 static void cache_free_entry( ubi_trNodePtr WarrenZevon )
   {
-  free( WarrenZevon );
+         ZERO_STRUCTP(WarrenZevon);
+         free( WarrenZevon );
   } /* cache_free_entry */
 
 /* ************************************************************************** **
@@ -575,6 +576,15 @@ static void cache_mangled_name( char *mangled_name, char *raw_name )
   s2 = (char *)&(s1[mangled_len + 1]);
   (void)StrnCpy( s1, mangled_name, mangled_len );
   (void)StrnCpy( s2, raw_name,     raw_len );
+
+  /* possibly delete an old entry - this avoids a memory leak in the
+     ubi code to do with overwriting existing entries.
+
+     remove this test when ubi gets fixed */
+  if (ubi_cacheGet(mangled_cache, s1)) {
+         ubi_cacheDelete(mangled_cache, s1);
+  }
+
   ubi_cachePut( mangled_cache, i, new_entry, s1 );
   } /* cache_mangled_name */