Failure to calculate digest in rpmDoDigest() is, well, a failure
authorPanu Matilainen <pmatilai@redhat.com>
Tue, 12 Feb 2013 03:11:16 +0000 (05:11 +0200)
committerPanu Matilainen <pmatilai@redhat.com>
Fri, 7 Jun 2013 07:18:37 +0000 (10:18 +0300)
- This is mostly a cant-happen situation but technically it can
  fail, lets not segfault if it does (RhBug:909618)
(cherry picked from commit 65d2e787d518fb5d13340cbadecfc256af74fde6)

rpmio/rpmfileutil.c

index 6cdfe25..b116146 100644 (file)
@@ -174,7 +174,7 @@ int rpmDoDigest(int algo, const char * fn,int asAscii,
        while ((rc = Fread(buf, sizeof(buf[0]), sizeof(buf), fd)) > 0)
            fsize += rc;
        fdFiniDigest(fd, algo, (void **)&dig, &diglen, asAscii);
-       if (Ferror(fd))
+       if (dig == NULL || Ferror(fd))
            rc = 1;
 
        (void) Fclose(fd);