diff --git a/pointer/smudge.go b/pointer/smudge.go
index <HASH>..<HASH> 100644
--- a/pointer/smudge.go
+++ b/pointer/smudge.go
@@ -4,6 +4,7 @@ import (
 	"fmt"
 	"github.com/cheggaaa/pb"
 	"github.com/github/git-lfs/lfs"
+	"github.com/rubyist/tracerx"
 	"github.com/technoweenie/go-contentaddressable"
 	"io"
 	"os"
@@ -16,8 +17,18 @@ func Smudge(writer io.Writer, ptr *Pointer, workingfile string, cb lfs.CopyCallb
 		return err
 	}
 
+	stat, statErr := os.Stat(mediafile)
+	if statErr == nil && stat != nil {
+		fileSize := stat.Size()
+		if fileSize == 0 || fileSize != ptr.Size {
+			tracerx.Printf("Removing %s, size %d is invalid", mediafile, fileSize)
+			os.RemoveAll(mediafile)
+			stat = nil
+		}
+	}
+
 	var wErr *lfs.WrappedError
-	if stat, statErr := os.Stat(mediafile); statErr != nil || stat == nil {
+	if statErr != nil || stat == nil {
 		wErr = downloadFile(writer, ptr, workingfile, mediafile, cb)
 	} else {
 		wErr = readLocalFile(writer, ptr, mediafile, cb)
fix smudge attempts from zero len file