diff options
author | Bilal Alsharifi <599206+bilal-alsharifi@users.noreply.github.com> | 2019-03-04 13:14:44 -0500 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-03-04 13:14:44 -0500 |
commit | c561f2684449276647d38d87af420d9101f99cb9 (patch) | |
tree | ee82ba4250cbd702b924979fec7c9a42833a1f92 | |
parent | e59b00f4443f7d3e90c86bae562cde3decd95127 (diff) | |
parent | c0f0e34a4d5e5e7db34c437da4aec73c54213133 (diff) | |
download | sdl_android-c561f2684449276647d38d87af420d9101f99cb9.tar.gz |
Merge pull request #982 from smartdevicelink/bugfix/potential_npe
Bugfix/potential npe
4 files changed, 14 insertions, 9 deletions
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCMessage.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCMessage.java index e55292aad..ad7b8c68e 100644 --- a/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCMessage.java +++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCMessage.java @@ -15,12 +15,12 @@ public class RPCMessage extends RPCStruct { }
protected RPCMessage(RPCMessage rpcm) {
- this(rpcm.store);
+ this(cloneStore(rpcm));
}
protected RPCMessage(RPCStruct rpcs) {
this("", "");
- this.parameters = rpcs.store;
+ this.parameters = cloneStore(rpcs);
}
public RPCMessage(String functionName, String messageType) {
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCRequest.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCRequest.java index e6a92924e..d5117318d 100644 --- a/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCRequest.java +++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCRequest.java @@ -23,7 +23,7 @@ public class RPCRequest extends RPCMessage { public RPCRequest(RPCRequest request){
super(request);
- if (request.getCorrelationID() == null) {
+ if (request == null || request.getCorrelationID() == null) {
setCorrelationID(CorrelationIdGenerator.generateId());
}
}
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCStruct.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCStruct.java index 433c20553..dd96cdc9b 100644 --- a/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCStruct.java +++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/RPCStruct.java @@ -40,14 +40,21 @@ public class RPCStruct { }
protected RPCStruct(RPCStruct rpcs) {
- this.store = rpcs.store;
+ this.store = cloneStore(rpcs);
}
public RPCStruct(Hashtable<String, Object> hashtable) {
store = hashtable;
//store = (Hashtable<String, Object>) ObjectCopier.copy(hashtable);
}
-
+
+ static Hashtable<String, Object> cloneStore(RPCStruct rpcStruct){
+ if(rpcStruct!= null && rpcStruct.store !=null){
+ return (Hashtable)rpcStruct.store.clone();
+ }
+ return null;
+ }
+
public void deserializeJSON(JSONObject jsonObject) throws JSONException {
store = JsonRPCMarshaller.deserializeJSONObject(jsonObject);
diff --git a/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java b/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java index 2535178f0..28e539c72 100644 --- a/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java +++ b/sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java @@ -2333,12 +2333,13 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase> String functionName = rpcMsg.getFunctionName();
String messageType = rpcMsg.getMessageType();
+ SdlTrace.logRPCEvent(InterfaceActivityDirection.Receive, rpcMsg, SDL_LIB_TRACE_KEY);
+
// Requests need to be listened for using the SDLManager's addOnRPCRequestListener method.
// Requests are not supported by IProxyListenerBase
if (messageType.equals(RPCMessage.KEY_REQUEST)) {
RPCMessage convertedRPCMsg = RpcConverter.convertTableToRpc(hash);
- SdlTrace.logRPCEvent(InterfaceActivityDirection.Receive, new RPCRequest((RPCRequest)convertedRPCMsg), SDL_LIB_TRACE_KEY);
if (convertedRPCMsg != null) {
convertedRPCMsg.format(rpcSpecVersion, true);
@@ -2348,8 +2349,6 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase> }
} else if (messageType.equals(RPCMessage.KEY_RESPONSE)) {
- SdlTrace.logRPCEvent(InterfaceActivityDirection.Receive, new RPCResponse(rpcMsg), SDL_LIB_TRACE_KEY);
-
// Check to ensure response is not from an internal message (reserved correlation ID)
if (isCorrelationIDProtected((new RPCResponse(hash)).getCorrelationID())) {
// This is a response generated from an internal message, it can be trapped here
@@ -3577,7 +3576,6 @@ public abstract class SdlProxyBase<proxyListenerType extends IProxyListenerBase> } // end-if
} else if (messageType.equals(RPCMessage.KEY_NOTIFICATION)) {
- SdlTrace.logRPCEvent(InterfaceActivityDirection.Receive, new RPCNotification(rpcMsg), SDL_LIB_TRACE_KEY);
if (functionName.equals(FunctionID.ON_HMI_STATUS.toString())) {
// OnHMIStatus
|