index file smaller than expected
The index file has become corrupted, but it is easily re-creatable. Just remove it...
rm .git/index
Then you can re-add the files you're trying to stage.
If you want to keep local changes, use the following:
$ rm .git/index
$ git reset HEAD .
> Unstaged changes after reset:
modified foo.txt
modified bar.txt