Skip to content

Commit d0258e4

Browse files
author
tzihan
committed
Fix Bug 446379 - Security issue: Paho Android Service is broadcasting all messages and events system wide
Use LocalBroadcastManager instead of system wide one. add pom.xml to download android-support-v4 package. Bug 446379 Change-Id: I98dad08c69992828d9867a69027fd6f6ba6c66b8 Signed-off-by: tzihan <zhtang@cn.ibm.com>
1 parent f5311fa commit d0258e4

3 files changed

Lines changed: 20 additions & 13 deletions

File tree

org.eclipse.paho.android.service/org.eclipse.paho.android.service/pom.xml

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,20 @@
5858
</build>
5959

6060
<dependencies>
61-
<dependency>
62-
<groupId>org.eclipse.paho</groupId>
63-
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
64-
<version>1.0.1-SNAPSHOT</version>
65-
</dependency>
66-
67-
<dependency>
68-
<groupId>com.google.android</groupId>
69-
<artifactId>android</artifactId>
70-
</dependency>
61+
<dependency>
62+
<groupId>org.eclipse.paho</groupId>
63+
<artifactId>org.eclipse.paho.client.mqttv3</artifactId>
64+
<version>1.0.1-SNAPSHOT</version>
65+
</dependency>
66+
67+
<dependency>
68+
<groupId>com.google.android</groupId>
69+
<artifactId>android</artifactId>
70+
</dependency>
71+
<dependency>
72+
<groupId>com.google.android</groupId>
73+
<artifactId>support-v4</artifactId>
74+
<version>r7</version>
75+
</dependency>
7176
</dependencies>
7277
</project>

org.eclipse.paho.android.service/org.eclipse.paho.android.service/src/org/eclipse/paho/android/service/MqttAndroidClient.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import android.content.ServiceConnection;
5050
import android.os.Bundle;
5151
import android.os.IBinder;
52+
import android.support.v4.content.LocalBroadcastManager;
5253
import android.util.SparseArray;
5354

5455
/**
@@ -441,7 +442,7 @@ public void run() {
441442
private void registerReceiver(BroadcastReceiver receiver) {
442443
IntentFilter filter = new IntentFilter();
443444
filter.addAction(MqttServiceConstants.CALLBACK_TO_ACTIVITY);
444-
myContext.registerReceiver(receiver, filter);
445+
LocalBroadcastManager.getInstance(myContext).registerReceiver(receiver, filter);
445446
registerReceiver = true;
446447
}
447448

@@ -1595,7 +1596,7 @@ public void disconnectForcibly(long quiesceTimeout, long disconnectTimeout)
15951596
public void unregisterResources(){
15961597
if(myContext != null && registerReceiver){
15971598
synchronized (MqttAndroidClient.this) {
1598-
myContext.unregisterReceiver(this);
1599+
LocalBroadcastManager.getInstance(myContext).unregisterReceiver(this);
15991600
registerReceiver = false;
16001601
}
16011602
if(bindedService){

org.eclipse.paho.android.service/org.eclipse.paho.android.service/src/org/eclipse/paho/android/service/MqttService.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
import android.os.IBinder;
3838
import android.os.PowerManager;
3939
import android.os.PowerManager.WakeLock;
40+
import android.support.v4.content.LocalBroadcastManager;
4041
import android.util.Log;
4142

4243
/**
@@ -277,7 +278,7 @@ void callbackToActivity(String clientHandle, Status status,
277278
if (dataBundle != null) {
278279
callbackIntent.putExtras(dataBundle);
279280
}
280-
sendBroadcast(callbackIntent);
281+
LocalBroadcastManager.getInstance(this).sendBroadcast(callbackIntent);
281282
}
282283

283284
// The major API implementation follows :-

0 commit comments

Comments
 (0)