diff options
author | Joel Fischer <joeljfischer@gmail.com> | 2020-05-01 11:13:19 -0400 |
---|---|---|
committer | Joel Fischer <joeljfischer@gmail.com> | 2020-05-01 11:13:19 -0400 |
commit | d4fe0f3bb41b322962ecdbc511e41bef484072f0 (patch) | |
tree | 2c4b038ca9c109f5f0b7925e9b841ebc5a1882cb | |
parent | 92c172b8460b16554ab7678247130e71ffe32884 (diff) | |
download | sdl_ios-bugfix/issue-1636-remove-nsnumber-specifiers-in-certain-cases.tar.gz |
Fix potential crashes when accessing RPC parameters in Swift appsbugfix/issue-1636-remove-nsnumber-specifiers-in-certain-cases
* When specifying an NSArray containing an NSNumber with a SDLBool (and similar) specifier, it would crash in Swift
-rw-r--r-- | SmartDeviceLink/SDLAppServiceManifest.h | 2 | ||||
-rw-r--r-- | SmartDeviceLink/SDLAppServiceManifest.m | 4 | ||||
-rw-r--r-- | SmartDeviceLink/SDLDiagnosticMessage.h | 2 | ||||
-rw-r--r-- | SmartDeviceLink/SDLDiagnosticMessage.m | 4 | ||||
-rw-r--r-- | SmartDeviceLink/SDLDiagnosticMessageResponse.h | 2 | ||||
-rw-r--r-- | SmartDeviceLink/SDLDiagnosticMessageResponse.m | 4 | ||||
-rw-r--r-- | SmartDeviceLink/SDLGetInteriorVehicleDataConsentResponse.h | 4 | ||||
-rw-r--r-- | SmartDeviceLink/SDLGetInteriorVehicleDataConsentResponse.m | 4 | ||||
-rw-r--r-- | SmartDeviceLink/SDLPerformInteraction.h | 2 | ||||
-rw-r--r-- | SmartDeviceLink/SDLPerformInteraction.m | 4 | ||||
-rw-r--r-- | SmartDeviceLink/SDLReadDID.h | 4 | ||||
-rw-r--r-- | SmartDeviceLink/SDLReadDID.m | 4 | ||||
-rw-r--r-- | SmartDeviceLink/SDLRegisterAppInterfaceResponse.h | 2 | ||||
-rw-r--r-- | SmartDeviceLink/SDLRegisterAppInterfaceResponse.m | 4 | ||||
-rw-r--r-- | SmartDeviceLink/SDLTouchEvent.h | 2 | ||||
-rw-r--r-- | SmartDeviceLink/SDLTouchEvent.m | 4 | ||||
-rw-r--r-- | SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetInteriorVehicleDataConsentResponseSpec.m | 2 |
17 files changed, 28 insertions, 26 deletions
diff --git a/SmartDeviceLink/SDLAppServiceManifest.h b/SmartDeviceLink/SDLAppServiceManifest.h index 94069d104..1548181a1 100644 --- a/SmartDeviceLink/SDLAppServiceManifest.h +++ b/SmartDeviceLink/SDLAppServiceManifest.h @@ -191,7 +191,7 @@ NS_ASSUME_NONNULL_BEGIN * * Array of Integers, See `SDLFunctionID`, Optional */ -@property (nullable, strong, nonatomic) NSArray<NSNumber<SDLInt> *> *handledRPCs; +@property (nullable, strong, nonatomic) NSArray<NSNumber *> *handledRPCs; /** * A media service manifest. diff --git a/SmartDeviceLink/SDLAppServiceManifest.m b/SmartDeviceLink/SDLAppServiceManifest.m index 3a40c9cd0..fe5849145 100644 --- a/SmartDeviceLink/SDLAppServiceManifest.m +++ b/SmartDeviceLink/SDLAppServiceManifest.m @@ -168,11 +168,11 @@ NS_ASSUME_NONNULL_BEGIN return [self.store sdl_objectForName:SDLRPCParameterNameRPCSpecVersion ofClass:SDLMsgVersion.class error:nil]; } -- (void)setHandledRPCs:(nullable NSArray<NSNumber<SDLInt> *> *)handledRPCs { +- (void)setHandledRPCs:(nullable NSArray<NSNumber *> *)handledRPCs { [self.store sdl_setObject:handledRPCs forName:SDLRPCParameterNameHandledRPCs]; } -- (nullable NSArray<NSNumber<SDLInt> *> *)handledRPCs { +- (nullable NSArray<NSNumber *> *)handledRPCs { return [self.store sdl_objectsForName:SDLRPCParameterNameHandledRPCs ofClass:NSNumber.class error:nil]; } diff --git a/SmartDeviceLink/SDLDiagnosticMessage.h b/SmartDeviceLink/SDLDiagnosticMessage.h index 74cbbcdff..385c72b4f 100644 --- a/SmartDeviceLink/SDLDiagnosticMessage.h +++ b/SmartDeviceLink/SDLDiagnosticMessage.h @@ -41,7 +41,7 @@ NS_ASSUME_NONNULL_BEGIN * * Required, Array of NSNumber (Integers), Array size 1 - 65535, Integer Size 0 - 255 */ -@property (strong, nonatomic) NSArray<NSNumber<SDLInt> *> *messageData; +@property (strong, nonatomic) NSArray<NSNumber *> *messageData; @end diff --git a/SmartDeviceLink/SDLDiagnosticMessage.m b/SmartDeviceLink/SDLDiagnosticMessage.m index b7d4e4016..adef6c980 100644 --- a/SmartDeviceLink/SDLDiagnosticMessage.m +++ b/SmartDeviceLink/SDLDiagnosticMessage.m @@ -52,11 +52,11 @@ NS_ASSUME_NONNULL_BEGIN return [self.parameters sdl_objectForName:SDLRPCParameterNameMessageLength ofClass:NSNumber.class error:&error]; } -- (void)setMessageData:(NSArray<NSNumber<SDLInt> *> *)messageData { +- (void)setMessageData:(NSArray<NSNumber *> *)messageData { [self.parameters sdl_setObject:messageData forName:SDLRPCParameterNameMessageData]; } -- (NSArray<NSNumber<SDLInt> *> *)messageData { +- (NSArray<NSNumber *> *)messageData { NSError *error = nil; return [self.parameters sdl_objectsForName:SDLRPCParameterNameMessageData ofClass:NSNumber.class error:&error]; } diff --git a/SmartDeviceLink/SDLDiagnosticMessageResponse.h b/SmartDeviceLink/SDLDiagnosticMessageResponse.h index aca74a779..2912beafa 100644 --- a/SmartDeviceLink/SDLDiagnosticMessageResponse.h +++ b/SmartDeviceLink/SDLDiagnosticMessageResponse.h @@ -18,7 +18,7 @@ NS_ASSUME_NONNULL_BEGIN Optional */ -@property (nullable, strong, nonatomic) NSArray<NSNumber<SDLInt> *> *messageDataResult; +@property (nullable, strong, nonatomic) NSArray<NSNumber *> *messageDataResult; @end diff --git a/SmartDeviceLink/SDLDiagnosticMessageResponse.m b/SmartDeviceLink/SDLDiagnosticMessageResponse.m index a7b5cc254..dbfaa03a2 100644 --- a/SmartDeviceLink/SDLDiagnosticMessageResponse.m +++ b/SmartDeviceLink/SDLDiagnosticMessageResponse.m @@ -20,11 +20,11 @@ NS_ASSUME_NONNULL_BEGIN } #pragma clang diagnostic pop -- (void)setMessageDataResult:(nullable NSArray<NSNumber<SDLInt> *> *)messageDataResult { +- (void)setMessageDataResult:(nullable NSArray<NSNumber *> *)messageDataResult { [self.parameters sdl_setObject:messageDataResult forName:SDLRPCParameterNameMessageDataResult]; } -- (nullable NSArray<NSNumber<SDLInt> *> *)messageDataResult { +- (nullable NSArray<NSNumber *> *)messageDataResult { NSError *error = nil; return [self.parameters sdl_objectsForName:SDLRPCParameterNameMessageDataResult ofClass:NSNumber.class error:&error]; } diff --git a/SmartDeviceLink/SDLGetInteriorVehicleDataConsentResponse.h b/SmartDeviceLink/SDLGetInteriorVehicleDataConsentResponse.h index a22ec39d9..cbe315df2 100644 --- a/SmartDeviceLink/SDLGetInteriorVehicleDataConsentResponse.h +++ b/SmartDeviceLink/SDLGetInteriorVehicleDataConsentResponse.h @@ -20,9 +20,9 @@ NS_ASSUME_NONNULL_BEGIN "true" - if SDL grants the permission for the requested module "false" - SDL denies the permission for the requested module. - Optional + Optional, contains a boolean */ -@property (strong, nonatomic, nullable) NSArray<NSNumber<SDLBool> *> *allowed; +@property (strong, nonatomic, nullable) NSArray<NSNumber *> *allowed; @end diff --git a/SmartDeviceLink/SDLGetInteriorVehicleDataConsentResponse.m b/SmartDeviceLink/SDLGetInteriorVehicleDataConsentResponse.m index 872eded62..369b63645 100644 --- a/SmartDeviceLink/SDLGetInteriorVehicleDataConsentResponse.m +++ b/SmartDeviceLink/SDLGetInteriorVehicleDataConsentResponse.m @@ -22,11 +22,11 @@ } #pragma clang diagnostic pop -- (void)setAllowed:(nullable NSArray<NSNumber<SDLBool> *> *)allowed { +- (void)setAllowed:(nullable NSArray<NSNumber *> *)allowed { [self.parameters sdl_setObject:allowed forName:SDLRPCParameterNameAllowed]; } -- (nullable NSArray<NSNumber<SDLBool> *> *)allowed { +- (nullable NSArray<NSNumber *> *)allowed { NSError *error = nil; return [self.parameters sdl_objectsForName:SDLRPCParameterNameAllowed ofClass:NSNumber.class error:&error]; } diff --git a/SmartDeviceLink/SDLPerformInteraction.h b/SmartDeviceLink/SDLPerformInteraction.h index 575305682..bc035ce04 100644 --- a/SmartDeviceLink/SDLPerformInteraction.h +++ b/SmartDeviceLink/SDLPerformInteraction.h @@ -189,7 +189,7 @@ NS_ASSUME_NONNULL_BEGIN @since SDL 1.0 */ -@property (strong, nonatomic) NSArray<NSNumber<SDLInt> *> *interactionChoiceSetIDList; +@property (strong, nonatomic) NSArray<NSNumber *> *interactionChoiceSetIDList; /** Help text. This is the spoken text when a user speaks "help" while the interaction is occurring. diff --git a/SmartDeviceLink/SDLPerformInteraction.m b/SmartDeviceLink/SDLPerformInteraction.m index 6b72bf502..540788531 100644 --- a/SmartDeviceLink/SDLPerformInteraction.m +++ b/SmartDeviceLink/SDLPerformInteraction.m @@ -135,11 +135,11 @@ NS_ASSUME_NONNULL_BEGIN return [self.parameters sdl_enumForName:SDLRPCParameterNameInteractionMode error:&error]; } -- (void)setInteractionChoiceSetIDList:(NSArray<NSNumber<SDLInt> *> *)interactionChoiceSetIDList { +- (void)setInteractionChoiceSetIDList:(NSArray<NSNumber *> *)interactionChoiceSetIDList { [self.parameters sdl_setObject:interactionChoiceSetIDList forName:SDLRPCParameterNameInteractionChoiceSetIdList]; } -- (NSArray<NSNumber<SDLInt> *> *)interactionChoiceSetIDList { +- (NSArray<NSNumber *> *)interactionChoiceSetIDList { NSError *error = nil; return [self.parameters sdl_objectsForName:SDLRPCParameterNameInteractionChoiceSetIdList ofClass:NSNumber.class error:&error]; } diff --git a/SmartDeviceLink/SDLReadDID.h b/SmartDeviceLink/SDLReadDID.h index a5ea8ee7c..299e7851d 100644 --- a/SmartDeviceLink/SDLReadDID.h +++ b/SmartDeviceLink/SDLReadDID.h @@ -44,8 +44,10 @@ NS_ASSUME_NONNULL_BEGIN * <li>Minvalue:0; Maxvalue:65535</li> * <li>ArrayMin:0; ArrayMax:1000</li> * </ul> + * + * Mandatory, contains an integer */ -@property (strong, nonatomic) NSArray<NSNumber<SDLInt> *> *didLocation; +@property (strong, nonatomic) NSArray<NSNumber *> *didLocation; @end diff --git a/SmartDeviceLink/SDLReadDID.m b/SmartDeviceLink/SDLReadDID.m index cf2d276ff..dd337708e 100644 --- a/SmartDeviceLink/SDLReadDID.m +++ b/SmartDeviceLink/SDLReadDID.m @@ -42,11 +42,11 @@ NS_ASSUME_NONNULL_BEGIN return [self.parameters sdl_objectForName:SDLRPCParameterNameECUName ofClass:NSNumber.class error:&error]; } -- (void)setDidLocation:(NSArray<NSNumber<SDLInt> *> *)didLocation { +- (void)setDidLocation:(NSArray<NSNumber *> *)didLocation { [self.parameters sdl_setObject:didLocation forName:SDLRPCParameterNameDIDLocation]; } -- (NSArray<NSNumber<SDLInt> *> *)didLocation { +- (NSArray<NSNumber *> *)didLocation { NSError *error = nil; return [self.parameters sdl_objectsForName:SDLRPCParameterNameDIDLocation ofClass:NSNumber.class error:&error]; } diff --git a/SmartDeviceLink/SDLRegisterAppInterfaceResponse.h b/SmartDeviceLink/SDLRegisterAppInterfaceResponse.h index 2f18c4522..20c9cf4e2 100644 --- a/SmartDeviceLink/SDLRegisterAppInterfaceResponse.h +++ b/SmartDeviceLink/SDLRegisterAppInterfaceResponse.h @@ -172,7 +172,7 @@ NS_ASSUME_NONNULL_BEGIN * * @since SDL 3.0 */ -@property (nullable, strong, nonatomic) NSArray<NSNumber<SDLInt> *> *supportedDiagModes; +@property (nullable, strong, nonatomic) NSArray<NSNumber *> *supportedDiagModes; /** * Specifies the HMI capabilities. diff --git a/SmartDeviceLink/SDLRegisterAppInterfaceResponse.m b/SmartDeviceLink/SDLRegisterAppInterfaceResponse.m index e1d174ecf..5c081e9e6 100644 --- a/SmartDeviceLink/SDLRegisterAppInterfaceResponse.m +++ b/SmartDeviceLink/SDLRegisterAppInterfaceResponse.m @@ -163,11 +163,11 @@ NS_ASSUME_NONNULL_BEGIN return [self.parameters sdl_objectForName:SDLRPCParameterNameVehicleType ofClass:SDLVehicleType.class error:nil]; } -- (void)setSupportedDiagModes:(nullable NSArray<NSNumber<SDLInt> *> *)supportedDiagModes { +- (void)setSupportedDiagModes:(nullable NSArray<NSNumber *> *)supportedDiagModes { [self.parameters sdl_setObject:supportedDiagModes forName:SDLRPCParameterNameSupportedDiagnosticModes]; } -- (nullable NSArray<NSNumber<SDLInt> *> *)supportedDiagModes { +- (nullable NSArray<NSNumber *> *)supportedDiagModes { return [self.parameters sdl_objectsForName:SDLRPCParameterNameSupportedDiagnosticModes ofClass:NSNumber.class error:nil]; } diff --git a/SmartDeviceLink/SDLTouchEvent.h b/SmartDeviceLink/SDLTouchEvent.h index 4d2671c78..b11a9a21a 100644 --- a/SmartDeviceLink/SDLTouchEvent.h +++ b/SmartDeviceLink/SDLTouchEvent.h @@ -35,7 +35,7 @@ NS_ASSUME_NONNULL_BEGIN Required, array size 1-1000, contains integer value 0-2000000000 */ -@property (strong, nonatomic) NSArray<NSNumber<SDLInt> *> *timeStamp; +@property (strong, nonatomic) NSArray<NSNumber *> *timeStamp; /** The touch's coordinate diff --git a/SmartDeviceLink/SDLTouchEvent.m b/SmartDeviceLink/SDLTouchEvent.m index 617174bbc..2fbfa90d4 100644 --- a/SmartDeviceLink/SDLTouchEvent.m +++ b/SmartDeviceLink/SDLTouchEvent.m @@ -21,11 +21,11 @@ NS_ASSUME_NONNULL_BEGIN return [self.store sdl_objectForName:SDLRPCParameterNameId ofClass:NSNumber.class error:&error]; } -- (void)setTimeStamp:(NSArray<NSNumber<SDLInt> *> *)timeStamp { +- (void)setTimeStamp:(NSArray<NSNumber *> *)timeStamp { [self.store sdl_setObject:timeStamp forName:SDLRPCParameterNameTS]; } -- (NSArray<NSNumber<SDLInt> *> *)timeStamp { +- (NSArray<NSNumber *> *)timeStamp { NSError *error = nil; return [self.store sdl_objectsForName:SDLRPCParameterNameTS ofClass:NSNumber.class error:&error]; } diff --git a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetInteriorVehicleDataConsentResponseSpec.m b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetInteriorVehicleDataConsentResponseSpec.m index 479220441..4d92cd188 100644 --- a/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetInteriorVehicleDataConsentResponseSpec.m +++ b/SmartDeviceLinkTests/RPCSpecs/ResponseSpecs/SDLGetInteriorVehicleDataConsentResponseSpec.m @@ -19,7 +19,7 @@ QuickSpecBegin(SDLGetInteriorVehicleDataConsentResponseSpec) describe(@"Getter/Setter Tests", ^ { - __block NSArray<NSNumber<SDLBool> *> *allowed = nil; + __block NSArray<NSNumber *> *allowed = nil; beforeEach(^{ allowed = @[@YES, @NO]; |