opkg: fix nullpointer dereference
[oweals/opkg-lede.git] / libopkg / opkg_cmd.c
index 91976aeb5a1c8b41f33514520a0c0b55ccc0ddb1..d9ad77a4816048f821a4d4b5a40d19deb25e8a5c 100644 (file)
@@ -141,26 +141,6 @@ opkg_cmd_t *opkg_cmd_find(const char *name)
      return NULL;
 }
 
-void opkg_print_error_list (opkg_conf_t *conf)
-{
-  struct errlist *err = error_list;
-
-  if (err) {
-     reverse_error_list(&err);
-
-     printf ("Collected errors:\n");
-     /* Here we print the errors collected and free the list */
-     while (err != NULL) {
-           printf (" * %s", err->errmsg);
-           err = err->next;
-
-     }
-
-     free_error_list(&error_list);
-  }
-
-}
-
 int opkg_cmd_exec(opkg_cmd_t *cmd, opkg_conf_t *conf, int argc, const char **argv, void *userdata)
 {
        int result;
@@ -169,11 +149,8 @@ int opkg_cmd_exec(opkg_cmd_t *cmd, opkg_conf_t *conf, int argc, const char **arg
 
        result = (cmd->fun)(conf, argc, argv);
 
-        if ( result != 0 && !error_list) {
-           opkg_message(conf, OPKG_NOTICE, "An error occurred, return value: %d.\n", result);
-        }
-
-        opkg_print_error_list (conf);
+        print_error_list();
+       free_error_list();
 
        p_userdata = NULL;
        return result;
@@ -252,6 +229,7 @@ static int opkg_update_cmd(opkg_conf_t *conf, int argc, char **argv)
                        fclose (out);
                   unlink (tmp_file_name);
              }
+             free(tmp_file_name);
          } else
              err = opkg_download(conf, url, list_file_name, NULL, NULL);
          if (err) {
@@ -454,7 +432,7 @@ static int opkg_recurse_pkgs_in_order(opkg_conf_t *conf, pkg_t *pkg, pkg_vec_t *
             dependents = abpkg->provided_by->pkgs;
             l = 0;
             if (dependents != NULL)
-                while (dependents [l] != NULL && l < abpkg->provided_by->len) {
+                while (l < abpkg->provided_by->len && dependents[l] != NULL) {
                     opkg_message(conf, OPKG_INFO,
                                  "  Descending on pkg: %s\n", 
                                  dependents [l]->name);
@@ -973,7 +951,7 @@ static int opkg_remove_cmd(opkg_conf_t *conf, int argc, char **argv)
                    pkg_to_remove = pkg_hash_fetch_installed_by_name(&conf->pkg_hash, pkg->name );
                }
         
-               if (pkg == NULL) {
+               if (pkg_to_remove == NULL) {
                    opkg_message(conf, OPKG_ERROR, "Package %s is not installed.\n", pkg->name);
                    continue;
                }