)]}'
{
  "commit": "b5d0d7a232f57f26a340e7e391110055c9fcd876",
  "tree": "e19ef9197dcd6099996141975535bae02f17801d",
  "parents": [
    "86c5513ecb34ab90027935c329e74b41fdc3a49e"
  ],
  "author": {
    "name": "Maxim Dounin",
    "email": "mdounin@mdounin.ru",
    "time": "Wed Feb 22 11:28:53 2012 +0000"
  },
  "committer": {
    "name": "Maxim Dounin",
    "email": "mdounin@mdounin.ru",
    "time": "Wed Feb 22 11:28:53 2012 +0000"
  },
  "message": "Event pipe: fixed buffer loss in p-\u003elength case.\n\nWith previous code raw buffer might be lost if p-\u003einput_filter() was called\non a buffer without any data and used ngx_event_pipe_add_free_buf() to\nreturn it to the free list.  This eventually might cause \"all buffers busy\"\nproblem, resulting in segmentation fault due to null pointer dereference in\nngx_event_pipe_write_chain_to_temp_file().\n\nIn ngx_event_pipe_add_free_buf() the buffer was added to the list start\ndue to pos \u003d\u003d last, and then \"p-\u003efree_raw_bufs \u003d cl-\u003enext\" in\nngx_event_pipe_read_upstream() dropped both chain links to the buffer\nfrom the p-\u003efree_raw_bufs list.\n\nFix is to move \"p-\u003efree_raw_bufs \u003d cl-\u003enext\" before calling the\np-\u003einput_filter().\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "62358ead1fbacd454e73a0200325741a8f6f68b2",
      "old_mode": 33188,
      "old_path": "src/event/ngx_event_pipe.c",
      "new_id": "b959ff4ffdceaa2091ec0b2a2835d6008928aeb8",
      "new_mode": 33188,
      "new_path": "src/event/ngx_event_pipe.c"
    }
  ]
}
