summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBilal Alsharifi <599206+bilal-alsharifi@users.noreply.github.com>2019-03-04 13:14:44 -0500
committerGitHub <noreply@github.com>2019-03-04 13:14:44 -0500
commitc561f2684449276647d38d87af420d9101f99cb9 (patch)
treeee82ba4250cbd702b924979fec7c9a42833a1f92
parente59b00f4443f7d3e90c86bae562cde3decd95127 (diff)
parentc0f0e34a4d5e5e7db34c437da4aec73c54213133 (diff)
downloadsdl_android-c561f2684449276647d38d87af420d9101f99cb9.tar.gz
Merge pull request #982 from smartdevicelink/bugfix/potential_npe
Bugfix/potential npe
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/RPCMessage.java4
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/RPCRequest.java2
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/RPCStruct.java11
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/proxy/SdlProxyBase.java6
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