From 8bebee94ecc1488d17bd5b57af4e48f3de6c24f7 Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Latour Date: Thu, 3 Apr 2014 18:30:28 -0700 Subject: [PATCH] Enforce Content-Type and Content-Length consistency on requests --- CGDWebServer/GCDWebServerRequest.m | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/CGDWebServer/GCDWebServerRequest.m b/CGDWebServer/GCDWebServerRequest.m index 39bf771..df77c55 100644 --- a/CGDWebServer/GCDWebServerRequest.m +++ b/CGDWebServer/GCDWebServerRequest.m @@ -151,16 +151,20 @@ static NSStringEncoding _StringEncodingFromCharset(NSString* charset) { _query = ARC_RETAIN(query); _type = ARC_RETAIN([_headers objectForKey:@"Content-Type"]); - NSInteger length = [[_headers objectForKey:@"Content-Length"] integerValue]; - if (length < 0) { + NSString* lengthHeader = [_headers objectForKey:@"Content-Length"]; + if (_type) { + NSInteger length = [lengthHeader integerValue]; + if ((lengthHeader == nil) || (length < 0)) { + DNOT_REACHED(); + ARC_RELEASE(self); + return nil; + } + _length = length; + } else if (lengthHeader) { DNOT_REACHED(); ARC_RELEASE(self); return nil; } - _length = length; - if ((_length > 0) && (_type == nil)) { - _type = [kGCDWebServerDefaultMimeType copy]; - } _range = NSMakeRange(NSNotFound, 0); NSString* rangeHeader = [[_headers objectForKey:@"Range"] lowercaseString];