)]}'
{
  "commit": "7b373841407b198759276242ab2dc4e5f78adb21",
  "tree": "f35c77ca4f893ff99d67504e8eb5ae2421ef6b09",
  "parents": [
    "231ed198e11efc5bf39bf2d02ddb1756a8ee2eec"
  ],
  "author": {
    "name": "Valentin Bartenev",
    "email": "vbart@nginx.com",
    "time": "Mon Sep 02 08:07:59 2013 +0400"
  },
  "committer": {
    "name": "Valentin Bartenev",
    "email": "vbart@nginx.com",
    "time": "Mon Sep 02 08:07:59 2013 +0400"
  },
  "message": "Disable symlinks: use O_PATH to open path components.\n\nIt was introduced in Linux 2.6.39, glibc 2.14 and allows to obtain\nfile descriptors without actually opening files.  Thus made it possible\nto traverse path with openat() syscalls without the need to have read\npermissions for path components.  It is effectively emulates O_SEARCH\nwhich is missing on Linux.\n\nO_PATH is used in combination with O_RDONLY.  The last one is ignored\nif O_PATH is used, but it allows nginx to not fail when it was built on\nmodern system (i.e. glibc 2.14+) and run with a kernel older than 2.6.39.\nThen O_PATH is unknown to the kernel and ignored, while O_RDONLY is used.\n\nSadly, fstat() is not working with O_PATH descriptors till Linux 3.6.\nAs a workaround we fallback to fstatat() with the AT_EMPTY_PATH flag\nthat was introduced at the same time as O_PATH.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "c506d3dc3ad6beb2e26d171daf5cd06be4a85803",
      "old_mode": 33188,
      "old_path": "auto/os/linux",
      "new_id": "c0391d98ef8a1fa8ee685288f0b5f69c4eda7a5c",
      "new_mode": 33188,
      "new_path": "auto/os/linux"
    },
    {
      "type": "modify",
      "old_id": "b72af5ea0d86d312f181d6d30c88ab331acbf7bf",
      "old_mode": 33188,
      "old_path": "src/core/ngx_open_file_cache.c",
      "new_id": "e5773ac0d5ef8514311414f63129b0805e92b3b5",
      "new_mode": 33188,
      "new_path": "src/core/ngx_open_file_cache.c"
    },
    {
      "type": "modify",
      "old_id": "4e3ed7db41566ed7f00297b1bebd379f312ed780",
      "old_mode": 33188,
      "old_path": "src/os/unix/ngx_files.h",
      "new_id": "df759df52f987ff9a00fec31f995f01701be36b8",
      "new_mode": 33188,
      "new_path": "src/os/unix/ngx_files.h"
    }
  ]
}
