summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--libopkg/file_util.c2
-rw-r--r--libopkg/hash_table.c33
-rw-r--r--libopkg/hash_table.h1
-rw-r--r--libopkg/nv_pair_list.c2
-rw-r--r--libopkg/opkg.c9
-rw-r--r--libopkg/opkg_cmd.c6
-rw-r--r--libopkg/opkg_conf.c4
-rw-r--r--libopkg/opkg_install.c2
-rw-r--r--libopkg/opkg_remove.c4
-rw-r--r--libopkg/opkg_utils.c6
-rw-r--r--libopkg/pkg.c12
-rw-r--r--libopkg/pkg_depends.c13
-rw-r--r--libopkg/pkg_dest_list.c2
-rw-r--r--libopkg/pkg_parse.c6
-rw-r--r--libopkg/pkg_src_list.c2
-rw-r--r--libopkg/pkg_vec.c9
-rw-r--r--libopkg/sprintf_alloc.c2
-rw-r--r--libopkg/str_list.c2
-rw-r--r--libopkg/void_list.c4
-rw-r--r--libopkg/xregex.c2
20 files changed, 75 insertions, 48 deletions
diff --git a/libopkg/file_util.c b/libopkg/file_util.c
index 6f249a2..fad4178 100644
--- a/libopkg/file_util.c
+++ b/libopkg/file_util.c
@@ -143,7 +143,7 @@ char *file_md5sum_alloc(const char *file_name)
char *md5sum_hex;
unsigned char md5sum_bin[md5sum_bin_len];
- md5sum_hex = malloc(md5sum_hex_len + 1);
+ md5sum_hex = calloc(1, md5sum_hex_len + 1);
if (md5sum_hex == NULL) {
fprintf(stderr, "%s: out of memory\n", __FUNCTION__);
return strdup("");
diff --git a/libopkg/hash_table.c b/libopkg/hash_table.c
index e7f5a92..713ecff 100644
--- a/libopkg/hash_table.c
+++ b/libopkg/hash_table.c
@@ -146,7 +146,7 @@ int hash_table_insert(hash_table_t *hash, const char *key, void *value)
return 0;
}
}
- hash_entry->next = (hash_entry_t *)malloc(sizeof(hash_entry_t));
+ hash_entry->next = (hash_entry_t *)calloc(1, sizeof(hash_entry_t));
if (!hash_entry->next) {
return -ENOMEM;
}
@@ -161,6 +161,37 @@ int hash_table_insert(hash_table_t *hash, const char *key, void *value)
return 0;
}
+int hash_table_remove(hash_table_t *hash, const char *key)
+{
+ int ndx= hash_index(hash, key);
+ hash_entry_t *hash_entry = hash->entries + ndx;
+ hash_entry_t *next_entry=NULL, *last_entry=NULL;
+ while (hash_entry)
+ {
+ if (hash_entry->key)
+ {
+ if (strcmp(key, hash_entry->key) == 0) {
+ free(hash_entry->key);
+ if (last_entry) {
+ last_entry->next = hash_entry->next;
+ free(hash_entry);
+ } else {
+ next_entry = hash_entry->next;
+ if (next_entry) {
+ memmove(hash_entry, next_entry, sizeof(hash_entry_t));
+ free(next_entry);
+ } else {
+ memset(hash_entry, 0 , sizeof(hash_entry_t));
+ }
+ }
+ return 1;
+ }
+ }
+ last_entry = hash_entry;
+ hash_entry = hash_entry->next;
+ }
+ return 0;
+}
void hash_table_foreach(hash_table_t *hash, void (*f)(const char *key, void *entry, void *data), void *data)
{
diff --git a/libopkg/hash_table.h b/libopkg/hash_table.h
index d4e8a3d..c065609 100644
--- a/libopkg/hash_table.h
+++ b/libopkg/hash_table.h
@@ -39,6 +39,7 @@ int hash_table_init(const char *name, hash_table_t *hash, int len);
void hash_table_deinit(hash_table_t *hash);
void *hash_table_get(hash_table_t *hash, const char *key);
int hash_table_insert(hash_table_t *hash, const char *key, void *value);
+int hash_table_remove(hash_table_t *has, const char *key);
void hash_table_foreach(hash_table_t *hash, void (*f)(const char *key, void *entry, void *data), void *data);
#endif /* _HASH_TABLE_H_ */
diff --git a/libopkg/nv_pair_list.c b/libopkg/nv_pair_list.c
index a3010e2..544d1e0 100644
--- a/libopkg/nv_pair_list.c
+++ b/libopkg/nv_pair_list.c
@@ -57,7 +57,7 @@ nv_pair_t *nv_pair_list_append(nv_pair_list_t *list, const char *name, const cha
int err;
/* freed in nv_pair_list_deinit */
- nv_pair_t *nv_pair = malloc(sizeof(nv_pair_t));
+ nv_pair_t *nv_pair = calloc(1, sizeof(nv_pair_t));
if (nv_pair == NULL) {
fprintf(stderr, "%s: out of memory\n", __FUNCTION__);
diff --git a/libopkg/opkg.c b/libopkg/opkg.c
index 7e67755..35ddb89 100644
--- a/libopkg/opkg.c
+++ b/libopkg/opkg.c
@@ -163,8 +163,7 @@ opkg_package_new ()
opkg_package_t *p;
- p = malloc (sizeof (opkg_package_t));
- memset (p, 0, sizeof (opkg_package_t));
+ p = calloc (1, sizeof (opkg_package_t));
return p;
}
@@ -189,9 +188,9 @@ opkg_new ()
opkg_t *opkg;
int err;
- opkg = malloc (sizeof (opkg_t));
+ opkg = calloc (1, sizeof (opkg_t));
- opkg->args = malloc (sizeof (args_t));
+ opkg->args = calloc (1, sizeof (args_t));
err = args_init (opkg->args);
if (err)
{
@@ -200,7 +199,7 @@ opkg_new ()
return NULL;
}
- opkg->conf = malloc (sizeof (opkg_conf_t));
+ opkg->conf = calloc (1, sizeof (opkg_conf_t));
err = opkg_conf_init (opkg->conf, opkg->args);
if (err)
{
diff --git a/libopkg/opkg_cmd.c b/libopkg/opkg_cmd.c
index 8386fce..cf1cc5d 100644
--- a/libopkg/opkg_cmd.c
+++ b/libopkg/opkg_cmd.c
@@ -316,7 +316,7 @@ static opkg_intercept_t opkg_prep_intercepts(opkg_conf_t *conf)
char *newpath;
int gen;
- ctx = malloc (sizeof (*ctx));
+ ctx = calloc (1, sizeof (*ctx));
oldpath = getenv ("PATH");
if (oldpath) {
ctx->oldpath = strdup (oldpath);
@@ -925,7 +925,7 @@ static int opkg_remove_cmd(opkg_conf_t *conf, int argc, char **argv)
available = pkg_vec_alloc();
pkg_hash_fetch_all_installed(&conf->pkg_hash, available);
for (i=0; i < argc; i++) {
- pkg_name = malloc(strlen(argv[i])+2);
+ pkg_name = calloc(1, strlen(argv[i])+2);
strcpy(pkg_name,argv[i]);
for (a=0; a < available->len; a++) {
pkg = available->pkgs[a];
@@ -1086,7 +1086,7 @@ static int opkg_files_cmd(opkg_conf_t *conf, int argc, char **argv)
size_t used_len;
char *buff ;
- buff = (char *)malloc(buff_len);
+ buff = (char *)calloc(1, buff_len);
if ( buff == NULL ) {
fprintf( stderr,"%s: Unable to allocate memory \n",__FUNCTION__);
return ENOMEM;
diff --git a/libopkg/opkg_conf.c b/libopkg/opkg_conf.c
index 99db505..c29e4c2 100644
--- a/libopkg/opkg_conf.c
+++ b/libopkg/opkg_conf.c
@@ -73,7 +73,7 @@ int opkg_init_options_array(const opkg_conf_t *conf, opkg_option_t **options)
{ NULL }
};
- *options = (opkg_option_t *)malloc(sizeof(tmp));
+ *options = (opkg_option_t *)calloc(1, sizeof(tmp));
if ( options == NULL ){
fprintf(stderr,"%s: Unable to allocate memory\n",__FUNCTION__);
return -1;
@@ -182,7 +182,7 @@ int opkg_conf_init(opkg_conf_t *conf, const args_t *args)
lists_dir = tmp;
}
- pending_dir = malloc(strlen(lists_dir)+strlen("/pending")+5);
+ pending_dir = calloc(1, strlen(lists_dir)+strlen("/pending")+5);
snprintf(pending_dir,strlen(lists_dir)+strlen("/pending") ,"%s%s",lists_dir,"/pending");
conf->lists_dir = strdup(lists_dir);
diff --git a/libopkg/opkg_install.c b/libopkg/opkg_install.c
index dc014d3..01d5875 100644
--- a/libopkg/opkg_install.c
+++ b/libopkg/opkg_install.c
@@ -597,7 +597,7 @@ static int pkg_remove_orphan_dependent(opkg_conf_t *conf, pkg_t *pkg, pkg_t *old
if (found)
continue;
d_str = old_pkg->depends_str[i];
- buf = malloc (strlen (d_str) + 1);
+ buf = calloc (1, strlen (d_str) + 1);
j=0;
while (d_str[j] != '\0' && d_str[j] != ' ') {
buf[j]=d_str[j];
diff --git a/libopkg/opkg_remove.c b/libopkg/opkg_remove.c
index 1debf21..3edb6de 100644
--- a/libopkg/opkg_remove.c
+++ b/libopkg/opkg_remove.c
@@ -54,7 +54,7 @@ int pkg_has_installed_dependents(opkg_conf_t *conf, abstract_pkg_t *parent_apkg,
/* if caller requested the set of installed dependents */
if (pdependents) {
int p = 0;
- abstract_pkg_t **dependents = (abstract_pkg_t **)malloc((n_installed_dependents+1)*sizeof(abstract_pkg_t *));
+ abstract_pkg_t **dependents = (abstract_pkg_t **)calloc((n_installed_dependents+1), sizeof(abstract_pkg_t *));
if ( dependents == NULL ){
fprintf(stderr,"%s Unable to allocate memory. REPORT THIS BUG IN BUGZILLA PLEASE\n", __FUNCTION__);
@@ -181,7 +181,7 @@ static int remove_autoinstalled (opkg_conf_t *conf, pkg_t *pkg)
int x = 0;
pkg_t *p;
d_str = pkg->depends_str[i];
- buffer = malloc (strlen (d_str) + 1);
+ buffer = calloc (1, strlen (d_str) + 1);
if (!buffer)
{
fprintf(stderr,"%s Unable to allocate memory.\n", __FUNCTION__);
diff --git a/libopkg/opkg_utils.c b/libopkg/opkg_utils.c
index de7712e..6a827e0 100644
--- a/libopkg/opkg_utils.c
+++ b/libopkg/opkg_utils.c
@@ -61,7 +61,7 @@ char **read_raw_pkgs_from_stream(FILE *fp)
int count = 0;
size_t size = 512;
- buf = malloc (size);
+ buf = calloc (1, size);
while (fgets(buf, size, fp)) {
while (strlen (buf) == (size - 1)
@@ -96,7 +96,7 @@ char *trim_alloc(char *line)
char *new;
char *dest, *src, *end;
- new = malloc(strlen(line) + 1);
+ new = calloc(1, strlen(line) + 1);
if ( new == NULL ){
fprintf(stderr,"%s: Unable to allocate memory\n",__FUNCTION__);
return NULL;
@@ -142,7 +142,7 @@ void push_error_list(struct errlist ** errors, char * msg){
struct errlist *err_lst_tmp;
- err_lst_tmp = malloc ( sizeof (err_lst_tmp) );
+ err_lst_tmp = calloc (1, sizeof (err_lst_tmp) );
err_lst_tmp->errmsg=strdup(msg) ;
err_lst_tmp->next = *errors;
*errors = err_lst_tmp;
diff --git a/libopkg/pkg.c b/libopkg/pkg.c
index cc15c9b..7ec3498 100644
--- a/libopkg/pkg.c
+++ b/libopkg/pkg.c
@@ -77,7 +77,7 @@ pkg_t *pkg_new(void)
{
pkg_t *pkg;
- pkg = malloc(sizeof(pkg_t));
+ pkg = calloc(1, sizeof(pkg_t));
if (pkg == NULL) {
fprintf(stderr, "%s: out of memory\n", __FUNCTION__);
return NULL;
@@ -429,7 +429,7 @@ abstract_pkg_t *abstract_pkg_new(void)
{
abstract_pkg_t * ab_pkg;
- ab_pkg = malloc(sizeof(abstract_pkg_t));
+ ab_pkg = calloc(1, sizeof(abstract_pkg_t));
if (ab_pkg == NULL) {
fprintf(stderr, "%s: out of memory\n", __FUNCTION__);
@@ -461,7 +461,7 @@ void set_flags_from_control(opkg_conf_t *conf, pkg_t *pkg){
char **raw =NULL;
char **raw_start=NULL;
- temp_str = (char *) malloc (strlen(pkg->dest->info_dir)+strlen(pkg->name)+12);
+ temp_str = (char *) calloc (1, strlen(pkg->dest->info_dir)+strlen(pkg->name)+12);
if (temp_str == NULL ){
opkg_message(conf, OPKG_INFO, "Out of memory in %s\n", __FUNCTION__);
return;
@@ -497,7 +497,7 @@ char * pkg_formatted_info(pkg_t *pkg )
char *line;
char * buff;
- buff = malloc(8192);
+ buff = calloc(1, 8192);
if (buff == NULL) {
fprintf(stderr, "%s: out of memory\n", __FUNCTION__);
return NULL;
@@ -1398,9 +1398,9 @@ int pkg_free_installed_files(pkg_t *pkg)
str_list_elt_t *iter;
pkg->installed_files_ref_cnt--;
- if (pkg->installed_files_ref_cnt > 0) {
+
+ if (pkg->installed_files_ref_cnt > 0)
return 0;
- }
if (pkg->installed_files) {
diff --git a/libopkg/pkg_depends.c b/libopkg/pkg_depends.c
index 49962ba..bbe7868 100644
--- a/libopkg/pkg_depends.c
+++ b/libopkg/pkg_depends.c
@@ -653,7 +653,7 @@ int buildProvides(hash_table_t * hash, abstract_pkg_t * ab_pkg, pkg_t * pkg)
if (pkg->provides)
return 0;
- pkg->provides = (abstract_pkg_t **)malloc(sizeof(abstract_pkg_t *) * (pkg->provides_count + 1));
+ pkg->provides = (abstract_pkg_t **)calloc((pkg->provides_count + 1), sizeof(abstract_pkg_t *));
if (pkg->provides == NULL) {
fprintf(stderr, "%s: out of memory\n", __FUNCTION__);
return -1 ;
@@ -683,8 +683,7 @@ int buildConflicts(hash_table_t * hash, abstract_pkg_t * ab_pkg, pkg_t * pkg)
if (!pkg->conflicts_count)
return 0;
- conflicts = pkg->conflicts = malloc(sizeof(compound_depend_t) *
- pkg->conflicts_count);
+ conflicts = pkg->conflicts = calloc(pkg->conflicts_count, sizeof(compound_depend_t));
if (conflicts == NULL) {
fprintf(stderr, "%s: out of memory\n", __FUNCTION__);
return -1;
@@ -705,7 +704,7 @@ int buildReplaces(hash_table_t * hash, abstract_pkg_t * ab_pkg, pkg_t * pkg)
if (!pkg->replaces_count)
return 0;
- pkg->replaces = (abstract_pkg_t **)malloc(sizeof(abstract_pkg_t *) * pkg->replaces_count);
+ pkg->replaces = (abstract_pkg_t **)calloc(pkg->replaces_count, sizeof(abstract_pkg_t *));
if (pkg->replaces == NULL) {
fprintf(stderr, "%s: out of memory\n", __FUNCTION__);
return -1;
@@ -743,7 +742,7 @@ int buildDepends(hash_table_t * hash, pkg_t * pkg)
if (0 && pkg->pre_depends_count)
fprintf(stderr, "pkg=%s pre_depends_count=%d depends_count=%d\n",
pkg->name, pkg->pre_depends_count, pkg->depends_count);
- depends = pkg->depends = malloc(sizeof(compound_depend_t) * count);
+ depends = pkg->depends = calloc(count, sizeof(compound_depend_t));
if (depends == NULL) {
fprintf(stderr, "%s: out of memory\n", __FUNCTION__);
return -1;
@@ -878,7 +877,7 @@ void buildDependedUponBy(pkg_t * pkg, abstract_pkg_t * ab_pkg)
static depend_t * depend_init(void)
{
- depend_t * d = (depend_t *)malloc(sizeof(depend_t));
+ depend_t * d = (depend_t *)calloc(1, sizeof(depend_t));
if ( d==NULL ){
fprintf(stderr, "%s: out of memory\n", __FUNCTION__);
return NULL;
@@ -913,7 +912,7 @@ static int parseDepends(compound_depend_t *compound_depend,
compound_depend->type = DEPEND;
compound_depend->possibility_count = num_of_ors + 1;
- possibilities = (depend_t **)malloc(sizeof(depend_t *) * (num_of_ors + 1));
+ possibilities = (depend_t **)calloc((num_of_ors + 1), sizeof(depend_t *) );
if (!possibilities)
return -ENOMEM;
compound_depend->possibilities = possibilities;
diff --git a/libopkg/pkg_dest_list.c b/libopkg/pkg_dest_list.c
index ac69312..48ca07f 100644
--- a/libopkg/pkg_dest_list.c
+++ b/libopkg/pkg_dest_list.c
@@ -59,7 +59,7 @@ pkg_dest_t *pkg_dest_list_append(pkg_dest_list_t *list, const char *name,
pkg_dest_t *pkg_dest;
/* freed in plg_dest_list_deinit */
- pkg_dest = malloc(sizeof(pkg_dest_t));
+ pkg_dest = calloc(1, sizeof(pkg_dest_t));
if (pkg_dest == NULL) {
fprintf(stderr, "%s: out of memory\n", __FUNCTION__);
return NULL;
diff --git a/libopkg/pkg_parse.c b/libopkg/pkg_parse.c
index af5ead7..76cd648 100644
--- a/libopkg/pkg_parse.c
+++ b/libopkg/pkg_parse.c
@@ -141,7 +141,7 @@ int parseVersion(pkg_t *pkg, char *raw)
if (!pkg->version)
{
- pkg->version= malloc(strlen(raw)+1);
+ pkg->version= calloc(1, strlen(raw)+1);
if ( pkg->version == NULL ) {
fprintf(stderr, "%s: out of memory \n", __FUNCTION__);
return ENOMEM;
@@ -230,7 +230,7 @@ int pkg_parse_raw(pkg_t *pkg, char ***raw, pkg_src_t *src, pkg_dest_t *dest)
pkg->priority = parseGenericFieldType("Priority", *lines);
else if(isGenericFieldType("Provides", *lines)){
/* Here we add the internal_use to align the off by one problem between provides_str and provides */
- provide = (char * ) malloc(strlen(*lines)+ 35 ); /* Preparing the space for the new opkg_internal_use_only */
+ provide = (char * ) calloc(1, strlen(*lines)+ 35 ); /* Preparing the space for the new opkg_internal_use_only */
if ( alterProvidesLine(*lines,provide) ){
return EINVAL;
}
@@ -373,7 +373,7 @@ out:;
if ( pkg_false_provides==1)
{
pkg->provides_count = 1;
- pkg->provides_str = malloc (sizeof (char*));
+ pkg->provides_str = calloc (1, sizeof (char*));
pkg->provides_str[0] = strdup ("opkg_internal_use_only");
}
diff --git a/libopkg/pkg_src_list.c b/libopkg/pkg_src_list.c
index 4f07ca4..c9f02f1 100644
--- a/libopkg/pkg_src_list.c
+++ b/libopkg/pkg_src_list.c
@@ -48,7 +48,7 @@ pkg_src_t *pkg_src_list_append(pkg_src_list_t *list,
int err;
/* freed in pkg_src_list_deinit */
- pkg_src_t *pkg_src = malloc(sizeof(pkg_src_t));
+ pkg_src_t *pkg_src = calloc(1, sizeof(pkg_src_t));
if (pkg_src == NULL) {
fprintf(stderr, "%s: out of memory\n", __FUNCTION__);
diff --git a/libopkg/pkg_vec.c b/libopkg/pkg_vec.c
index 2c1bcf9..56e29bc 100644
--- a/libopkg/pkg_vec.c
+++ b/libopkg/pkg_vec.c
@@ -185,12 +185,9 @@ void abstract_pkg_vec_free(abstract_pkg_vec_t *vec)
*/
void abstract_pkg_vec_insert(abstract_pkg_vec_t *vec, abstract_pkg_t *pkg)
{
-
- vec->pkgs =
- (abstract_pkg_t **)
- realloc(vec->pkgs, (vec->len + 1) * sizeof(abstract_pkg_t *));
- vec->pkgs[vec->len] = pkg;
- vec->len++;
+ vec->pkgs = (abstract_pkg_t **) realloc(vec->pkgs, (vec->len + 1) * sizeof(abstract_pkg_t *));
+ vec->pkgs[vec->len] = pkg;
+ vec->len++;
}
abstract_pkg_t * abstract_pkg_vec_get(abstract_pkg_vec_t *vec, int i)
diff --git a/libopkg/sprintf_alloc.c b/libopkg/sprintf_alloc.c
index 8c66994..30ab033 100644
--- a/libopkg/sprintf_alloc.c
+++ b/libopkg/sprintf_alloc.c
@@ -44,7 +44,7 @@ int sprintf_alloc(char **str, const char *fmt, ...)
/* ripped more or less straight out of PRINTF(3) */
- if ((new_str = malloc(size)) == NULL)
+ if ((new_str = calloc(1, size)) == NULL)
return -1;
*str = new_str;
diff --git a/libopkg/str_list.c b/libopkg/str_list.c
index d6f9209..1d21746 100644
--- a/libopkg/str_list.c
+++ b/libopkg/str_list.c
@@ -31,7 +31,7 @@ void str_list_elt_deinit(str_list_elt_t *elt)
str_list_t *str_list_alloc()
{
- str_list_t *list = (str_list_t *)malloc(sizeof(str_list_t));
+ str_list_t *list = (str_list_t *)calloc(1, sizeof(str_list_t));
if (list)
str_list_init(list);
return list;
diff --git a/libopkg/void_list.c b/libopkg/void_list.c
index 8d61fbb..3d9d611 100644
--- a/libopkg/void_list.c
+++ b/libopkg/void_list.c
@@ -60,7 +60,7 @@ int void_list_append(void_list_t *list, void *data)
void_list_elt_t *elt;
/* freed in void_list_deinit */
- elt = malloc(sizeof(void_list_elt_t));
+ elt = calloc(1, sizeof(void_list_elt_t));
if (elt == NULL) {
fprintf(stderr, "%s: out of memory\n", __FUNCTION__);
return ENOMEM;
@@ -84,7 +84,7 @@ int void_list_push(void_list_t *list, void *data)
{
void_list_elt_t *elt;
- elt = malloc(sizeof(void_list_elt_t));
+ elt = calloc(1, sizeof(void_list_elt_t));
if (elt == NULL) {
fprintf(stderr, "%s: out of memory\n", __FUNCTION__);
return ENOMEM;
diff --git a/libopkg/xregex.c b/libopkg/xregex.c
index 0ae54e7..b0cd8b9 100644
--- a/libopkg/xregex.c
+++ b/libopkg/xregex.c
@@ -39,7 +39,7 @@ static void print_regcomp_err(const regex_t *preg, int err)
fprintf(stderr, "%s: Error compiling regex:", __FUNCTION__);
size = regerror(err, preg, 0, 0);
- error = malloc(size);
+ error = calloc(1, size);
if (error) {
regerror(err, preg, error, size);
fprintf(stderr, "%s\n", error);