Skip to content

Commit cad0af4

Browse files
author
Dave Poirier
committed
Added NSUInteger overflow checks
Signed-off-by: Dave Poirier <[email protected]>
1 parent e0f6c8b commit cad0af4

File tree

2 files changed

+5
-3
lines changed

2 files changed

+5
-3
lines changed

Base64.podspec

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
Pod::Spec.new do |s|
22
s.name = 'Base64'
3-
s.version = '1.1.1'
3+
s.version = '1.1.2'
44
s.license = 'Public Domain'
55
s.summary = 'RFC 4648 Base64 implementation in Objective-C ARC.'
66
s.homepage = 'https://github.com/ekscrypto/Base64'
77
s.author = { 'Dave Poirier' => '[email protected]' }
8-
s.source = { :git => 'https://github.com/ekscrypto/Base64.git', :tag => '1.1.1' }
8+
s.source = { :git => 'https://github.com/ekscrypto/Base64.git', :tag => '1.1.2' }
99
s.source_files = 'Classes', 'Base64/MF_Base64Additions.{h,m}'
1010
s.requires_arc = true
1111
end

Base64/MF_Base64Additions.m

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ +(NSData *)dataFromBase64String:(NSString *)encoding
7070
unsigned char *encodedBytes = (unsigned char *)[encodedData bytes];
7171

7272
NSUInteger encodedLength = [encodedData length];
73+
if( encodedLength >= (NSUIntegerMax - 3) ) return nil; // NSUInteger overflow check
7374
NSUInteger encodedBlocks = (encodedLength+3) >> 2;
7475
NSUInteger expectedDataLength = encodedBlocks * 3;
7576

@@ -150,7 +151,8 @@ +(NSString *)base64StringFromData:(NSData *)data
150151
// 16 Q 33 h 50 y
151152

152153
NSUInteger dataLength = [data length];
153-
NSUInteger encodedBlocks = (dataLength * 8) / 24;
154+
NSUInteger encodedBlocks = dataLength / 3;
155+
if( (encodedBlocks + 1) >= (NSUIntegerMax / 4) ) return nil; // NSUInteger overflow check
154156
NSUInteger padding = paddingTable[dataLength % 3];
155157
if( padding > 0 ) encodedBlocks++;
156158
NSUInteger encodedLength = encodedBlocks * 4;

0 commit comments

Comments
 (0)