-
Notifications
You must be signed in to change notification settings - Fork 24.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
fix: crash when insert nil value into a dictionary #30066
fix: crash when insert nil value into a dictionary #30066
Conversation
- Convert `error` to empty NSString if the original value is nil - Convert `socketID` to a NSNumber object, which stores -1 if the original value is nil
Base commit: d8b0e9d |
Base commit: d8b0e9d |
@@ -168,7 +168,11 @@ - (void)webSocket:(RCTSRWebSocket *)webSocket didFailWithError:(NSError *)error | |||
NSNumber *socketID = [webSocket reactTag]; | |||
_contentHandlers[socketID] = nil; | |||
_sockets[socketID] = nil; | |||
[self sendEventWithName:@"websocketFailed" body:@{@"message" : error.localizedDescription, @"id" : socketID}]; | |||
NSDictionary *body = @{ | |||
@"message" : error.localizedDescription ?: @"", |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Should this say something like "undefined" instead of empty string?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for your comment. I updated the error message to Undefined, error is nil
.
Please let me know if you have any further feedback.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@sammy-SC has imported this pull request. If you are a Facebook employee, you can view this diff on Phabricator.
thank you @marksinkovics |
This pull request was successfully merged by @marksinkovics in 748aa13. When will my fix make it into a release? | Upcoming Releases |
Summary: This PR attempts to fix issue #28278 and #29525 On Crashlytics, the following error occurs in file `RCTWebSocketModule.m` at method `-[RCTWebSocketModule webSocket:didFailWithError:]` when a nil value is inserted into a dictionary as a value. ``` Fatal Exception: NSInvalidArgumentException *** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0] ``` This PR is following the suggestion of this: #28278 (comment) and it replaces the values of any property if it is nil. In detail: - it converts `error` to empty NSString if the original value is nil - it converts `socketID` to a NSNumber object, which stores `-1` if the original value is nil ## Changelog [iOS] [Fixed] - A crash in WebSocket module Pull Request resolved: #30066 Test Plan: We were not able to reproduce the crash, but the report itself provided enough information to find a solution for this issue. Reviewed By: shergin Differential Revision: D24241147 Pulled By: sammy-SC fbshipit-source-id: d5d632b49ca77b5d8be8b9c32358bef68f17d30a
Summary: This PR attempts to fix issue facebook#28278 and facebook#29525 On Crashlytics, the following error occurs in file `RCTWebSocketModule.m` at method `-[RCTWebSocketModule webSocket:didFailWithError:]` when a nil value is inserted into a dictionary as a value. ``` Fatal Exception: NSInvalidArgumentException *** -[__NSPlaceholderDictionary initWithObjects:forKeys:count:]: attempt to insert nil object from objects[0] ``` This PR is following the suggestion of this: facebook#28278 (comment) and it replaces the values of any property if it is nil. In detail: - it converts `error` to empty NSString if the original value is nil - it converts `socketID` to a NSNumber object, which stores `-1` if the original value is nil ## Changelog [iOS] [Fixed] - A crash in WebSocket module Pull Request resolved: facebook#30066 Test Plan: We were not able to reproduce the crash, but the report itself provided enough information to find a solution for this issue. Reviewed By: shergin Differential Revision: D24241147 Pulled By: sammy-SC fbshipit-source-id: d5d632b49ca77b5d8be8b9c32358bef68f17d30a
Summary
This PR attempts to fix issue #28278 and #29525
On Crashlytics, the following error occurs in file
RCTWebSocketModule.m
at method-[RCTWebSocketModule webSocket:didFailWithError:]
when a nil value is inserted into a dictionary as a value.This PR is following the suggestion of this: #28278 (comment) and it replaces the values of any property if it is nil. In detail:
error
to empty NSString if the original value is nilsocketID
to a NSNumber object, which stores-1
if the original value is nilChangelog
[iOS] [Fixed] - A crash in WebSocket module
Test Plan
We were not able to reproduce the crash, but the report itself provided enough information to find a solution for this issue.