DhcpClient: guard against failure to parse packets
DhcpPacket.decodeFullPacket() is not exception safe and can throw various runtime exceptions when trying to parse malicious or malformed packets. This patch adds a generic catch-all-exception in DhcpClient to avoid propagating the exception and killing the framework process on reception of such malformed packets. Bug: 31850211 Change-Id: I2e723a792ff067ada2834da875700d4df16c5159
This commit is contained in:
@@ -43,6 +43,7 @@ import android.os.SystemClock;
|
||||
import android.system.ErrnoException;
|
||||
import android.system.Os;
|
||||
import android.system.PacketSocketAddress;
|
||||
import android.util.EventLog;
|
||||
import android.util.Log;
|
||||
import android.util.TimeUtils;
|
||||
|
||||
@@ -359,6 +360,14 @@ public class DhcpClient extends BaseDhcpStateMachine {
|
||||
if (!stopped) {
|
||||
Log.e(TAG, "Read error", e);
|
||||
}
|
||||
} catch (Exception e) {
|
||||
// SafetyNet logging for b/31850211
|
||||
int snetTagId = 0x534e4554;
|
||||
String bugId = "31850211";
|
||||
int uid = -1;
|
||||
String data = e.getClass().getName();
|
||||
EventLog.writeEvent(snetTagId, bugId, uid, data);
|
||||
Log.e(TAG, "Failed to parse DHCP packet", e);
|
||||
}
|
||||
}
|
||||
maybeLog("Receive thread stopped");
|
||||
|
||||
Reference in New Issue
Block a user