Browse Source

ios: be resilient to invalid UUIDs

master
Saúl Ibarra Corretgé 6 years ago
parent
commit
431a221c63
1 changed files with 37 additions and 1 deletions
  1. 37
    1
      ios/sdk/src/callkit/CallKit.m

+ 37
- 1
ios/sdk/src/callkit/CallKit.m View File

@@ -74,6 +74,12 @@ RCT_EXPORT_METHOD(endCall:(NSString *)callUUID
74 74
 #endif
75 75
 
76 76
     NSUUID *callUUID_ = [[NSUUID alloc] initWithUUIDString:callUUID];
77
+
78
+    if (!callUUID_) {
79
+        reject(nil, [NSString stringWithFormat:@"Invalid UUID: %@", callUUID], nil);
80
+        return;
81
+    }
82
+
77 83
     CXEndCallAction *action
78 84
         = [[CXEndCallAction alloc] initWithCallUUID:callUUID_];
79 85
     [self requestTransaction:[[CXTransaction alloc] initWithAction:action]
@@ -91,6 +97,12 @@ RCT_EXPORT_METHOD(setMuted:(NSString *)callUUID
91 97
 #endif
92 98
 
93 99
     NSUUID *callUUID_ = [[NSUUID alloc] initWithUUIDString:callUUID];
100
+
101
+    if (!callUUID_) {
102
+        reject(nil, [NSString stringWithFormat:@"Invalid UUID: %@", callUUID], nil);
103
+        return;
104
+    }
105
+
94 106
     CXSetMutedCallAction *action
95 107
         = [[CXSetMutedCallAction alloc] initWithCallUUID:callUUID_ muted:muted];
96 108
     [self requestTransaction:[[CXTransaction alloc] initWithAction:action]
@@ -123,6 +135,13 @@ RCT_EXPORT_METHOD(startCall:(NSString *)callUUID
123 135
     NSLog(@"[RNCallKit][startCall] callUUID = %@", callUUID);
124 136
 #endif
125 137
 
138
+    NSUUID *callUUID_ = [[NSUUID alloc] initWithUUIDString:callUUID];
139
+
140
+    if (!callUUID_) {
141
+        reject(nil, [NSString stringWithFormat:@"Invalid UUID: %@", callUUID], nil);
142
+        return;
143
+    }
144
+
126 145
     // Don't start a new call if there's an active call for the specified
127 146
     // callUUID. JitsiMeetView was configured for an incoming call.
128 147
     if ([JMCallKitProxy hasActiveCallForUUID:callUUID]) {
@@ -132,7 +151,6 @@ RCT_EXPORT_METHOD(startCall:(NSString *)callUUID
132 151
 
133 152
     CXHandle *handle_
134 153
         = [[CXHandle alloc] initWithType:CXHandleTypeGeneric value:handle];
135
-    NSUUID *callUUID_ = [[NSUUID alloc] initWithUUIDString:callUUID];
136 154
     CXStartCallAction *action
137 155
         = [[CXStartCallAction alloc] initWithCallUUID:callUUID_
138 156
                                                handle:handle_];
@@ -146,6 +164,12 @@ RCT_EXPORT_METHOD(reportCallFailed:(NSString *)callUUID
146 164
                            resolve:(RCTPromiseResolveBlock)resolve
147 165
                             reject:(RCTPromiseRejectBlock)reject) {
148 166
     NSUUID *callUUID_ = [[NSUUID alloc] initWithUUIDString:callUUID];
167
+
168
+    if (!callUUID_) {
169
+        reject(nil, [NSString stringWithFormat:@"Invalid UUID: %@", callUUID], nil);
170
+        return;
171
+    }
172
+
149 173
     [JMCallKitProxy reportCallWith:callUUID_
150 174
                            endedAt:nil
151 175
                             reason:CXCallEndedReasonFailed];
@@ -157,6 +181,12 @@ RCT_EXPORT_METHOD(reportConnectedOutgoingCall:(NSString *)callUUID
157 181
                                       resolve:(RCTPromiseResolveBlock)resolve
158 182
                                        reject:(RCTPromiseRejectBlock)reject) {
159 183
     NSUUID *callUUID_ = [[NSUUID alloc] initWithUUIDString:callUUID];
184
+
185
+    if (!callUUID_) {
186
+        reject(nil, [NSString stringWithFormat:@"Invalid UUID: %@", callUUID], nil);
187
+        return;
188
+    }
189
+
160 190
     [JMCallKitProxy reportOutgoingCallWith:callUUID_
161 191
                                connectedAt:nil];
162 192
     resolve(nil);
@@ -175,6 +205,12 @@ RCT_EXPORT_METHOD(updateCall:(NSString *)callUUID
175 205
 #endif
176 206
 
177 207
     NSUUID *callUUID_ = [[NSUUID alloc] initWithUUIDString:callUUID];
208
+
209
+    if (!callUUID_) {
210
+        reject(nil, [NSString stringWithFormat:@"Invalid UUID: %@", callUUID], nil);
211
+        return;
212
+    }
213
+
178 214
     NSString *displayName = options[@"displayName"];
179 215
     BOOL hasVideo = [(NSNumber*)options[@"hasVideo"] boolValue];
180 216
 

Loading…
Cancel
Save