opkg: Fix --force-checksum when using SHA256
[openwrt/staging/yousong.git] / package / system / opkg / patches / 240-fix-force-checksum-for-sha256.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 (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);