opkg: Fix --force-checksum when using SHA256
authorblogic <blogic@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Fri, 5 Jun 2015 14:12:45 +0000 (14:12 +0000)
committerblogic <blogic@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Fri, 5 Jun 2015 14:12:45 +0000 (14:12 +0000)
Allow installing packages with mismatching SHA256 checksums via

$ opkg install --force-checksum $PACKAGE

Signed-off-by: Florian Fieber <florian@florianfieber.de>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@45904 3c298f89-4303-0410-b956-a3cf2f4a3e73

package/system/opkg/patches/240-fix-force-checksum-for-sha256.patch [new file with mode: 0644]

diff --git a/package/system/opkg/patches/240-fix-force-checksum-for-sha256.patch b/package/system/opkg/patches/240-fix-force-checksum-for-sha256.patch
new file mode 100644 (file)
index 0000000..8af4d40
--- /dev/null
@@ -0,0 +1,31 @@
+--- a/libopkg/opkg_install.c
++++ b/libopkg/opkg_install.c
+@@ -1364,12 +1364,22 @@ opkg_install_pkg(pkg_t *pkg, int from_up
+          file_sha256 = file_sha256sum_alloc(pkg->local_filename);
+          if (file_sha256 && strcmp(file_sha256, pkg->sha256sum))
+          {
+-              opkg_msg(ERROR, "Package %s sha256sum mismatch. "
+-                      "Either the opkg or the package index are corrupt. "
+-                      "Try 'opkg update'.\n",
+-                      pkg->name);
+-              free(file_sha256);
+-              return -1;
++              if (!conf->force_checksum)
++              {
++                  opkg_msg(ERROR,
++                           "Package %s sha256sum mismatch. "
++                           "Either the opkg or the package index are corrupt. "
++                           "Try 'opkg update'.\n",
++                           pkg->name);
++                  free(file_sha256);
++                  return -1;
++              }
++              else
++              {
++                  opkg_msg(NOTICE,
++                           "Ignored %s sha256sum mismatch.\n",
++                           pkg->name);
++              }
+          }
+        if (file_sha256)
+               free(file_sha256);