Author: jra
Date: 2006-06-28 01:21:54 +0000 (Wed, 28 Jun 2006)
New Revision: 16589

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

Log:
Fix Klocwork #1999. Although it should be impossible to
get duplicate OID's returned in the oids_out list it is
still good programming practice to clear out a malloc'ed
string before re-writing it (especially in a loop).
Jeremy

Modified:
   branches/SAMBA_3_0/source/libads/ldap_schema.c


Changeset:
Modified: branches/SAMBA_3_0/source/libads/ldap_schema.c
===================================================================
--- branches/SAMBA_3_0/source/libads/ldap_schema.c      2006-06-28 01:21:49 UTC 
(rev 16588)
+++ branches/SAMBA_3_0/source/libads/ldap_schema.c      2006-06-28 01:21:54 UTC 
(rev 16589)
@@ -283,22 +283,27 @@
 
                if (strequal(ADS_ATTR_RFC2307_UIDNUMBER_OID, oids_out[i]) ||
                    strequal(ADS_ATTR_SFU_UIDNUMBER_OID, oids_out[i])) {
+                       SAFE_FREE(ads->schema.posix_uidnumber_attr);
                        ads->schema.posix_uidnumber_attr = 
SMB_STRDUP(names_out[i]);
                }
                if (strequal(ADS_ATTR_RFC2307_GIDNUMBER_OID, oids_out[i]) ||
                    strequal(ADS_ATTR_SFU_GIDNUMBER_OID, oids_out[i])) {
+                       SAFE_FREE(ads->schema.posix_gidnumber_attr);
                        ads->schema.posix_gidnumber_attr = 
SMB_STRDUP(names_out[i]);
                }
                if (strequal(ADS_ATTR_RFC2307_HOMEDIR_OID, oids_out[i]) ||
                    strequal(ADS_ATTR_SFU_HOMEDIR_OID, oids_out[i])) {
+                       SAFE_FREE(ads->schema.posix_homedir_attr);
                        ads->schema.posix_homedir_attr = 
SMB_STRDUP(names_out[i]);
                }
                if (strequal(ADS_ATTR_RFC2307_SHELL_OID, oids_out[i]) ||
                    strequal(ADS_ATTR_SFU_SHELL_OID, oids_out[i])) {
+                       SAFE_FREE(ads->schema.posix_shell_attr);
                        ads->schema.posix_shell_attr = SMB_STRDUP(names_out[i]);
                }
                if (strequal(ADS_ATTR_RFC2307_GECOS_OID, oids_out[i]) ||
                    strequal(ADS_ATTR_SFU_GECOS_OID, oids_out[i])) {
+                       SAFE_FREE(ads->schema.posix_gecos_attr);
                        ads->schema.posix_gecos_attr = SMB_STRDUP(names_out[i]);
                }
        }

Reply via email to