diff --git a/src/smblib/smbhash.c b/src/smblib/smbhash.c
index 483a72133aba6d2d2e5e85045f2c0d7109301200..015ff8ae2857cf8b9d4396ab3279651220f07543 100644
--- a/src/smblib/smbhash.c
+++ b/src/smblib/smbhash.c
@@ -63,6 +63,7 @@ int SMBCALL smb_findhash(smb_t* smb, hash_t** compare, hash_t* found_hash,
 	if(count && source_mask!=SMB_HASH_SOURCE_NONE) {
 
 		rewind(smb->hash_fp);
+		clearerr(smb->hash_fp);
 		while(!feof(smb->hash_fp)) {
 			if(smb_fread(smb,&hash,sizeof(hash),smb->hash_fp)!=sizeof(hash))
 				break;
@@ -85,13 +86,13 @@ int SMBCALL smb_findhash(smb_t* smb, hash_t** compare, hash_t* found_hash,
 					continue;	/* wrong pre-process flags */
 				if((compare[c]->flags&hash.flags&SMB_HASH_MASK)==0)	
 					continue;	/* no matching hashes */
-				if(compare[c]->flags&hash.flags&SMB_HASH_CRC16 
+				if((compare[c]->flags&hash.flags&SMB_HASH_CRC16)
 					&& compare[c]->crc16!=hash.crc16)
 					continue;	/* wrong crc-16 */
-				if(compare[c]->flags&hash.flags&SMB_HASH_CRC32
+				if((compare[c]->flags&hash.flags&SMB_HASH_CRC32)
 					&& compare[c]->crc32!=hash.crc32)
 					continue;	/* wrong crc-32 */
-				if(compare[c]->flags&hash.flags&SMB_HASH_MD5 
+				if((compare[c]->flags&hash.flags&SMB_HASH_MD5)
 					&& memcmp(compare[c]->md5,hash.md5,sizeof(hash.md5)))
 					continue;	/* wrong MD5 */
 				
@@ -278,7 +279,7 @@ hash_t** SMBCALL smb_msghashes(smbmsg_t* msg, const uchar* body, long source_mas
 			}
 			break;
 		}
-		if((hash=smb_hashstr(msg->hdr.number, t, SMB_HASH_SOURCE_SUBJECT,flags, msg->subj))!=NULL)
+		if((hash=smb_hashstr(msg->hdr.number, t, SMB_HASH_SOURCE_SUBJECT, flags, p))!=NULL)
 			hashes[h++]=hash;
 	}