)]}'
{
  "commit": "f6f434b2822c453f898552537180a812538bd19e",
  "tree": "81f5de3c1eeb6679635e7363396c08b807b04ad9",
  "parents": [
    "50ef565e4e689ba653b9709be4d28a01f6cca885"
  ],
  "author": {
    "name": "Paul Jakma",
    "email": "paul@quagga.net",
    "time": "Tue Nov 23 21:28:03 2010 +0000"
  },
  "committer": {
    "name": "Paul Jakma",
    "email": "paul@quagga.net",
    "time": "Mon Mar 21 13:51:14 2011 +0000"
  },
  "message": "bgpd: Try fix extcommunity resource allocation probs, particularly with \u0027set extcom..\u0027\n\n* Extended communities has some kind of resource allocation problem which\n  causes a double-free if the \u0027set extcommunity ...\u0027 command is used.\n  Try fix by properly interning extcommunities.\n\n  Also, more generally, make unintern functions take a double pointer\n  so they can NULL out callers references - a usefully defensive programming\n  pattern for functions which make refs invalid.\n\n  Sadly, this patch doesn\u0027t fix the problem entirely - crashes still\n  occur on session clear.\n\n* bgp_ecommunity.h: (ecommunity_{free,unintern}) take double pointer\n  args.\n* bgp_community.h: (community_unintern) ditto\n* bgp_attr.h: (bgp_attr_intern) ditto\n* bgp_aspath.h: (bgp_aspath.h) ditto\n* (general) update all callers of above\n* bgp_routemap.c: (route_set_ecommunity_{rt,soo}) intern the new extcom added\n  to the attr, and unintern any old one.\n  (route_set_ecommunity_{rt,soo}_compile) intern the extcom to be used\n  for the route-map set.\n  (route_set_ecommunity_*_free) unintern to match, instead of free\n  (route_set_ecommunity_soo) Do as _rt does and don\u0027t just leak\n  any pre-existing community, add to it (is additive right though?)\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "87eb7ac7825d6bd0a855c4c237eb445ae4c03fff",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_advertise.c",
      "new_id": "666218fa8ce7ce2ea7cbfb4f5264073bbb5426e8",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_advertise.c"
    },
    {
      "type": "modify",
      "old_id": "89a27531851c0a76ccac0a8d0361ae3ea4728b53",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_aspath.c",
      "new_id": "176a960e1e909e60fad39216517a451cead8bdfe",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_aspath.c"
    },
    {
      "type": "modify",
      "old_id": "b8a5dfabae4fd8f432a1fc346c455392d3f930c0",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_aspath.h",
      "new_id": "d55f9ce625d9100900651ffb13d544ec8c765c04",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_aspath.h"
    },
    {
      "type": "modify",
      "old_id": "7a0ab5607a3b605eb3d5953a5203e34ff65a2085",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_attr.c",
      "new_id": "0c5355b4e5ad178e8da793e9d6ced477d823513d",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_attr.c"
    },
    {
      "type": "modify",
      "old_id": "af9dcf5ed02f8c5cd76efe545c489ac646ee80e8",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_attr.h",
      "new_id": "3433a1a56039ad8375e352f139e9cb7ed4de75ba",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_attr.h"
    },
    {
      "type": "modify",
      "old_id": "d6601674677ba843cd434dc50cde93bb090bc7a0",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_clist.c",
      "new_id": "6c9976e3b8469eeab4e0aeb930910026e8b84ecd",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_clist.c"
    },
    {
      "type": "modify",
      "old_id": "ae1d7a15579e541dea02c8546dc4d821fb5470e8",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_community.c",
      "new_id": "2ba45f6e4e8b65ffb26f989db6bdc8bc7e2fbc42",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_community.c"
    },
    {
      "type": "modify",
      "old_id": "bc1e56eff1e1592c45b935875efd94cc23800519",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_community.h",
      "new_id": "9e483770e9ea7c185c6672f95a60117f083c7af4",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_community.h"
    },
    {
      "type": "modify",
      "old_id": "8d5fa741a882ddaab1355be3f3c1c85ef38f87dc",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_ecommunity.c",
      "new_id": "8d91c7463850f3a35638faf4a6edc679e5216d04",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_ecommunity.c"
    },
    {
      "type": "modify",
      "old_id": "942fdc73305f546c51bc5ee528b89c929d8d3ba9",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_ecommunity.h",
      "new_id": "2f59dc4098a7f6f24f06b809f883287002e50577",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_ecommunity.h"
    },
    {
      "type": "modify",
      "old_id": "9102add73547b3aee110b64bae6b885ee0fed8de",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_packet.c",
      "new_id": "dee0b51f15778cab44c294d5c2c2b9522e6ef807",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_packet.c"
    },
    {
      "type": "modify",
      "old_id": "13ff63ca72fa6fda9ca5ca8baea7c57df1fc5d7d",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_route.c",
      "new_id": "87cb677c5b56321ce0da33b7df945aa235953cdd",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_route.c"
    },
    {
      "type": "modify",
      "old_id": "81ff48dbd6cb5278568b371a95c6292c4926d4f9",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_routemap.c",
      "new_id": "451458b5eb48abfdc34194c7db659c2bd8c0e97c",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_routemap.c"
    }
  ]
}
