Skip to content

Commit 46a22e0

Browse files
committed
Fixed potential null dereference when creating files with nil error.
1 parent c9e1fc8 commit 46a22e0

File tree

1 file changed

+23
-15
lines changed

1 file changed

+23
-15
lines changed

Parse/PFFile.m

Lines changed: 23 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -77,21 +77,25 @@ + (instancetype)fileWithName:(NSString *)name contentsAtPath:(NSString *)path er
7777

7878
if (![fileManager fileExistsAtPath:path isDirectory:&directory] || directory) {
7979
NSString *message = [NSString stringWithFormat:@"Failed to create PFFile at path '%@': "
80-
"file does not exist.", path];
81-
*error = [NSError errorWithDomain:NSCocoaErrorDomain
82-
code:NSFileNoSuchFileError
83-
userInfo:@{ NSLocalizedDescriptionKey: message }];
80+
"file does not exist.", path];
81+
if (error) {
82+
*error = [NSError errorWithDomain:NSCocoaErrorDomain
83+
code:NSFileNoSuchFileError
84+
userInfo:@{ NSLocalizedDescriptionKey: message }];
85+
}
8486
return nil;
8587
}
8688

8789
NSDictionary *attributes = [fileManager attributesOfItemAtPath:path error:nil];
8890
unsigned long long length = [attributes[NSFileSize] unsignedLongValue];
8991
if (length > PFFileMaxFileSize) {
9092
NSString *message = [NSString stringWithFormat:@"Failed to create PFFile at path '%@': "
91-
"file is larger than %lluMB.", path, (PFFileMaxFileSize >> 20)];
92-
*error = [NSError errorWithDomain:NSCocoaErrorDomain
93-
code:NSFileReadTooLargeError
94-
userInfo:@{ NSLocalizedDescriptionKey: message }];
93+
"file is larger than %lluMB.", path, (PFFileMaxFileSize >> 20)];
94+
if (error) {
95+
*error = [NSError errorWithDomain:NSCocoaErrorDomain
96+
code:NSFileReadTooLargeError
97+
userInfo:@{ NSLocalizedDescriptionKey: message }];
98+
}
9599
return nil;
96100
}
97101

@@ -117,18 +121,22 @@ + (instancetype)fileWithName:(NSString *)name
117121
error:(NSError **)error {
118122
if (!data) {
119123
NSString *message = @"Cannot create a PFFile with nil data.";
120-
*error = [NSError errorWithDomain:NSCocoaErrorDomain
121-
code:NSFileNoSuchFileError
122-
userInfo:@{ NSLocalizedDescriptionKey: message }];
124+
if (error) {
125+
*error = [NSError errorWithDomain:NSCocoaErrorDomain
126+
code:NSFileNoSuchFileError
127+
userInfo:@{ NSLocalizedDescriptionKey: message }];
128+
}
123129
return nil;
124130
}
125131

126132
if ([data length] > PFFileMaxFileSize) {
127133
NSString *message = [NSString stringWithFormat:@"Failed to create PFFile with data: "
128-
"data is larger than %lluMB.", (PFFileMaxFileSize >> 20)];
129-
*error = [NSError errorWithDomain:NSCocoaErrorDomain
130-
code:NSFileReadTooLargeError
131-
userInfo:@{ NSLocalizedDescriptionKey: message }];
134+
"data is larger than %lluMB.", (PFFileMaxFileSize >> 20)];
135+
if (error) {
136+
*error = [NSError errorWithDomain:NSCocoaErrorDomain
137+
code:NSFileReadTooLargeError
138+
userInfo:@{ NSLocalizedDescriptionKey: message }];
139+
}
132140
return nil;
133141
}
134142

0 commit comments

Comments
 (0)