Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 89aa6fb4 authored by Hugo Benichi's avatar Hugo Benichi
Browse files

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
parent 5d1bfd9d
Loading
Loading
Loading
Loading
+9 −0
Original line number Diff line number Diff line
@@ -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");