Explorar o código

Resolves: 440474
Summary: Fixed memory leaks in memberOf plug-in.

Nathan Kinder %!s(int64=17) %!d(string=hai) anos
pai
achega
34f2b3b90f
Modificáronse 1 ficheiros con 9 adicións e 2 borrados
  1. 9 2
      ldap/servers/plugins/memberof/memberof.c

+ 9 - 2
ldap/servers/plugins/memberof/memberof.c

@@ -585,7 +585,7 @@ int memberof_postop_modify(Slapi_PBlock *pb)
 		/* get the mod set */
 		/* get the mod set */
 		slapi_pblock_get(pb, SLAPI_MODIFY_MODS, &mods);
 		slapi_pblock_get(pb, SLAPI_MODIFY_MODS, &mods);
 		smods = slapi_mods_new();
 		smods = slapi_mods_new();
-		slapi_mods_init_passin(smods, mods);
+		slapi_mods_init_byref(smods, mods);
 
 
 		next_mod = slapi_mod_new();
 		next_mod = slapi_mod_new();
 		smod = slapi_mods_get_first_smod(smods, next_mod);
 		smod = slapi_mods_get_first_smod(smods, next_mod);
@@ -653,6 +653,7 @@ int memberof_postop_modify(Slapi_PBlock *pb)
 		}
 		}
 
 
 		slapi_mod_free(&next_mod);
 		slapi_mod_free(&next_mod);
+		slapi_mods_free(&smods);
 	}
 	}
 
 
 	slapi_log_error( SLAPI_LOG_TRACE, MEMBEROF_PLUGIN_SUBSYSTEM,
 	slapi_log_error( SLAPI_LOG_TRACE, MEMBEROF_PLUGIN_SUBSYSTEM,
@@ -923,7 +924,7 @@ int memberof_modop_one_replace_r(Slapi_PBlock *pb, int mod_op, char *group_dn,
 			slapi_log_error( SLAPI_LOG_PLUGIN,
 			slapi_log_error( SLAPI_LOG_PLUGIN,
 				MEMBEROF_PLUGIN_SUBSYSTEM,
 				MEMBEROF_PLUGIN_SUBSYSTEM,
 				"memberof_modop_one_r: not processing memberOf "
 				"memberof_modop_one_r: not processing memberOf "
-				"operations  on self entry: %s\n", this_dn_val);
+				"operations on self entry: %s\n", this_dn_val);
 			slapi_value_free(&to_dn_val);
 			slapi_value_free(&to_dn_val);
 			slapi_value_free(&this_dn_val);     
 			slapi_value_free(&this_dn_val);     
 			goto bail;
 			goto bail;
@@ -1009,6 +1010,7 @@ int memberof_modop_one_replace_r(Slapi_PBlock *pb, int mod_op, char *group_dn,
 	}
 	}
 
 
 bail:
 bail:
+	slapi_entry_free(e);
 	return rc;
 	return rc;
 }
 }
 
 
@@ -1307,6 +1309,7 @@ int memberof_is_group_member(Slapi_Value *groupdn, Slapi_Value *memberdn)
 			rc = 0 == slapi_attr_value_find(
 			rc = 0 == slapi_attr_value_find(
 				attr, slapi_value_get_berval(memberdn));
 				attr, slapi_value_get_berval(memberdn));
 		}
 		}
+		slapi_entry_free(group_e);
 	}
 	}
 
 
 	slapi_sdn_free(&sdn);
 	slapi_sdn_free(&sdn);
@@ -1612,6 +1615,8 @@ int memberof_replace_list(Slapi_PBlock *pb, char *group_dn)
 				}
 				}
 			}
 			}
 		}
 		}
+		slapi_ch_free((void **)&pre_array);
+		slapi_ch_free((void **)&post_array);
 	}
 	}
 	
 	
 	return 0;
 	return 0;
@@ -1825,6 +1830,8 @@ int memberof_is_legit_member(Slapi_PBlock *pb, char *group_dn,
 	}
 	}
 
 
 bail:
 bail:
+	slapi_entry_free(group_e);
+	slapi_entry_free(opto_e);
 	slapi_ch_free_string(&filter_str);
 	slapi_ch_free_string(&filter_str);
 
 
 	slapi_log_error( SLAPI_LOG_TRACE, MEMBEROF_PLUGIN_SUBSYSTEM,
 	slapi_log_error( SLAPI_LOG_TRACE, MEMBEROF_PLUGIN_SUBSYSTEM,