I was looking over the object writing functions, and noticed that "write_sha1_from_fd()" writes its object directly into the final object name, which means that if it is interrupted with ^C at an inopportune time, it will leave a corrupt object behind.
The only user is apparently ssh-fetch, but especially since the input-fd is a network connection, it looks like it is not at all unlikely that this case will trigger - all it takes is somebody impatient waiting for a large object.
Ugh,
Linus