)]}'
{
  "commit": "bb01bdd740339b0c07d8ed0786811801b2a79192",
  "tree": "946ffe458cc4ebea09407394b880443d0ed8f98b",
  "parents": [
    "e6ec2d6d18dadb119b93284ef2f5f5b5440d6f66"
  ],
  "author": {
    "name": "Jafar Al-Gharaibeh",
    "email": "jafar@atcorp.com",
    "time": "Thu Apr 21 16:22:33 2016 -0500"
  },
  "committer": {
    "name": "Donald Sharp",
    "email": "sharpd@cumulusnetworks.com",
    "time": "Fri Apr 29 19:31:49 2016 -0400"
  },
  "message": "ospfd: fix - correct neighbor index on changing/p2p/virtual links\n\nospfd keeps a list of neighbor routers for each configured interface. This\n list is indexed using the neighbor router id in case of point-to-point and\n virtual link types, otherwise the list is indexed using the neighbor\u0027s\n source IP (RFC 2328, page 96). The router adds itself as a \"pseudo\" neighbor\n on each link, and also keeps a pointer called (nbr_self) to the neighbor\n structure. This takes place when the interface is first configured. Currently\n ospfd adds this pseudo neighbor before the link parameters are fully configure,\n including whether the link type is point-to-point or virtual link. This causes\n the pseudo neighbor to be always indexed using the source IP address regardless\n of th link type. For point-to-point and virtual links, this causes the lookup\n for the pseudo neighbor to always fail because the lookup is done using the\n router id whereas the neighbor was added using its source IP address.\n This becomes really problematic if there is a state change that requires a\n rebuild of nbr_self, changing the router id for example. When resetting\n nbr_self, the router first tries to remove the pseudo neighbor form its\n neighbor list on each link by looking it up and resetting any references to it\n before freeing the neighbor structure. since the lookup fails to retrieve any\n references in the case of point-to-point and virtual links the neighbor\n structure is freed leaving dangling references to it. Any access to the\n neighbor list after that is bound to stumble over this dangling pointer\n causing ospfd to crash.\n\nSigned-off-by: Jafar Al-Gharaibeh \u003cjafar@atcorp.com\u003e\nTested-by: NetDEF CI System \u003ccisystem@netdef.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "f4242b0b383ce98f0a010a1d85a9762ddb69cd0f",
      "old_mode": 33188,
      "old_path": "ospfd/ospf_interface.c",
      "new_id": "d54bc473e228a89b08c1fc9552997edab00f31c3",
      "new_mode": 33188,
      "new_path": "ospfd/ospf_interface.c"
    },
    {
      "type": "modify",
      "old_id": "862de5e852229930651932a57950df5925b14199",
      "old_mode": 33188,
      "old_path": "ospfd/ospf_neighbor.c",
      "new_id": "06e63dd28877aa1681eb08e3db1b8310dc3ae6ad",
      "new_mode": 33188,
      "new_path": "ospfd/ospf_neighbor.c"
    },
    {
      "type": "modify",
      "old_id": "c9fcdc393e9a2cba41a29654bb8450753838c97a",
      "old_mode": 33188,
      "old_path": "ospfd/ospfd.c",
      "new_id": "cc76e9e1793601764268978d6936b06d0e4b7276",
      "new_mode": 33188,
      "new_path": "ospfd/ospfd.c"
    }
  ]
}
