Author: jerry
Date: 2007-04-25 09:32:03 +0000 (Wed, 25 Apr 2007)
New Revision: 22509

WebSVN: 
http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=22509

Log:
Fix some memory corruption caused by calling free()
on talloc()'d memory when adding/removing members
from Local Groups.


Modified:
   branches/SAMBA_3_0/source/groupdb/mapping_tdb.c
   branches/SAMBA_3_0_25/source/groupdb/mapping_tdb.c


Changeset:
Modified: branches/SAMBA_3_0/source/groupdb/mapping_tdb.c
===================================================================
--- branches/SAMBA_3_0/source/groupdb/mapping_tdb.c     2007-04-25 02:43:23 UTC 
(rev 22508)
+++ branches/SAMBA_3_0/source/groupdb/mapping_tdb.c     2007-04-25 09:32:03 UTC 
(rev 22509)
@@ -455,11 +455,11 @@
 
        for (i=0; i<num; i++) {
                if (sid_compare(alias, &sids[i]) == 0) {
-                       SAFE_FREE(sids);
+                       TALLOC_FREE(sids);
                        return True;
                }
        }
-       SAFE_FREE(sids);
+       TALLOC_FREE(sids);
        return False;
 }
 
@@ -622,7 +622,7 @@
        }
 
        if (!found) {
-               SAFE_FREE(sids);
+               TALLOC_FREE(sids);
                return NT_STATUS_MEMBER_NOT_IN_ALIAS;
        }
 
@@ -641,7 +641,7 @@
        member_string = SMB_STRDUP("");
 
        if (member_string == NULL) {
-               SAFE_FREE(sids);
+               TALLOC_FREE(sids);
                return NT_STATUS_NO_MEMORY;
        }
 
@@ -653,7 +653,7 @@
 
                SAFE_FREE(s);
                if (member_string == NULL) {
-                       SAFE_FREE(sids);
+                       TALLOC_FREE(sids);
                        return NT_STATUS_NO_MEMORY;
                }
        }
@@ -663,7 +663,7 @@
        result = tdb_store_bystring(tdb, key, dbuf, 0) == 0 ?
                NT_STATUS_OK : NT_STATUS_ACCESS_DENIED;
 
-       SAFE_FREE(sids);
+       TALLOC_FREE(sids);
        SAFE_FREE(member_string);
 
        return result;

Modified: branches/SAMBA_3_0_25/source/groupdb/mapping_tdb.c
===================================================================
--- branches/SAMBA_3_0_25/source/groupdb/mapping_tdb.c  2007-04-25 02:43:23 UTC 
(rev 22508)
+++ branches/SAMBA_3_0_25/source/groupdb/mapping_tdb.c  2007-04-25 09:32:03 UTC 
(rev 22509)
@@ -466,11 +466,11 @@
 
        for (i=0; i<num; i++) {
                if (sid_compare(alias, &sids[i]) == 0) {
-                       SAFE_FREE(sids);
+                       TALLOC_FREE(sids);
                        return True;
                }
        }
-       SAFE_FREE(sids);
+       TALLOC_FREE(sids);
        return False;
 }
 
@@ -637,7 +637,7 @@
        }
 
        if (!found) {
-               SAFE_FREE(sids);
+               TALLOC_FREE(sids);
                return NT_STATUS_MEMBER_NOT_IN_ALIAS;
        }
 
@@ -659,7 +659,7 @@
        member_string = SMB_STRDUP("");
 
        if (member_string == NULL) {
-               SAFE_FREE(sids);
+               TALLOC_FREE(sids);
                return NT_STATUS_NO_MEMORY;
        }
 
@@ -671,7 +671,7 @@
 
                SAFE_FREE(s);
                if (member_string == NULL) {
-                       SAFE_FREE(sids);
+                       TALLOC_FREE(sids);
                        return NT_STATUS_NO_MEMORY;
                }
        }
@@ -682,7 +682,7 @@
        result = tdb_store(tdb, kbuf, dbuf, 0) == 0 ?
                NT_STATUS_OK : NT_STATUS_ACCESS_DENIED;
 
-       SAFE_FREE(sids);
+       TALLOC_FREE(sids);
        SAFE_FREE(member_string);
 
        return result;

Reply via email to