diff --git a/coreutils-8.25-sum-ignore-missing.patch b/coreutils-8.25-sum-ignore-missing.patch
new file mode 100644
index 0000000..d27d176
--- /dev/null
+++ b/coreutils-8.25-sum-ignore-missing.patch
@@ -0,0 +1,115 @@
+From 1e1a69da31b39e4d672ccb8a3ca0e5400d4720ee Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?P=C3=A1draig=20Brady?=
+Date: Wed, 26 Oct 2016 15:45:01 +0100
+Subject: [PATCH] md5sum,sha*sum: fix --ignore-missing with checksums starting
+ with 00
+
+* NEWS: Mention the fix.
+* src/md5sum.c (digest_file): Add a new MISSING parameter to
+return whether the file was missing, separately from the digest.
+* tests/misc/md5sum.pl: Add a test case.
+Fixes http://bugs.gnu.org/24795
+
+Upstream-commit: d0ddfadfb27def2861f35b1a45190a4c1780b257
+Signed-off-by: Kamil Dudka
+---
+ src/md5sum.c | 20 ++++++++++++--------
+ tests/misc/md5sum.pl | 7 +++++++
+ 2 files changed, 19 insertions(+), 8 deletions(-)
+
+diff --git a/src/md5sum.c b/src/md5sum.c
+index 933ec99..fee28c7 100644
+--- a/src/md5sum.c
++++ b/src/md5sum.c
+@@ -465,15 +465,19 @@ print_filename (char const *file, bool escape)
+ text because it was a terminal.
+
+ Put the checksum in *BIN_RESULT, which must be properly aligned.
++ Put true in *MISSING if the file can't be opened due to ENOENT.
+ Return true if successful. */
+
+ static bool
+-digest_file (const char *filename, int *binary, unsigned char *bin_result)
++digest_file (const char *filename, int *binary, unsigned char *bin_result,
++ bool *missing)
+ {
+ FILE *fp;
+ int err;
+ bool is_stdin = STREQ (filename, "-");
+
++ *missing = false;
++
+ if (is_stdin)
+ {
+ have_read_stdin = true;
+@@ -493,7 +497,7 @@ digest_file (const char *filename, int *binary, unsigned char *bin_result)
+ {
+ if (ignore_missing && errno == ENOENT)
+ {
+- *bin_result = '\0';
++ *missing = true;
+ return true;
+ }
+ error (0, errno, "%s", quotef (filename));
+@@ -606,14 +610,14 @@ digest_check (const char *checkfile_name)
+ '8', '9', 'a', 'b',
+ 'c', 'd', 'e', 'f' };
+ bool ok;
++ bool missing;
+ /* Only escape in the edge case producing multiple lines,
+ to ease automatic processing of status output. */
+ bool needs_escape = ! status_only && strchr (filename, '\n');
+
+ properly_formatted_lines = true;
+
+- *bin_buffer = '\1'; /* flag set to 0 for ignored missing files. */
+- ok = digest_file (filename, &binary, bin_buffer);
++ ok = digest_file (filename, &binary, bin_buffer, &missing);
+
+ if (!ok)
+ {
+@@ -626,10 +630,9 @@ digest_check (const char *checkfile_name)
+ printf (": %s\n", _("FAILED open or read"));
+ }
+ }
+- else if (ignore_missing && ! *bin_buffer)
++ else if (ignore_missing && missing)
+ {
+- /* Treat an empty buffer as meaning a missing file,
+- which is ignored with --ignore-missing. */
++ /* Ignore missing files with --ignore-missing. */
+ ;
+ }
+ else
+@@ -879,8 +882,9 @@ main (int argc, char **argv)
+ else
+ {
+ int file_is_binary = binary;
++ bool missing;
+
+- if (! digest_file (file, &file_is_binary, bin_buffer))
++ if (! digest_file (file, &file_is_binary, bin_buffer, &missing))
+ ok = false;
+ else
+ {
+diff --git a/tests/misc/md5sum.pl b/tests/misc/md5sum.pl
+index 2eb6369..6ea7457 100755
+--- a/tests/misc/md5sum.pl
++++ b/tests/misc/md5sum.pl
+@@ -149,6 +149,13 @@ my @Tests =
+ {ERR=>
+ "md5sum: f.md5: no file was verified\n"},
+ {EXIT=> 1}],
++ # coreutils-8.25 with --ignore-missing treated checksums starting with 00
++ # as if the file was not present
++ ['check-ignore-missing-6', '--check', '--ignore-missing',
++ {AUX=> {f=> '9t'}},
++ {IN=> {'f.md5' =>
++ "006999e6df389641adf1fa3a74801d9d f\n"}},
++ {OUT=>"f: OK\n"}],
+ ['bsd-segv', '--check', {IN=> {'z' => "MD5 ("}}, {EXIT=> 1},
+ {ERR=> "$prog: z: no properly formatted MD5 checksum lines found\n"}],
+
+--
+2.7.4
+
diff --git a/coreutils.spec b/coreutils.spec
index 88bab95..c5a835a 100644
--- a/coreutils.spec
+++ b/coreutils.spec
@@ -1,7 +1,7 @@
Summary: A set of basic GNU tools commonly used in shell scripts
Name: coreutils
Version: 8.25
-Release: 16%{?dist}
+Release: 17%{?dist}
License: GPLv3+
Group: System Environment/Base
Url: http://www.gnu.org/software/coreutils/
@@ -23,6 +23,8 @@ Patch952: coreutils-8.25-intall-Z-selinux.patch
Patch953: coreutils-8.25-sort-thousands-sep.patch
# ls: allow interruption when reading slow directories (#1365933)
Patch954: coreutils-8.25-ls-signal.patch
+# md5sum,sha*sum: fix --ignore-missing with checksums starting with 00
+Patch955: coreutils-8.25-sum-ignore-missing.patch
# Our patches
#general patch to workaround koji build system issues
@@ -216,6 +218,7 @@ tee DIR_COLORS{,.256color,.lightbgcolor} /dev/null
# upstream patches
%patch953 -p1
%patch954 -p1
+%patch955 -p1
chmod a+x \
tests/df/direct.sh \
@@ -345,6 +348,9 @@ fi
%license COPYING
%changelog
+* Mon Oct 31 2016 Kamil Dudka - 8.25-17
+- md5sum,sha*sum: fix --ignore-missing with checksums starting with 00
+
* Tue Oct 11 2016 Tomáš Mráz - 8.25-16
- rebuild with OpenSSL 1.1.0