)]}'
{
  "commit": "664cceb0093b755739e56572b836a99104ee8a75",
  "tree": "dbaa3ab802803879f29532db4d8a91a54294cf88",
  "parents": [
    "5134fc15b643dc36eb9aa77e4318b886844a9ac5"
  ],
  "author": {
    "name": "David Howells",
    "email": "dhowells@redhat.com",
    "time": "Wed Sep 28 17:03:15 2005 +0100"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@g5.osdl.org",
    "time": "Wed Sep 28 09:10:47 2005 -0700"
  },
  "message": "[PATCH] Keys: Add possessor permissions to keys [try #3]\n\nThe attached patch adds extra permission grants to keys for the possessor of a\nkey in addition to the owner, group and other permissions bits. This makes\nSUID binaries easier to support without going as far as labelling keys and key\ntargets using the LSM facilities.\n\nThis patch adds a second \"pointer type\" to key structures (struct key_ref *)\nthat can have the bottom bit of the address set to indicate the possession of\na key. This is propagated through searches from the keyring to the discovered\nkey. It has been made a separate type so that the compiler can spot attempts\nto dereference a potentially incorrect pointer.\n\nThe \"possession\" attribute can\u0027t be attached to a key structure directly as\nit\u0027s not an intrinsic property of a key.\n\nPointers to keys have been replaced with struct key_ref *\u0027s wherever\npossession information needs to be passed through.\n\nThis does assume that the bottom bit of the pointer will always be zero on\nreturn from kmem_cache_alloc().\n\nThe key reference type has been made into a typedef so that at least it can be\nlocated in the sources, even though it\u0027s basically a pointer to an undefined\ntype. I\u0027ve also renamed the accessor functions to be more useful, and all\nreference variables should now end in \"_ref\".\n\nSigned-Off-By: David Howells \u003cdhowells@redhat.com\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@osdl.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0321ded4b9ae2df9b8dc469f8e8aa1dd5c216da8",
      "old_mode": 33188,
      "old_path": "Documentation/keys.txt",
      "new_id": "b22e7c8d059a1666d3c3d4f02e2a01b464b19fab",
      "new_mode": 33188,
      "new_path": "Documentation/keys.txt"
    },
    {
      "type": "modify",
      "old_id": "cc326174a80886d8c6aba40e11055455de84a60f",
      "old_mode": 33188,
      "old_path": "include/linux/key-ui.h",
      "new_id": "918c34a8347e6eb2b33624026f28d0a36bf77476",
      "new_mode": 33188,
      "new_path": "include/linux/key-ui.h"
    },
    {
      "type": "modify",
      "old_id": "970bbd916cf44a4b32bf5b1ea0005483b1f52c32",
      "old_mode": 33188,
      "old_path": "include/linux/key.h",
      "new_id": "f1efa016dbf3c61aa37f8d97cf42ea1185155890",
      "new_mode": 33188,
      "new_path": "include/linux/key.h"
    },
    {
      "type": "modify",
      "old_id": "46c8602661c999de31787f8eadd662759418a2e2",
      "old_mode": 33188,
      "old_path": "security/keys/internal.h",
      "new_id": "db99ed434f3a7afd65624a689f94a2d59686f92e",
      "new_mode": 33188,
      "new_path": "security/keys/internal.h"
    },
    {
      "type": "modify",
      "old_id": "fb89f9844465587caa5f3333eabf1a877e0e0848",
      "old_mode": 33188,
      "old_path": "security/keys/key.c",
      "new_id": "2182be9e93093d87596ea965c301812de88484ba",
      "new_mode": 33188,
      "new_path": "security/keys/key.c"
    },
    {
      "type": "modify",
      "old_id": "a6516a64b297898923ca760e2e3b779880021c30",
      "old_mode": 33188,
      "old_path": "security/keys/keyctl.c",
      "new_id": "4c670ee6acf94ac0d936e6051346b27ff646d499",
      "new_mode": 33188,
      "new_path": "security/keys/keyctl.c"
    },
    {
      "type": "modify",
      "old_id": "9c208c756df8136cbaa0a06f5442af60c712ae6d",
      "old_mode": 33188,
      "old_path": "security/keys/keyring.c",
      "new_id": "0639396dd441eabdc27418b66df7673a749419e8",
      "new_mode": 33188,
      "new_path": "security/keys/keyring.c"
    },
    {
      "type": "modify",
      "old_id": "c55cf1fd08264769b162248f8107c41575578633",
      "old_mode": 33188,
      "old_path": "security/keys/proc.c",
      "new_id": "12b750e51fbf5c133ca4877b13a184081b73e652",
      "new_mode": 33188,
      "new_path": "security/keys/proc.c"
    },
    {
      "type": "modify",
      "old_id": "c089f78fb94ec170dbd042f08a4a61b9915c526e",
      "old_mode": 33188,
      "old_path": "security/keys/process_keys.c",
      "new_id": "d42d2158ce13beba31fb2753356e244a18e3a2a1",
      "new_mode": 33188,
      "new_path": "security/keys/process_keys.c"
    },
    {
      "type": "modify",
      "old_id": "90c1506d007cc219c17ebd9c571d94b9c6a58ed9",
      "old_mode": 33188,
      "old_path": "security/keys/request_key.c",
      "new_id": "e6dd366d43a35b0b70e6d1a40edec79a706a72d8",
      "new_mode": 33188,
      "new_path": "security/keys/request_key.c"
    },
    {
      "type": "modify",
      "old_id": "f22264632229ca79108a1e232461ecda378cc1e8",
      "old_mode": 33188,
      "old_path": "security/keys/request_key_auth.c",
      "new_id": "1ecd3d3fa9f895850a66e35c446b5ab506e85aab",
      "new_mode": 33188,
      "new_path": "security/keys/request_key_auth.c"
    }
  ]
}
