diff mbox

[OpenWrt-Devel,package] opkg: Fix --force-checksum when using SHA256

Message ID 1432480958-16875-1-git-send-email-florian@florianfieber.de
State Accepted
Headers show

Commit Message

Florian Fieber May 24, 2015, 3:22 p.m. UTC
Allow installing packages with mismatching SHA256 checksums via

$ opkg install --force-checksum $PACKAGE

Signed-off-by: Florian Fieber <florian@florianfieber.de>
---
 .../240-fix-force-checksum-for-sha256.patch        | 31 ++++++++++++++++++++++
 1 file changed, 31 insertions(+)
 create mode 100644 package/system/opkg/patches/240-fix-force-checksum-for-sha256.patch
diff mbox

Patch

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
index 0000000..8af4d40
--- /dev/null
+++ b/package/system/opkg/patches/240-fix-force-checksum-for-sha256.patch
@@ -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);