)]}'
{
  "commit": "6380bd8ddf613b29f478396308b591867d401de4",
  "tree": "6d8fc9356a652f8452ccf49e7f79cc700cc2768d",
  "parents": [
    "63e2b423771ab0bc7ad4d407f3f6517c6d05cdc0"
  ],
  "author": {
    "name": "John Johansen",
    "email": "john.johansen@canonical.com",
    "time": "Thu Jul 29 14:48:04 2010 -0700"
  },
  "committer": {
    "name": "James Morris",
    "email": "jmorris@namei.org",
    "time": "Mon Aug 02 15:35:14 2010 +1000"
  },
  "message": "AppArmor: file enforcement routines\n\nAppArmor does files enforcement via pathname matching.  Matching is done\nat file open using a dfa match engine.  Permission is against the final\nfile object not parent directories, ie. the traversal of directories\nas part of the file match is implicitly allowed.  In the case of nonexistant\nfiles (creation) permissions are checked against the target file not the\ndirectory.  eg. In case of creating the file /dir/new, permissions are\nchecked against the match /dir/new not against /dir/.\n\nThe permissions for matches are currently stored in the dfa accept table,\nbut this will change to allow for dfa reuse and also to allow for sharing\nof wider accept states.\n\nSigned-off-by: John Johansen \u003cjohn.johansen@canonical.com\u003e\nSigned-off-by: James Morris \u003cjmorris@namei.org\u003e\n",
  "tree_diff": [
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "7312db74121993a9fd250b9895812f1704bc21cc",
      "new_mode": 33188,
      "new_path": "security/apparmor/file.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "be36feabb16a7234c1b314fdeed89facd46755d9",
      "new_mode": 33188,
      "new_path": "security/apparmor/include/file.h"
    }
  ]
}
