Once upon the time we added a work-around to deal with negative Content-Length: values. Back in the days when some Apache installations would have problems with large file sizes larger than 4GB. This work-around is still in place in http.c but Brad figured out it doesn't work anymore because the number parser ignores minuses and instead returns "invalid".
We should remove the leftovers of the work-around and add a test case that verifies that curl behaves correctly for negative content-length values.
There's a larger discussion in the linked mailing list post on how to handle out of range content-lengths, but we have not yet decided on how to deal with those.