)]}'
{
  "commit": "27bf90a14670283a899b96c56dd23f8413e0973e",
  "tree": "e52498c5d70f6efef4d9a827b6974a2f597b2e30",
  "parents": [
    "73d78ea0153fd36a300be5fec2ef0fca34a67477"
  ],
  "author": {
    "name": "David Lamparter",
    "email": "equinox@opensourcerouting.org",
    "time": "Wed Jun 04 00:59:01 2014 +0200"
  },
  "committer": {
    "name": "David Lamparter",
    "email": "equinox@opensourcerouting.org",
    "time": "Sun Jun 29 12:47:21 2014 +0200"
  },
  "message": "bgpd: fix double free after extcommunity set (BZ#799)\n\nThe route-map extcommunity set code was incorrectly assuming that it\nowns the intern\u0027d struct ecommunity reference.  In reality, the intern\u0027d\nreference belongs to bgp_update_receive() and we\u0027re not supposed to\ntouch it in the route-map code.\n\nInstead, like all the other set commands, we use a on-heap but\nnon-intern\u0027d ecommunity to set the new value.  This is then either\nintern\u0027d in bgp_update_main/_rsclient() through bgp_attr_intern(), or\nfree\u0027d through bgp_attr_flush().\n\nThis fixes Bugzilla #799, which is that bgpd otherwise crashes with a\ndouble free.  The ecommunity got unintern\u0027d first in the route-map set\ncommand, then in bgp_update_receive().\n\nDebugged-by: Milan Kocian \u003cmilon@wq.cz\u003e\nReported-by: Florian S \u003cflorian@herrenlohe.de\u003e\nSigned-off-by: David Lamparter \u003cequinox@opensourcerouting.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "eb5e80f83e9c73d81b6de8baf8fb7e2bf64a36aa",
      "old_mode": 33188,
      "old_path": "bgpd/bgp_routemap.c",
      "new_id": "36d177d2a7383a939133aaad5c0b8de58489a971",
      "new_mode": 33188,
      "new_path": "bgpd/bgp_routemap.c"
    }
  ]
}
