[package] opkg: fix a double free of pkg vectors when recursively removing packages...
[openwrt.git] / package / opkg / patches / 009-remove-upgrade-all.patch
index d2440e0..395a2a6 100644 (file)
@@ -1,40 +1,41 @@
---- a/libopkg/args.c
-+++ b/libopkg/args.c
-@@ -259,7 +259,7 @@
-     
-      printf("\nPackage Manipulation:\n");
-      printf("\tupdate                 Update list of available packages\n");
--     printf("\tupgrade                        Upgrade all installed packages to latest version\n");
-+     printf("\tupgrade <pkg>          Upgrade package to latest version\n");
-      printf("\tinstall <pkg>          Download and install <pkg> (and dependencies)\n");
-      printf("\tinstall <file.opk>     Install package <file.opk>\n");
-      printf("\tconfigure [<pkg>]      Configure unpacked packages\n");
 --- a/libopkg/opkg_cmd.c
 +++ b/libopkg/opkg_cmd.c
-@@ -75,7 +75,7 @@
-    array for easier maintenance */
- static opkg_cmd_t cmds[] = {
-      {"update", 0, (opkg_cmd_fun_t)opkg_update_cmd}, 
--     {"upgrade", 0, (opkg_cmd_fun_t)opkg_upgrade_cmd},
-+     {"upgrade", 1, (opkg_cmd_fun_t)opkg_upgrade_cmd},
-      {"list", 0, (opkg_cmd_fun_t)opkg_list_cmd},
-      {"list_installed", 0, (opkg_cmd_fun_t)opkg_list_installed_cmd},
-      {"list_upgradable", 0, (opkg_cmd_fun_t)opkg_list_upgradable_cmd},
-@@ -607,17 +607,6 @@
-                   opkg_install_by_name(conf, arg);
+@@ -551,18 +551,6 @@ opkg_upgrade_cmd(int argc, char **argv)
+                           err = -1;
                 }
          }
 -     } else {
 -        pkg_vec_t *installed = pkg_vec_alloc();
 -
--        pkg_info_preinstall_check(conf);
+-        pkg_info_preinstall_check();
 -
--        pkg_hash_fetch_all_installed(&conf->pkg_hash, installed);
+-        pkg_hash_fetch_all_installed(installed);
 -        for (i = 0; i < installed->len; i++) {
 -             pkg = installed->pkgs[i];
--             opkg_upgrade_pkg(conf, pkg);
+-             if (opkg_upgrade_pkg(pkg))
+-                     err = -1;
 -        }
 -        pkg_vec_free(installed);
       }
  
-      opkg_configure_packages(conf, NULL);
+      if (opkg_configure_packages(NULL))
+@@ -1258,7 +1246,7 @@ opkg_print_architecture_cmd(int argc, ch
+    array for easier maintenance */
+ static opkg_cmd_t cmds[] = {
+      {"update", 0, (opkg_cmd_fun_t)opkg_update_cmd, PFM_DESCRIPTION|PFM_SOURCE},
+-     {"upgrade", 0, (opkg_cmd_fun_t)opkg_upgrade_cmd, PFM_DESCRIPTION|PFM_SOURCE},
++     {"upgrade", 1, (opkg_cmd_fun_t)opkg_upgrade_cmd, PFM_DESCRIPTION|PFM_SOURCE},
+      {"list", 0, (opkg_cmd_fun_t)opkg_list_cmd, PFM_SOURCE},
+      {"list_installed", 0, (opkg_cmd_fun_t)opkg_list_installed_cmd, PFM_SOURCE},
+      {"list-installed", 0, (opkg_cmd_fun_t)opkg_list_installed_cmd, PFM_SOURCE},
+--- a/src/opkg-cl.c
++++ b/src/opkg-cl.c
+@@ -221,7 +221,7 @@ usage()
+       printf("\nPackage Manipulation:\n");
+       printf("\tupdate                        Update list of available packages\n");
+-      printf("\tupgrade                       Upgrade installed packages\n");
++      printf("\tupgrade <pkgs>                Upgrade packages\n");
+       printf("\tinstall <pkgs>                Install package(s)\n");
+       printf("\tconfigure <pkgs>      Configure unpacked package(s)\n");
+       printf("\tremove <pkgs|regexp>  Remove package(s)\n");
This page took 0.031719 seconds and 4 git commands to generate.