)]}'
{
  "commit": "a5adaced2e13c135d5d9cc65be9eb95aa3bacedf",
  "tree": "e4ad0544170f80c65ee073d08d2974780be5d5df",
  "parents": [
    "ecad27cf98c391d5cfdc26ce0e442e02347baad0"
  ],
  "author": {
    "name": "Jeff King",
    "email": "peff@peff.net",
    "time": "Wed Sep 16 13:12:52 2015 -0400"
  },
  "committer": {
    "name": "Junio C Hamano",
    "email": "gitster@pobox.com",
    "time": "Wed Sep 23 11:35:48 2015 -0700"
  },
  "message": "transport: add a protocol-whitelist environment variable\n\nIf we are cloning an untrusted remote repository into a\nsandbox, we may also want to fetch remote submodules in\norder to get the complete view as intended by the other\nside. However, that opens us up to attacks where a malicious\nuser gets us to clone something they would not otherwise\nhave access to (this is not necessarily a problem by itself,\nbut we may then act on the cloned contents in a way that\nexposes them to the attacker).\n\nIdeally such a setup would sandbox git entirely away from\nhigh-value items, but this is not always practical or easy\nto set up (e.g., OS network controls may block multiple\nprotocols, and we would want to enable some but not others).\n\nWe can help this case by providing a way to restrict\nparticular protocols. We use a whitelist in the environment.\nThis is more annoying to set up than a blacklist, but\ndefaults to safety if the set of protocols git supports\ngrows). If no whitelist is specified, we continue to default\nto allowing all protocols (this is an \"unsafe\" default, but\nsince the minority of users will want this sandboxing\neffect, it is the only sensible one).\n\nA note on the tests: ideally these would all be in a single\ntest file, but the git-daemon and httpd test infrastructure\nis an all-or-nothing proposition rather than a test-by-test\nprerequisite. By putting them all together, we would be\nunable to test the file-local code on machines without\napache.\n\nSigned-off-by: Jeff King \u003cpeff@peff.net\u003e\nSigned-off-by: Junio C Hamano \u003cgitster@pobox.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a62ed6f11abf973952cef795907c8f8488f12c69",
      "old_mode": 33188,
      "old_path": "Documentation/git.txt",
      "new_id": "b6a12b32ee5b7b01fc49ddda9f0ac280eaf0cac1",
      "new_mode": 33188,
      "new_path": "Documentation/git.txt"
    },
    {
      "type": "modify",
      "old_id": "14c924b030cc17e083d4b8662faf5c6d48f68d85",
      "old_mode": 33188,
      "old_path": "connect.c",
      "new_id": "bd4b50ea153c06089cbc8828b5369729b009eab4",
      "new_mode": 33188,
      "new_path": "connect.c"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "b0917d93e64a93faef4a87fed300761f7461420a",
      "new_mode": 33188,
      "new_path": "t/lib-proto-disable.sh"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "563592d8a8a5f6fec7da160f292b2f8b8824327e",
      "new_mode": 33261,
      "new_path": "t/t5810-proto-disable-local.sh"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "8ac6b2a1d0a286cac120c751e5e3038e465dc074",
      "new_mode": 33261,
      "new_path": "t/t5811-proto-disable-git.sh"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "dd5001cbac8a0a66a3235e9e6c83a62bc1ab595f",
      "new_mode": 33261,
      "new_path": "t/t5812-proto-disable-http.sh"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "ad877d774aad308bc81ecfae6eead262719694b9",
      "new_mode": 33261,
      "new_path": "t/t5813-proto-disable-ssh.sh"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "9d6f7dfa2cc3da2f68d42708cb62bf3116bcc604",
      "new_mode": 33261,
      "new_path": "t/t5814-proto-disable-ext.sh"
    },
    {
      "type": "modify",
      "old_id": "7dc4a443aee0c6220dc0581d4bcfdd1d65da1d8a",
      "old_mode": 33188,
      "old_path": "transport-helper.c",
      "new_id": "0b5362c268c38a1e4110313e198194fab9f76c83",
      "new_mode": 33188,
      "new_path": "transport-helper.c"
    },
    {
      "type": "modify",
      "old_id": "88bde1d85e48e7866881806d1ec3f1e3d420ab67",
      "old_mode": 33188,
      "old_path": "transport.c",
      "new_id": "94fe8658f2bfa7775e667f7c28264c3dbe7f63b7",
      "new_mode": 33188,
      "new_path": "transport.c"
    },
    {
      "type": "modify",
      "old_id": "3e0091eaabe406759005bc24ce2ff39144caa72d",
      "old_mode": 33188,
      "old_path": "transport.h",
      "new_id": "f7df6ec1d2a1f17e9932e531110cc3fe4bdbb81c",
      "new_mode": 33188,
      "new_path": "transport.h"
    }
  ]
}
