From 295901c0b3b215837855428d8361f84ca7e5ebe0 Mon Sep 17 00:00:00 2001 From: Pierre-Olivier Latour Date: Wed, 30 Apr 2014 09:57:12 -0700 Subject: [PATCH] Reject files greater than 4 GiB in 32 bit mode --- GCDWebServer/Responses/GCDWebServerFileResponse.m | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/GCDWebServer/Responses/GCDWebServerFileResponse.m b/GCDWebServer/Responses/GCDWebServerFileResponse.m index acf7bd0..a2e0355 100644 --- a/GCDWebServer/Responses/GCDWebServerFileResponse.m +++ b/GCDWebServer/Responses/GCDWebServerFileResponse.m @@ -81,6 +81,13 @@ static inline NSDate* _NSDateFromTimeSpec(const struct timespec* t) { ARC_RELEASE(self); return nil; } +#ifndef __LP64__ + if (info.st_size >= (off_t)4294967295) { // In 32 bit mode, we can't handle files greater than 4 GiBs (don't use "NSUIntegerMax" here to avoid potential unsigned to signed conversion issues) + DNOT_REACHED(); + ARC_RELEASE(self); + return nil; + } +#endif NSUInteger fileSize = (NSUInteger)info.st_size; BOOL hasByteRange = GCDWebServerIsValidByteRange(range);