diff --git a/src/smblib/smbfile.c b/src/smblib/smbfile.c
index e28bc77cff2364efab6bfbbc00b0a099dce46d68..e12fb6d336028dad8c3d698e5f77f922fcb24fff 100644
--- a/src/smblib/smbfile.c
+++ b/src/smblib/smbfile.c
@@ -98,7 +98,7 @@ size_t SMBCALL smb_fread(smb_t* smb, void* buf, size_t bytes, FILE* fp)
 	while(1) {
 		if((ret=fread(buf,sizeof(char),bytes,fp))==bytes)
 			return(ret);
-		if(get_errno()!=EDEADLOCK && get_errno()!=EACCES)
+		if(feof(fp) || (get_errno()!=EDEADLOCK && get_errno()!=EACCES))
 			return(ret);
 		if(!start)
 			start=time(NULL);