Browse Source

only set outlen on success

Steffen Jaeckel 8 years ago
parent
commit
31dcb9ff2a
1 changed files with 3 additions and 2 deletions
  1. 3 2
      src/hashes/helper/hash_filehandle.c

+ 3 - 2
src/hashes/helper/hash_filehandle.c

@@ -52,14 +52,15 @@ int hash_filehandle(int hash, FILE *in, unsigned char *out, unsigned long *outle
        goto LBL_ERR;
        goto LBL_ERR;
     }
     }
 
 
-    *outlen = hash_descriptor[hash].hashsize;
     do {
     do {
         x = fread(buf, 1, LTC_FILE_READ_BUFSIZE, in);
         x = fread(buf, 1, LTC_FILE_READ_BUFSIZE, in);
         if ((err = hash_descriptor[hash].process(&md, buf, (unsigned long)x)) != CRYPT_OK) {
         if ((err = hash_descriptor[hash].process(&md, buf, (unsigned long)x)) != CRYPT_OK) {
            goto LBL_CLEANBUF;
            goto LBL_CLEANBUF;
         }
         }
     } while (x == LTC_FILE_READ_BUFSIZE);
     } while (x == LTC_FILE_READ_BUFSIZE);
-    err = hash_descriptor[hash].done(&md, out);
+    if ((err = hash_descriptor[hash].done(&md, out)) == CRYPT_OK) {
+       *outlen = hash_descriptor[hash].hashsize;
+    }
 
 
 LBL_CLEANBUF:
 LBL_CLEANBUF:
     zeromem(buf, LTC_FILE_READ_BUFSIZE);
     zeromem(buf, LTC_FILE_READ_BUFSIZE);