)]}'
{
  "commit": "e3ccaa9761200952cc269b1f4b7d7bb77a5e071b",
  "tree": "fce1240d5666184763da4b5fe3bfcfdf294faab6",
  "parents": [
    "8bc2d3cf612994a960c2e8eaea37f6676f67082a"
  ],
  "author": {
    "name": "Tyler Hicks",
    "email": "tyhicks@canonical.com",
    "time": "Wed Jun 20 23:50:59 2012 -0700"
  },
  "committer": {
    "name": "Tyler Hicks",
    "email": "tyhicks@canonical.com",
    "time": "Sun Jul 08 12:51:45 2012 -0500"
  },
  "message": "eCryptfs: Initialize empty lower files when opening them\n\nHistorically, eCryptfs has only initialized lower files in the\necryptfs_create() path. Lower file initialization is the act of writing\nthe cryptographic metadata from the inode\u0027s crypt_stat to the header of\nthe file. The ecryptfs_open() path already expects that metadata to be\nin the header of the file.\n\nA number of users have reported empty lower files in beneath their\neCryptfs mounts. Most of the causes for those empty files being left\naround have been addressed, but the presence of empty files causes\nproblems due to the lack of proper cryptographic metadata.\n\nTo transparently solve this problem, this patch initializes empty lower\nfiles in the ecryptfs_open() error path. If the metadata is unreadable\ndue to the lower inode size being 0, plaintext passthrough support is\nnot in use, and the metadata is stored in the header of the file (as\nopposed to the user.ecryptfs extended attribute), the lower file will be\ninitialized.\n\nThe number of nested conditionals in ecryptfs_open() was getting out of\nhand, so a helper function was created. To avoid the same nested\nconditional problem, the conditional logic was reversed inside of the\nhelper function.\n\nhttps://launchpad.net/bugs/911507\n\nSigned-off-by: Tyler Hicks \u003ctyhicks@canonical.com\u003e\nCc: John Johansen \u003cjohn.johansen@canonical.com\u003e\nCc: Colin Ian King \u003ccolin.king@canonical.com\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "0deb4f24957a39814e41257a5dfaf3e798fb823f",
      "old_mode": 33188,
      "old_path": "fs/ecryptfs/ecryptfs_kernel.h",
      "new_id": "9f77ff818173b4a6f8370c9d404bbeb782871788",
      "new_mode": 33188,
      "new_path": "fs/ecryptfs/ecryptfs_kernel.h"
    },
    {
      "type": "modify",
      "old_id": "2b17f2f9b121d0ee89e7d00cb1e93d7f9cf9dca4",
      "old_mode": 33188,
      "old_path": "fs/ecryptfs/file.c",
      "new_id": "baf8b0550391ffb12d214421a09ae433318c589d",
      "new_mode": 33188,
      "new_path": "fs/ecryptfs/file.c"
    },
    {
      "type": "modify",
      "old_id": "65efe5fa687c413dd78d1928dac6c56473e43768",
      "old_mode": 33188,
      "old_path": "fs/ecryptfs/inode.c",
      "new_id": "2d4143f8f5c969455e636fda9287155300679c42",
      "new_mode": 33188,
      "new_path": "fs/ecryptfs/inode.c"
    }
  ]
}
