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

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

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:
   trunk/source/libads/ldap_schema.c


Changeset:
Modified: trunk/source/libads/ldap_schema.c
===================================================================
--- trunk/source/libads/ldap_schema.c   2006-06-28 01:11:17 UTC (rev 16587)
+++ trunk/source/libads/ldap_schema.c   2006-06-28 01:21:49 UTC (rev 16588)
@@ -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