Skip to content

Commit

Permalink
udev: filter out non-sensically high onboard indexes reported by the …
Browse files Browse the repository at this point in the history
…kernel

Let's not accept onboard interface indexes, that are so high that they are obviously non-sensical.

Fixes: #2407
  • Loading branch information
poettering committed Jan 25, 2016
1 parent 4cb9497 commit 6c1e69f
Showing 1 changed file with 9 additions and 0 deletions.
9 changes: 9 additions & 0 deletions src/udev/udev-builtin-net_id.c
Expand Up @@ -106,6 +106,8 @@
#include "string-util.h"
#include "udev.h"

#define ONBOARD_INDEX_MAX (16*1024-1)

enum netname_type{
NET_UNDEF,
NET_PCI,
Expand Down Expand Up @@ -152,6 +154,13 @@ static int dev_pci_onboard(struct udev_device *dev, struct netnames *names) {
if (idx <= 0)
return -EINVAL;

/* Some BIOSes report rubbish indexes that are excessively high (2^24-1 is an index VMware likes to report for
* example). Let's define a cut-off where we don't consider the index reliable anymore. We pick some arbitrary
* cut-off, which is somewhere beyond the realistic number of physical network interface a system might
* have. Ideally the kernel would already filter his crap for us, but it doesn't currently. */
if (idx > ONBOARD_INDEX_MAX)
return -ENOENT;

/* kernel provided port index for multiple ports on a single PCI function */
attr = udev_device_get_sysattr_value(dev, "dev_port");
if (attr)
Expand Down

0 comments on commit 6c1e69f

Please sign in to comment.