)]}'
{
  "log": [
    {
      "commit": "f60a47386855e6fa842a3db54669e356e82d5ab3",
      "tree": "f64aabb6b1cd1aef85c33784fc135be62387b944",
      "parents": [
        "b816cabb82b8b0e9960d6eb68a091fe40246e5c1"
      ],
      "author": {
        "name": "Andrea Arcangeli",
        "email": "andrea@cpushare.com",
        "time": "Wed Oct 10 17:19:51 2012 +0200"
      },
      "committer": {
        "name": "Andrew Sutherland",
        "email": "dr3wsuth3rland@gmail.com",
        "time": "Sun Nov 25 13:55:20 2012 -0600"
      },
      "message": "avoid altering the SIGCHLD handler before execve\n\nWithout this applications depending on being started with the SIG_DFL\nbeahvior breaks.\n\nLikely the idea was to start the intent in parallel to the executed app\nand to avoid the child getting confused when the intent process exited\n(and also to avoid leaving a zombie around). But that breaks the\nassumption application do on the default sigchld handler.\n\nDoing waitpid to get rid of the zombie before executing the app is going\nto fix it, no need to alter the sigchld handler anymore. This reduces\nparallelism a bit but it\u0027s unlikely to be noticeable.\n\nChange-Id: Ia07d42ec68a394e5c4113a4be65d995ed37099e0\n\nSigned-off-by: Andrea Arcangeli \u003candrea@cpushare.com\u003e\n"
    },
    {
      "commit": "b816cabb82b8b0e9960d6eb68a091fe40246e5c1",
      "tree": "babb3ff321177537ea19a549174c773fa7b603b9",
      "parents": [
        "ec85d84efac04c8a347586e7b5338ab5669b6348",
        "95e81e55591417b9579e1c0373a22d4972b821f1"
      ],
      "author": {
        "name": "Andrew Sutherland",
        "email": "dr3wsuth3rland@gmail.com",
        "time": "Sun Nov 25 13:52:03 2012 -0600"
      },
      "committer": {
        "name": "Andrew Sutherland",
        "email": "dr3wsuth3rland@gmail.com",
        "time": "Sun Nov 25 13:52:03 2012 -0600"
      },
      "message": "Merge remote-tracking branch \u0027chains/gc\u0027 into jb2\n"
    },
    {
      "commit": "ec85d84efac04c8a347586e7b5338ab5669b6348",
      "tree": "7c871fa6d2aaa65318634110c48f43140af88cec",
      "parents": [
        "647459b05bc836aaaa421318cf707cb02c4e5538"
      ],
      "author": {
        "name": "Andrew Sutherland",
        "email": "dr3wsuth3rland@gmail.com",
        "time": "Sun Nov 25 13:51:59 2012 -0600"
      },
      "committer": {
        "name": "Andrew Sutherland",
        "email": "dr3wsuth3rland@gmail.com",
        "time": "Sun Nov 25 13:51:59 2012 -0600"
      },
      "message": "Revert \"su: LOG* -\u003e ALOG*\"\n\nThis reverts commit 647459b05bc836aaaa421318cf707cb02c4e5538.\n"
    },
    {
      "commit": "95e81e55591417b9579e1c0373a22d4972b821f1",
      "tree": "babb3ff321177537ea19a549174c773fa7b603b9",
      "parents": [
        "794fb0047ac06d4764f4cf16be0d03b406c354d3"
      ],
      "author": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Tue Nov 20 20:53:13 2012 +0000"
      },
      "committer": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Tue Nov 20 20:53:13 2012 +0000"
      },
      "message": "Update version\n"
    },
    {
      "commit": "794fb0047ac06d4764f4cf16be0d03b406c354d3",
      "tree": "a004d398fd5a00405ab4ae1604c61c5fdbd14561",
      "parents": [
        "de0050de03d27112ffa476d175208c11532b4938"
      ],
      "author": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Tue Nov 20 20:43:49 2012 +0000"
      },
      "committer": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Tue Nov 20 20:43:49 2012 +0000"
      },
      "message": "Multi-user support with 3 modes\n"
    },
    {
      "commit": "de0050de03d27112ffa476d175208c11532b4938",
      "tree": "d713c66c7d5b405db7cdd3fd4b7ad6b2b4756fdd",
      "parents": [
        "779707bcaacf766c198815ebe74b94c83b4117aa"
      ],
      "author": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sun Nov 18 17:39:44 2012 +0000"
      },
      "committer": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sun Nov 18 17:39:44 2012 +0000"
      },
      "message": "Fix for apps that use multiple commands\n"
    },
    {
      "commit": "779707bcaacf766c198815ebe74b94c83b4117aa",
      "tree": "d5cb6ad2e497ec27be5813d6c4c5fece7e7a1d81",
      "parents": [
        "fa0b93d42e4bdd633dc8c67961adbf2671d21076"
      ],
      "author": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Mon Oct 01 06:15:46 2012 +0200"
      },
      "committer": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Mon Oct 01 06:15:46 2012 +0200"
      },
      "message": "Fix for apps that use multiple commands not being remembered properly\n"
    },
    {
      "commit": "fa0b93d42e4bdd633dc8c67961adbf2671d21076",
      "tree": "9a7b18bfd6cb06ec1b424d36c45038b2e8999c66",
      "parents": [
        "ad1151e7dc72ca91c40dff9516b8c77c3e4b44f5"
      ],
      "author": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sun Aug 19 08:09:54 2012 +0100"
      },
      "committer": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sun Aug 19 08:09:54 2012 +0100"
      },
      "message": "Prevent command line pollution from allowing privilege escalation\n\nSee matching commit in Superuser repo\n"
    },
    {
      "commit": "ad1151e7dc72ca91c40dff9516b8c77c3e4b44f5",
      "tree": "7ff90fdcc0f18f5b297e954a337e3bc03145f8ab",
      "parents": [
        "6a5c06e93c8c0706b19e0009b99d2275c848ba86"
      ],
      "author": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sun Aug 19 05:27:52 2012 +0100"
      },
      "committer": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sun Aug 19 05:27:52 2012 +0100"
      },
      "message": "Read in the extra line of the default store file\n\nCorresponds with Superuser repo commit\ne16376e17a7680c50bdf626a73f46a8b60bd4793\n"
    },
    {
      "commit": "6a5c06e93c8c0706b19e0009b99d2275c848ba86",
      "tree": "b1ae14d79949d54936482a7e772a9da27a234bfd",
      "parents": [
        "fb7c8d1d24492028f1810fcfdf06f889385c0bfa"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Wed Aug 01 18:45:07 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Wed Aug 01 18:45:07 2012 +0400"
      },
      "message": "Remove \u003cendian.h\u003e\n\n\u003cendian.h\u003e defines htobe32 and like, not htonl we\u0027re using. Strictly\nspeaking, we have to to include \u003carpa/inet.h\u003e. su isn\u0027t aimed to be so\nportable though.\n"
    },
    {
      "commit": "fb7c8d1d24492028f1810fcfdf06f889385c0bfa",
      "tree": "4508091ff5f5c4f7dd4e33b22c3c1ab2e0b4cec4",
      "parents": [
        "70a5e416f0c83f5b134a6e61ef7e60c85ee10422"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Wed Aug 01 18:32:23 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Wed Aug 01 18:32:23 2012 +0400"
      },
      "message": "Mark child as volatile\n\nIt\u0027s shared between the SIGCHLD signal handler and normal flow. Its type is\nstill pid_t, however, not sig_atomic_t.\n"
    },
    {
      "commit": "70a5e416f0c83f5b134a6e61ef7e60c85ee10422",
      "tree": "96de49becdc64b8b36c03259f979a442009a22f0",
      "parents": [
        "dfb29f9598c3886e58986688d11af8714204414d"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Wed Aug 01 18:14:58 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Wed Aug 01 18:14:58 2012 +0400"
      },
      "message": "Move kill_child into send_intent\n"
    },
    {
      "commit": "dfb29f9598c3886e58986688d11af8714204414d",
      "tree": "31993f1b35c296d8f23e6b4883c1cd5229c0e8cf",
      "parents": [
        "679977961cd3b73b65f4e333d2e0ddcd4a55eb9c"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Tue Jul 31 20:02:50 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Tue Jul 31 20:02:50 2012 +0400"
      },
      "message": "Don\u0027t touch su context in children\n\nIt\u0027s too high on the stack\n"
    },
    {
      "commit": "679977961cd3b73b65f4e333d2e0ddcd4a55eb9c",
      "tree": "149869a46c4a5d3c99bd363f505c123fc3acbc16",
      "parents": [
        "40c3d1756461061c6d22aad89d452daa45dddf1f"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Tue Jul 31 17:55:52 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Tue Jul 31 17:55:52 2012 +0400"
      },
      "message": "Wait until the child is really killed, ...\n\n... so su can get its exit status\n"
    },
    {
      "commit": "40c3d1756461061c6d22aad89d452daa45dddf1f",
      "tree": "294ef1927c722ccd485db6a7e694fe3ff33daa30",
      "parents": [
        "dbe124982f950db932999cac1bfa57442ab91ea7"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sat Jul 28 15:19:16 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sat Jul 28 15:19:16 2012 +0400"
      },
      "message": "Guard select from SIGCHLD\n"
    },
    {
      "commit": "dbe124982f950db932999cac1bfa57442ab91ea7",
      "tree": "f141fdb81ab434bd881b4501d15f4f008eed2d2e",
      "parents": [
        "acf38cda6979e558232f0fb3609ffc20c073bc04"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Jul 26 20:17:28 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Jul 26 20:29:16 2012 +0400"
      },
      "message": "Don\u0027t wait until am terminates, kill it, if it hangs\n\nPick up am exit code in the SIGCHLD handler. Kill am with request\n(first child) after a response has been received from Requestor,\nif that am hangs.\n"
    },
    {
      "commit": "acf38cda6979e558232f0fb3609ffc20c073bc04",
      "tree": "536c4c7b8373ec99576ef4d30fed6df84e9a0e36",
      "parents": [
        "fcd02a707856c5f1ee43b4ec88b810633b2eda9b"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Jul 26 14:40:00 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Jul 26 20:28:54 2012 +0400"
      },
      "message": "Move socket_path to the su context\n\nChoose the value of the socket field in intents depending on the allow arg,\nbecause the socket_path argument is removed from send_intent. Use enum type\nfor allow.\n"
    },
    {
      "commit": "fcd02a707856c5f1ee43b4ec88b810633b2eda9b",
      "tree": "cc17e9e43295b802aa8bff3185a4a42d4110358e",
      "parents": [
        "2ceab21e6c1b593d7fee6b88209a15f878601958"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Jul 26 14:18:04 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Jul 26 14:18:04 2012 +0400"
      },
      "message": "Declare deny/allow as noreturn\n"
    },
    {
      "commit": "2ceab21e6c1b593d7fee6b88209a15f878601958",
      "tree": "94e767ed340c0134f54d9fd8612dc760ca5b3cfe",
      "parents": [
        "4692fd8aa93ce35f8ea292c28359259e105925a8"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Wed Jul 25 14:55:12 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Wed Jul 25 14:55:12 2012 +0400"
      },
      "message": "Speed up the CM-specific code a bit for non-CM ROMs\n\nJust check whether ro.cm.version exists without getting its value nobody\ncares of anyway. The check_property function used here returns true if\na property with given prefix exists. More than enough for CM and others.\n\nCertainly, the best way is to fix the nighmare called get_property. At least,\nthose stupid strdup() shall be removed. If somebody is willing to fix\nthis \"code\", he/she is welcomed.\n"
    },
    {
      "commit": "4692fd8aa93ce35f8ea292c28359259e105925a8",
      "tree": "a634d38ee27a379c29b7bd47a6b9c160780a0b1d",
      "parents": [
        "53f224132351f0dface13c563d7a9c87cf571bb2"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Tue Jul 24 19:26:35 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Tue Jul 24 19:26:35 2012 +0400"
      },
      "message": "Move CM-specific code to access_disabled()\n\nRestructure the code a bit decreasing the cost of checks for non-CM ROMs\n"
    },
    {
      "commit": "53f224132351f0dface13c563d7a9c87cf571bb2",
      "tree": "b1b630657d32dfe0d9c4faf5577f55a4efe639db",
      "parents": [
        "f09ab436caaddb80606e0c3c896b91748869d005"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Mon Jul 23 17:19:51 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Mon Jul 23 17:19:51 2012 +0400"
      },
      "message": "Set close-on-exec for the socket\n\nAn attacker could access the communication channel between su and Superuser\notherwise.\n"
    },
    {
      "commit": "f09ab436caaddb80606e0c3c896b91748869d005",
      "tree": "089f16e9acb8e9fd59044ea8740257ee402edad0",
      "parents": [
        "0fa617a13ea9c01386986a24cf76936976efb50a"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Mon Jul 23 16:08:41 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Mon Jul 23 16:08:41 2012 +0400"
      },
      "message": "Use fork/exec instead of system(3)\n\nBy doing so we may\n- move change of identity to the child, so no need to change it back\n- drop saved set-user/group-ID safely\n  An attacker will gain no more than a process with its ids. As a side effect,\n  the code that unsets environment variables becomes useless.\n- implement asynchronous wait for child later\n"
    },
    {
      "commit": "0fa617a13ea9c01386986a24cf76936976efb50a",
      "tree": "153974da6b943bb155217e2da8f2c20571e6f925",
      "parents": [
        "2899822c0ed2c40eb58324e3eed08f7dc44478e6"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Mon Jul 23 16:04:09 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Mon Jul 23 16:04:09 2012 +0400"
      },
      "message": "Move headers required by PLOGE in su.h\n"
    },
    {
      "commit": "2899822c0ed2c40eb58324e3eed08f7dc44478e6",
      "tree": "bb6dc817fd8b27855de4ca9681d621e2eafb59ea",
      "parents": [
        "ffe8b01e0aaaa2676265fb3ab09657220a6310b8"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Jul 19 20:06:21 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Jul 19 20:06:21 2012 +0400"
      },
      "message": "Use /dev as storage for cache again\n"
    },
    {
      "commit": "ffe8b01e0aaaa2676265fb3ab09657220a6310b8",
      "tree": "f5b0515059eb1aba3b8b81b04d9cb8fa78a312ee",
      "parents": [
        "a315e38b69ad734194ebfa54a3a325b929dd2d33"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Jul 19 20:05:45 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Jul 19 20:05:45 2012 +0400"
      },
      "message": "Fix compilation on JB\n"
    },
    {
      "commit": "a315e38b69ad734194ebfa54a3a325b929dd2d33",
      "tree": "f623adde2312f00e26c88ca54610fa34a139b0a2",
      "parents": [
        "5bbd487c2283c8c6a58f2c3654e6a5b99ce2b54a"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Jul 19 19:48:34 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Jul 19 19:48:34 2012 +0400"
      },
      "message": "Clean up database_check\n\no don\u0027t use malloc/free, allocate space on stack\no don\u0027t use unsafe sprintf\no use ARG_MAX as cmd size for clarity, cmd isn\u0027t just a filename\no remove unsafe logging, ensure last points inside cmd\n"
    },
    {
      "commit": "5bbd487c2283c8c6a58f2c3654e6a5b99ce2b54a",
      "tree": "01ce9f25973994d023bf5e092ba98edd0492ca8c",
      "parents": [
        "c6ef3cc4e6a3d8ba23d3e431d0d1eab483527dfe"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Jul 19 19:36:24 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Jul 19 19:36:24 2012 +0400"
      },
      "message": "Set effective uid/gid back, unlink fails otherwise\n"
    },
    {
      "commit": "c6ef3cc4e6a3d8ba23d3e431d0d1eab483527dfe",
      "tree": "90cbb28ed1a47e6a2f6855ec731a831ed29aefc2",
      "parents": [
        "f215759188d086177c512c20340a5e93259c3eb9"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Jul 19 16:37:23 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Jul 19 16:37:23 2012 +0400"
      },
      "message": "Add missing usistd.h for system(3)\n"
    },
    {
      "commit": "647459b05bc836aaaa421318cf707cb02c4e5538",
      "tree": "f99905e3ce16409df18ce3c0e1fbcf735687317b",
      "parents": [
        "f215759188d086177c512c20340a5e93259c3eb9"
      ],
      "author": {
        "name": "Paul Mongold",
        "email": "pmongold@gmail.com",
        "time": "Tue Jul 17 00:45:52 2012 -0400"
      },
      "committer": {
        "name": "Paul Mongold",
        "email": "pmongold@gmail.com",
        "time": "Tue Jul 17 00:45:52 2012 -0400"
      },
      "message": "su: LOG* -\u003e ALOG*\n"
    },
    {
      "commit": "f215759188d086177c512c20340a5e93259c3eb9",
      "tree": "7c871fa6d2aaa65318634110c48f43140af88cec",
      "parents": [
        "d74df1719920dcd4b56f44851cf6a1f0131de4d8"
      ],
      "author": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sun Jul 08 08:27:34 2012 +0100"
      },
      "committer": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sun Jul 08 08:27:34 2012 +0100"
      },
      "message": "Revert \"Revert \"Update version\"\"\n\nThis reverts commit 15ea3553bfc2a2d8eb1ce25d45dd4033807481ce.\n"
    },
    {
      "commit": "d74df1719920dcd4b56f44851cf6a1f0131de4d8",
      "tree": "b7b048de1f70d2ca6f3911efb6a6a6871fc69bda",
      "parents": [
        "588c414d4a99f60010dcc7d4c31d8410c5028aac"
      ],
      "author": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sun Jul 08 08:27:26 2012 +0100"
      },
      "committer": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sun Jul 08 08:27:26 2012 +0100"
      },
      "message": "Revert \"Revert \"Use flat files for stored apps\"\"\n\nThis reverts commit 588c414d4a99f60010dcc7d4c31d8410c5028aac.\n"
    },
    {
      "commit": "588c414d4a99f60010dcc7d4c31d8410c5028aac",
      "tree": "4ab4daeb3d4e66df042f148c21757c3c385a56bf",
      "parents": [
        "15ea3553bfc2a2d8eb1ce25d45dd4033807481ce"
      ],
      "author": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sun Jul 08 07:49:57 2012 +0100"
      },
      "committer": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sun Jul 08 07:49:57 2012 +0100"
      },
      "message": "Revert \"Use flat files for stored apps\"\n\nThis reverts commit ec37525297010b47d4109e7971c6de0b9040f847.\n"
    },
    {
      "commit": "15ea3553bfc2a2d8eb1ce25d45dd4033807481ce",
      "tree": "b7b048de1f70d2ca6f3911efb6a6a6871fc69bda",
      "parents": [
        "ff77b4978a421265c62e12f9551f3e101894705e"
      ],
      "author": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sun Jul 08 07:49:57 2012 +0100"
      },
      "committer": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sun Jul 08 07:49:57 2012 +0100"
      },
      "message": "Revert \"Update version\"\n\nThis reverts commit ff77b4978a421265c62e12f9551f3e101894705e.\n"
    },
    {
      "commit": "ff77b4978a421265c62e12f9551f3e101894705e",
      "tree": "7c871fa6d2aaa65318634110c48f43140af88cec",
      "parents": [
        "ec37525297010b47d4109e7971c6de0b9040f847"
      ],
      "author": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sat Jul 07 21:43:56 2012 +0100"
      },
      "committer": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sat Jul 07 21:43:56 2012 +0100"
      },
      "message": "Update version\n"
    },
    {
      "commit": "ec37525297010b47d4109e7971c6de0b9040f847",
      "tree": "b7b048de1f70d2ca6f3911efb6a6a6871fc69bda",
      "parents": [
        "538413f2b709edceb62943222e07e9a9dce75163"
      ],
      "author": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sat Jul 07 21:43:39 2012 +0100"
      },
      "committer": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sat Jul 07 21:43:39 2012 +0100"
      },
      "message": "Use flat files for stored apps\n"
    },
    {
      "commit": "538413f2b709edceb62943222e07e9a9dce75163",
      "tree": "4ab4daeb3d4e66df042f148c21757c3c385a56bf",
      "parents": [
        "8bf97db843429917c5d72f94c5213d2fe00b3e3d"
      ],
      "author": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sun Jul 01 02:30:25 2012 +0100"
      },
      "committer": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sun Jul 01 02:30:25 2012 +0100"
      },
      "message": "CM specific changes to allow disabling of root access from system settings\n"
    },
    {
      "commit": "8bf97db843429917c5d72f94c5213d2fe00b3e3d",
      "tree": "a666a2bfc3cc62b55b3eb027d8521ec199dafb9c",
      "parents": [
        "d86184a90e78016fd66f558cd12d54a979b7fb46"
      ],
      "author": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Mon Jun 04 21:26:30 2012 +0100"
      },
      "committer": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Mon Jun 04 21:26:30 2012 +0100"
      },
      "message": "Send information required for the result service in the intent\n"
    },
    {
      "commit": "d86184a90e78016fd66f558cd12d54a979b7fb46",
      "tree": "9fae6a0a48b1df6923676e669d7e2363e2d6fc2f",
      "parents": [
        "382d1e37c1fec3d58f49a1ccb9cf63de046965df"
      ],
      "author": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Mon Jun 04 20:23:36 2012 +0100"
      },
      "committer": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Mon Jun 04 20:23:36 2012 +0100"
      },
      "message": "Build su as static.\n\nWith so many different versions of Android, using a dynamically linked\nbinary is just not practical, since things can be wildly different on\ndifferent versions.\n"
    },
    {
      "commit": "382d1e37c1fec3d58f49a1ccb9cf63de046965df",
      "tree": "5133e704f6f563e2de1f3dd52bdbf10aaef5fccb",
      "parents": [
        "f39dbf0effb2e4b110ae9a9a5d930044ea275280"
      ],
      "author": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Mon Jun 04 20:17:44 2012 +0100"
      },
      "committer": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Mon Jun 04 20:17:44 2012 +0100"
      },
      "message": "Use am to send intents rather than a binder transaction.\n\nThis commit is by koush and is mostly copied from the CyanogenMod fork\nof su.\n\nBy using am instead of a binder transaction, we can guarantee\ncompatibility with current and future versions of Android.\n"
    },
    {
      "commit": "f39dbf0effb2e4b110ae9a9a5d930044ea275280",
      "tree": "918bf819a89eef7f7ec47068b1f7fcfd7a52f0f1",
      "parents": [
        "8afac1d25701618cd32ad2bc5dce01e3a77a5604"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sat Mar 03 12:15:07 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sat Mar 03 12:15:07 2012 +0400"
      },
      "message": "Change euid back to root before finally set a new id\n\nFixes a bug reported in a comment to the issue #9 against su-binary\n(see https://github.com/ChainsDD/su-binary/issues/9#issuecomment-4220404 for details).\n\nThanks to Erik Pilsits (epilsits@gmail.com) for the report.\n\nAdd the euid change before populate_environment() anticipating we have to merge\nthe commit \"Inherit LD_LIBRARY_PATH ...\", which needs root credentials in order to\nsuccessfully open /proc/\u003cppid\u003e/environ.\n"
    },
    {
      "commit": "8afac1d25701618cd32ad2bc5dce01e3a77a5604",
      "tree": "c07b0dacc0f6d6c237448b59a1edd4fde69ba090",
      "parents": [
        "c97414b9d2f7bb080818d49a47a3b9fe0aea2543"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sat Feb 25 23:55:55 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sat Feb 25 23:59:03 2012 +0400"
      },
      "message": "Setup environment for a new process image, implement -p/-m options\n"
    },
    {
      "commit": "c97414b9d2f7bb080818d49a47a3b9fe0aea2543",
      "tree": "d29cd287909232788ce6a21222dcb88fd7466f5c",
      "parents": [
        "b7744e994ee283e925e20d77f2c7c189f5bbe913"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Mon Feb 20 23:29:00 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Mon Feb 20 23:29:00 2012 +0400"
      },
      "message": "Revert \"Inherit the environment of the caller process for a new process image\"\n\nThis reverts commit e0329cee5f18171ac7a4e89e42a0bb763a1f30a8.\n"
    },
    {
      "commit": "b7744e994ee283e925e20d77f2c7c189f5bbe913",
      "tree": "e4983bf89df368f9da05ab342eaeee84208c44f5",
      "parents": [
        "e0329cee5f18171ac7a4e89e42a0bb763a1f30a8",
        "33529968515ec0c8d2dc73804091d02331454631"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sat Feb 18 21:14:28 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sat Feb 18 21:16:51 2012 +0400"
      },
      "message": "Merge branch \u0027gc\u0027 into gc-ics\n"
    },
    {
      "commit": "33529968515ec0c8d2dc73804091d02331454631",
      "tree": "d29cd287909232788ce6a21222dcb88fd7466f5c",
      "parents": [
        "067da4eadd7e892915e133dcae295af90f998bb7"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sun Jan 29 22:00:27 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sun Jan 29 22:00:27 2012 +0400"
      },
      "message": "constantify su_context* arg \u0026 small cosmetic fixes\n"
    },
    {
      "commit": "067da4eadd7e892915e133dcae295af90f998bb7",
      "tree": "b85e6406483c5432a82f28d041dc37728d3171ca",
      "parents": [
        "73e06ac2df0f2f3d4753cd8ad03ec88240bdc5d6"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sun Jan 29 21:50:31 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sun Jan 29 21:50:31 2012 +0400"
      },
      "message": "Provide LOG_TAG for db too\n"
    },
    {
      "commit": "73e06ac2df0f2f3d4753cd8ad03ec88240bdc5d6",
      "tree": "b871ceb6d04da90a5a9dc1c470d73d37b2c55408",
      "parents": [
        "95fe23798e918ad5b246e2eff42bb6ae841bdf40"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sun Jan 29 21:37:51 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sun Jan 29 21:37:51 2012 +0400"
      },
      "message": "Pass last parameter to send_intent() as pointer to the action name\n"
    },
    {
      "commit": "95fe23798e918ad5b246e2eff42bb6ae841bdf40",
      "tree": "ab965cb72541a1302d3ee6656c8751375f49eb5d",
      "parents": [
        "6f6eb26839780ca56b5254745c7cae4d6dae9a26"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sun Jan 29 20:59:21 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sun Jan 29 20:59:21 2012 +0400"
      },
      "message": "Call property_get() only once\n\nproperty_get() iterates over potentially unbound array of properties. There is no good for\ncalling it several times per su invocation.\n"
    },
    {
      "commit": "6f6eb26839780ca56b5254745c7cae4d6dae9a26",
      "tree": "9cf4c578be37b69634eec5519b702f7e985412cf",
      "parents": [
        "4eb80175f98569f7b9f3facb4f9e184c293cb93d"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sun Jan 29 20:48:21 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sun Jan 29 20:48:21 2012 +0400"
      },
      "message": "Move frequently used code snippet in get_command()\n"
    },
    {
      "commit": "4eb80175f98569f7b9f3facb4f9e184c293cb93d",
      "tree": "a944cfbded7e9b21d157e3c79e66082f0004437e",
      "parents": [
        "418ec8b69d3923122bbed2bf8066964166d5cf79"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sun Jan 29 20:18:52 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sun Jan 29 20:46:40 2012 +0400"
      },
      "message": "Combine su_initiator and su_request into su_context\n"
    },
    {
      "commit": "418ec8b69d3923122bbed2bf8066964166d5cf79",
      "tree": "9d5e98e1901b308b1b3249d10196d307a5014406",
      "parents": [
        "ac59b39d0a5f4f34ecc8cab5c0de922f5d9cd0ef"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sun Jan 29 17:15:55 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sun Jan 29 17:42:18 2012 +0400"
      },
      "message": "Pass the rest of arguments in the command line to a callee\n\nThus, someone may invoke su as\nsu -s shell uid args...\n\nFor example,\nsu -s /system/xbin/busybox root mount -o rw,remount /system\n"
    },
    {
      "commit": "ac59b39d0a5f4f34ecc8cab5c0de922f5d9cd0ef",
      "tree": "ac4aee9ecd0865e2c7e919fcd326b495ecbc0fba",
      "parents": [
        "69c1b43ae913b51efe1296441a6899daafe7f8e3"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sat Jan 21 22:55:02 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sat Jan 21 22:55:02 2012 +0400"
      },
      "message": "Handle -l option\n"
    },
    {
      "commit": "69c1b43ae913b51efe1296441a6899daafe7f8e3",
      "tree": "0085190afa91f8dfcd240ee0594063206d9015ab",
      "parents": [
        "e39e1e30c9786e94bbd318fb50e8a2d43b8e7a86"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sat Jan 21 20:09:29 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sat Jan 21 20:09:29 2012 +0400"
      },
      "message": "Return special exit code when terminating by signal\n\nSo user could distinguish between SIGHUP and other abnormal terminations at least\n"
    },
    {
      "commit": "e39e1e30c9786e94bbd318fb50e8a2d43b8e7a86",
      "tree": "44d6392ea5628c3f1cd59e349f04ba5cd76df4fd",
      "parents": [
        "aa74885fd9f2193c895c043aeebb58121fa7c80b"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sat Jan 21 19:48:05 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sat Jan 21 20:01:43 2012 +0400"
      },
      "message": "Accurately handle -c option\n"
    },
    {
      "commit": "aa74885fd9f2193c895c043aeebb58121fa7c80b",
      "tree": "30ffc7687bf2f26c8df73420a50077b90a329318",
      "parents": [
        "c29f8d42acbe6e6fd2e31b047d86268460e2fdf5"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Tue Jan 17 23:26:09 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sat Jan 21 20:01:43 2012 +0400"
      },
      "message": "Prepare to implement argument passing from su command line to a callee\n"
    },
    {
      "commit": "c29f8d42acbe6e6fd2e31b047d86268460e2fdf5",
      "tree": "2a7632d76cdd8c449649ceb6e351b7656cac1802",
      "parents": [
        "bc9bbecfe978de88aa25e8fdad80e3e4f1eb8b62"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Tue Jan 17 23:11:51 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sat Jan 21 20:00:44 2012 +0400"
      },
      "message": "Remove the communication socket if Ctrl+C (SIGINT) or Ctrl+\\ (SIGQUIT) are pressed\n"
    },
    {
      "commit": "bc9bbecfe978de88aa25e8fdad80e3e4f1eb8b62",
      "tree": "cc175675673fe8f559fe3a148793284eb299fde1",
      "parents": [
        "94d02f2347451a5199c3afe6bc7d4e37c417a3db"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sat Jan 14 19:23:52 2012 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sat Jan 14 19:23:52 2012 +0400"
      },
      "message": "Check syscall return codes\n"
    },
    {
      "commit": "94d02f2347451a5199c3afe6bc7d4e37c417a3db",
      "tree": "b2a593068b001f0f9efbe53c73c954b1c1904846",
      "parents": [
        "0e769ccf82253becb41060d0c481a35a06a991e6"
      ],
      "author": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Thu Jan 05 19:12:13 2012 +0000"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Wed Jan 11 23:55:34 2012 +0400"
      },
      "message": "Bump version\n"
    },
    {
      "commit": "0e769ccf82253becb41060d0c481a35a06a991e6",
      "tree": "962c3c6c9c3d2136645b001c276026d5cc82ff9b",
      "parents": [
        "fc7479fab2d9d85c7c1f0bf1fee523a69d477a40"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Wed Dec 28 16:07:39 2011 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Wed Jan 11 23:55:34 2012 +0400"
      },
      "message": "Don\u0027t allow garbage instead of real uid in the command line\n\nReplace atoi(3) by strtoul(3), the latter allows to check parse errors\n"
    },
    {
      "commit": "fc7479fab2d9d85c7c1f0bf1fee523a69d477a40",
      "tree": "d7f26338673b659d6ba900b930bf44babde51969",
      "parents": [
        "da868645214a5026a606461be9f7421cb20f8c1f"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Wed Dec 28 15:11:39 2011 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Wed Jan 11 23:55:34 2012 +0400"
      },
      "message": "Be compatible with other implementation of su\n\no use getopt_long(3), so -l, --login can be allowed anywhere in the argument list\no add -m and -p which do nothing\no su -h outputs usage in stdout and exits with 0 while\n  su with invalid options outputs usage in stderr and exits with 2 now\n"
    },
    {
      "commit": "da868645214a5026a606461be9f7421cb20f8c1f",
      "tree": "3cb2f7dcb15ae3ac5876718075cbdf026ea83a45",
      "parents": [
        "b3c87082c8d6db1543f7cf0df7e31a85f5c61592"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Wed Dec 28 15:08:11 2011 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Wed Jan 11 23:55:34 2012 +0400"
      },
      "message": "Exit with false status if exec(3) fails ...\n\n... and show errno from exec(3) to the user\n"
    },
    {
      "commit": "b3c87082c8d6db1543f7cf0df7e31a85f5c61592",
      "tree": "64a7663fa3ce7a1682bee81689463060ba8346a9",
      "parents": [
        "57d607f73c3e056bcecc505b6630ebb780d55e38"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Wed Dec 28 10:41:28 2011 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Wed Jan 11 23:55:34 2012 +0400"
      },
      "message": "Fix segmentation fault when shell passed via -s doesn\u0027t contain /\n"
    },
    {
      "commit": "57d607f73c3e056bcecc505b6630ebb780d55e38",
      "tree": "67cb5b8f4f6c008bb415beb8a2e8733a88e634df",
      "parents": [
        "983d8e040bcddcc8a73e583a565183644629bcd7"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Wed Dec 28 10:36:20 2011 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Wed Jan 11 23:55:34 2012 +0400"
      },
      "message": "Use DEFAULT_COMMAND intead of hardcoded name for default shell\n"
    },
    {
      "commit": "983d8e040bcddcc8a73e583a565183644629bcd7",
      "tree": "d14827a9bfe6754f0079dac488d5680d6e7f14d2",
      "parents": [
        "cf50c028d866b2742e277c9efa14564084d629e4"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Mon Dec 26 23:58:56 2011 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Wed Jan 11 23:55:34 2012 +0400"
      },
      "message": "Reorder the code which stores intent into parcel for clarity\n\nData themself aren\u0027t changed actually, only comments around the code\n"
    },
    {
      "commit": "cf50c028d866b2742e277c9efa14564084d629e4",
      "tree": "368e6cfa2860a2127e3de510c99fae2f260cb8fb",
      "parents": [
        "815edac93007df1aa0eaff77d92d0a4b681feb4f"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sun Dec 25 20:52:23 2011 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Wed Jan 11 23:55:34 2012 +0400"
      },
      "message": "Fix off-by-one bug when calculating the bundle size\n\nRemember position in parcel before adding bundle signature. The old code supposed to\nwork by chance: the resolved type was NULL (so only -1 as int32 was stored in\nthe parcel) and redundant -1 (as int32) was added after the resolved type.\nThus, the former was actually a null string in the bundle and the latter acted the part\nof the (null) resolved type.\n\nDon\u0027t put garbage at the end of intent (after sticky which is supposed to be\nthe last parameter in an intent). Again, it seemed to work before due to Android stops\nto parse intent just after it gets all required parameters.\n"
    },
    {
      "commit": "815edac93007df1aa0eaff77d92d0a4b681feb4f",
      "tree": "cdffe745820e18a52331b3c870bc1c26cf2eb33f",
      "parents": [
        "cbcc7692bf2be0fbdce5598b61f36276d46b5794"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Mon Dec 19 23:59:31 2011 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Wed Jan 11 23:55:01 2012 +0400"
      },
      "message": "Merge legacy branch\n"
    },
    {
      "commit": "cbcc7692bf2be0fbdce5598b61f36276d46b5794",
      "tree": "2b3d1107ff78d8a97eb512690ee83cbe1da53a38",
      "parents": [
        "73a49647c561997e1791c8d644086521f41aadd8"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sun Dec 18 14:02:39 2011 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Jan 05 18:44:14 2012 +0400"
      },
      "message": "Don\u0027t use mktemp\n\nAfter access to the su cache was secured\n(commit 7d97cfea964c68c9c51a77750f6c7aa86fab66c3), we can use simple name convention\nfor the socket object. Name .socket\u003cpid\u003e is simple enough and doesn\u0027t require mktemp\nwhich is blamed by gcc on every linkage.\n"
    },
    {
      "commit": "73a49647c561997e1791c8d644086521f41aadd8",
      "tree": "034502535ae950f3d37e0a6f9e9af2da2bdcf2cf",
      "parents": [
        "fb9f063fbd48a9d26de6ee340a7d2a346bf50e39"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sat Dec 17 17:30:28 2011 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Jan 05 18:44:14 2012 +0400"
      },
      "message": "Move all code that deals with database in db.c\n"
    },
    {
      "commit": "fb9f063fbd48a9d26de6ee340a7d2a346bf50e39",
      "tree": "afbd3df4cf380ee51ecf8804c6eb95d4b413f175",
      "parents": [
        "b9a681d14e47badaecd0cccf1fc79f806bdcea6a"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Sat Dec 17 14:49:05 2011 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Jan 05 18:44:14 2012 +0400"
      },
      "message": "Preliminary fix for security issue reported via private email\n\nThis commit will be dropped in the near future. The fix has to be reimplemented.\nThe details of the issue and the reporter info will be published later.\n"
    },
    {
      "commit": "b9a681d14e47badaecd0cccf1fc79f806bdcea6a",
      "tree": "c9848787cfa68a83f6c8888216d6ddd4d9e8b908",
      "parents": [
        "c46a3db32523f31dd869160440ca15ecbfb077e9"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Fri Dec 16 23:25:08 2011 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Jan 05 18:43:38 2012 +0400"
      },
      "message": "Use /dev as storage for cache instead of /data/data\n\n/dev is tmpfs, so it\u0027s more suitable for storing temporary files than /data which is\nusualy internal flash memory on Android.\n\nAlso, set uid and gid of the requestor cache unconditionally. Superuser app can be\nremoved and, then, installed again with different uid. PackageManager doesn\u0027t protect\nus from this things anymore since the cache is in /dev now.\n"
    },
    {
      "commit": "c46a3db32523f31dd869160440ca15ecbfb077e9",
      "tree": "6d15b37273db18931d953ac88db38ee668991243",
      "parents": [
        "4b22bdcb2c650f949ef5a82a3b5b966333a45a4f"
      ],
      "author": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sun Dec 18 13:22:41 2011 +0000"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Jan 05 18:02:03 2012 +0400"
      },
      "message": "bump version\n"
    },
    {
      "commit": "4b22bdcb2c650f949ef5a82a3b5b966333a45a4f",
      "tree": "7bfb284209afa91e1458eccd0915867251728667",
      "parents": [
        "ae5862bc8a28d48423572c9838dca3b582774abe"
      ],
      "author": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sun Dec 18 13:21:55 2011 +0000"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Jan 05 17:59:54 2012 +0400"
      },
      "message": "Fix for Android 4.0.3 from shakalaca on github\n"
    },
    {
      "commit": "ae5862bc8a28d48423572c9838dca3b582774abe",
      "tree": "e071774f02e38fc0a1e7c871f9029387938e5d51",
      "parents": [
        "b1e2851a450b2a618ef1dc37086f322ce50c4080"
      ],
      "author": {
        "name": "Gleb O. Raiko",
        "email": "raiko@niisi.msk.ru",
        "time": "Sun Oct 23 17:30:45 2011 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Jan 05 17:59:54 2012 +0400"
      },
      "message": "Remove all occurences of req_uid\n"
    },
    {
      "commit": "b1e2851a450b2a618ef1dc37086f322ce50c4080",
      "tree": "96b83bbe7782d795e379a6f5052694ebafa88747",
      "parents": [
        "77cf83727acdf4da4aeaf8f8e292496d67944a4a"
      ],
      "author": {
        "name": "Gleb O. Raiko",
        "email": "raiko@niisi.msk.ru",
        "time": "Sat Dec 03 14:44:51 2011 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Jan 05 17:59:54 2012 +0400"
      },
      "message": "Fix potential security flaw in creation of sockets/directories\n\nPrevious code created a file object with two steps: the creation itself with\ndefault umask/mode and setting necessary permissions then. This approach is known to\nlead to a race condition when malicious process can open an object before\npermissions is set.\n\nThe patch sets creation mask (mask) to 027, thus denying any access from others. Also,\nthe patch removes all dead code which is not needed after changes mentioned.\n"
    },
    {
      "commit": "77cf83727acdf4da4aeaf8f8e292496d67944a4a",
      "tree": "ea8cf4e678a395b5b59ea52cc2f1f17c3334de8a",
      "parents": [
        "7e47a9941b539215504ff74a3486beaf72382a29"
      ],
      "author": {
        "name": "Gleb O. Raiko",
        "email": "raiko@niisi.msk.ru",
        "time": "Sun Oct 30 14:43:23 2011 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Jan 05 17:59:54 2012 +0400"
      },
      "message": "Clean up sources\n"
    },
    {
      "commit": "7e47a9941b539215504ff74a3486beaf72382a29",
      "tree": "d30dccb15ab105bb47f6158529f8f595b97ae977",
      "parents": [
        "8cee79fe1377ea5a891f624d2509137a06e240c1"
      ],
      "author": {
        "name": "Gleb O. Raiko",
        "email": "raiko@niisi.msk.ru",
        "time": "Sun Oct 30 00:32:54 2011 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Jan 05 17:59:54 2012 +0400"
      },
      "message": "Always free result table if sqlite3_get_table succeeds\n"
    },
    {
      "commit": "8cee79fe1377ea5a891f624d2509137a06e240c1",
      "tree": "e0150fe5dc39076c3cd536082fe88e6cfff46b65",
      "parents": [
        "8fb8756b737cd92be893a841061bab1ee42ed2f9"
      ],
      "author": {
        "name": "Gleb O. Raiko",
        "email": "raiko@niisi.msk.ru",
        "time": "Sun Oct 23 17:31:27 2011 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Jan 05 17:59:54 2012 +0400"
      },
      "message": "Remove setgroups in allow()\n\nsupplementary groups have been dropped already at this time\n(introduced by commit 00f1bb547ef219b690a440920c7bc29be2a1d348)\n"
    },
    {
      "commit": "8fb8756b737cd92be893a841061bab1ee42ed2f9",
      "tree": "d6a29e2c315308d63f8b9be7c670d38d32524c07",
      "parents": [
        "233b1d0aa95e8c43fd7f02b91ac047e2e32a8aa5"
      ],
      "author": {
        "name": "Gleb O. Raiko",
        "email": "raiko@niisi.msk.ru",
        "time": "Sun Oct 23 17:18:52 2011 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Jan 05 17:59:54 2012 +0400"
      },
      "message": "Report error from read rather than successful completion of close\n"
    },
    {
      "commit": "e0329cee5f18171ac7a4e89e42a0bb763a1f30a8",
      "tree": "fc60c03df0d9b9ba63e6c8e9aa094da3f21e5600",
      "parents": [
        "070fc98bf5e82526d9a558a76109b6a900c99795"
      ],
      "author": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Fri Dec 16 22:32:17 2011 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Tue Dec 20 23:56:41 2011 +0400"
      },
      "message": "Inherit the environment of the caller process for a new process image\n"
    },
    {
      "commit": "070fc98bf5e82526d9a558a76109b6a900c99795",
      "tree": "6d15b37273db18931d953ac88db38ee668991243",
      "parents": [
        "9934e8700af90dac6cf28ca5bc098c1d3384ab2f"
      ],
      "author": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sun Dec 18 13:22:41 2011 +0000"
      },
      "committer": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sun Dec 18 13:22:41 2011 +0000"
      },
      "message": "bump version\n"
    },
    {
      "commit": "9934e8700af90dac6cf28ca5bc098c1d3384ab2f",
      "tree": "7bfb284209afa91e1458eccd0915867251728667",
      "parents": [
        "690dcc6517ec4f342f2169724e7fdd20e0c66a72"
      ],
      "author": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sun Dec 18 13:21:55 2011 +0000"
      },
      "committer": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sun Dec 18 13:21:55 2011 +0000"
      },
      "message": "Fix for Android 4.0.3 from shakalaca on github\n"
    },
    {
      "commit": "690dcc6517ec4f342f2169724e7fdd20e0c66a72",
      "tree": "e071774f02e38fc0a1e7c871f9029387938e5d51",
      "parents": [
        "233b1d0aa95e8c43fd7f02b91ac047e2e32a8aa5",
        "1fe89fff7b3b4539b2437238ee3032b19cf7e16e"
      ],
      "author": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Thu Dec 15 12:39:39 2011 -0800"
      },
      "committer": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Thu Dec 15 12:39:39 2011 -0800"
      },
      "message": "Merge pull request #4 from git-core/master\n\nFix potential security flaw in creation of sockets/directories"
    },
    {
      "commit": "1fe89fff7b3b4539b2437238ee3032b19cf7e16e",
      "tree": "e071774f02e38fc0a1e7c871f9029387938e5d51",
      "parents": [
        "7d97cfea964c68c9c51a77750f6c7aa86fab66c3"
      ],
      "author": {
        "name": "Gleb O. Raiko",
        "email": "raiko@niisi.msk.ru",
        "time": "Sun Oct 23 17:30:45 2011 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Dec 15 23:48:43 2011 +0400"
      },
      "message": "Remove all occurences of req_uid\n"
    },
    {
      "commit": "7d97cfea964c68c9c51a77750f6c7aa86fab66c3",
      "tree": "96b83bbe7782d795e379a6f5052694ebafa88747",
      "parents": [
        "4c6ea930caf9ac3609f3c19f11d768fadedd3f70"
      ],
      "author": {
        "name": "Gleb O. Raiko",
        "email": "raiko@niisi.msk.ru",
        "time": "Sat Dec 03 14:44:51 2011 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Dec 15 23:43:48 2011 +0400"
      },
      "message": "Fix potential security flaw in creation of sockets/directories\n\nPrevious code created a file object with two steps: the creation itself with\ndefault umask/mode and setting necessary permissions then. This approach is known to\nlead to a race condition when malicious process can open an object before\npermissions is set.\n\nThe patch sets creation mask (mask) to 027, thus denying any access from others. Also,\nthe patch removes all dead code which is not needed after changes mentioned.\n"
    },
    {
      "commit": "4c6ea930caf9ac3609f3c19f11d768fadedd3f70",
      "tree": "ea8cf4e678a395b5b59ea52cc2f1f17c3334de8a",
      "parents": [
        "d5984c9ba86ea7a09389ebe6da81dad91fb7edca"
      ],
      "author": {
        "name": "Gleb O. Raiko",
        "email": "raiko@niisi.msk.ru",
        "time": "Sun Oct 30 14:43:23 2011 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Dec 15 23:43:48 2011 +0400"
      },
      "message": "Clean up sources\n"
    },
    {
      "commit": "d5984c9ba86ea7a09389ebe6da81dad91fb7edca",
      "tree": "d30dccb15ab105bb47f6158529f8f595b97ae977",
      "parents": [
        "2e17b69cef62fead9770e1c6ff06d5f789e3fca9"
      ],
      "author": {
        "name": "Gleb O. Raiko",
        "email": "raiko@niisi.msk.ru",
        "time": "Sun Oct 30 00:32:54 2011 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Dec 15 23:43:48 2011 +0400"
      },
      "message": "Always free result table if sqlite3_get_table succeeds\n"
    },
    {
      "commit": "2e17b69cef62fead9770e1c6ff06d5f789e3fca9",
      "tree": "e0150fe5dc39076c3cd536082fe88e6cfff46b65",
      "parents": [
        "0123ee3421ee5ac95b0af1e3af4d22ef0c46914b"
      ],
      "author": {
        "name": "Gleb O. Raiko",
        "email": "raiko@niisi.msk.ru",
        "time": "Sun Oct 23 17:31:27 2011 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Dec 15 23:43:48 2011 +0400"
      },
      "message": "Remove setgroups in allow()\n\nsupplementary groups have been dropped already at this time\n(introduced by commit 00f1bb547ef219b690a440920c7bc29be2a1d348)\n"
    },
    {
      "commit": "0123ee3421ee5ac95b0af1e3af4d22ef0c46914b",
      "tree": "d6a29e2c315308d63f8b9be7c670d38d32524c07",
      "parents": [
        "a9a303f79cf7ef2027d09578bc607e7eafb4b37a"
      ],
      "author": {
        "name": "Gleb O. Raiko",
        "email": "raiko@niisi.msk.ru",
        "time": "Sun Oct 23 17:18:52 2011 +0400"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Dec 15 23:43:48 2011 +0400"
      },
      "message": "Report error from read rather than successful completion of close\n"
    },
    {
      "commit": "a9a303f79cf7ef2027d09578bc607e7eafb4b37a",
      "tree": "133412d5976747466e50e3767e6e4bd26e2dc159",
      "parents": [
        "263b17e0eed2d98afc64b660c31bed668045bc86"
      ],
      "author": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Wed Dec 14 20:13:39 2011 +0000"
      },
      "committer": {
        "name": "git-core",
        "email": "git-core@github.com",
        "time": "Thu Dec 15 23:43:48 2011 +0400"
      },
      "message": "bump version\n"
    },
    {
      "commit": "233b1d0aa95e8c43fd7f02b91ac047e2e32a8aa5",
      "tree": "133412d5976747466e50e3767e6e4bd26e2dc159",
      "parents": [
        "263b17e0eed2d98afc64b660c31bed668045bc86"
      ],
      "author": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Wed Dec 14 20:13:39 2011 +0000"
      },
      "committer": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Wed Dec 14 20:13:39 2011 +0000"
      },
      "message": "bump version\n"
    },
    {
      "commit": "263b17e0eed2d98afc64b660c31bed668045bc86",
      "tree": "78faed9420d3626941849df8754eefc15a86eb49",
      "parents": [
        "815bd1417630930e44b610cf64c5c68de04b8f2d"
      ],
      "author": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sat Oct 22 19:42:30 2011 +0100"
      },
      "committer": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sat Oct 22 19:42:30 2011 +0100"
      },
      "message": "Clean up whitespace\n"
    },
    {
      "commit": "815bd1417630930e44b610cf64c5c68de04b8f2d",
      "tree": "267c3d914fd4b6eb53ee2cf242c3c6f69c8a93f5",
      "parents": [
        "67394c6bbc56cc41523c1cc8712f77883a6408c3",
        "fa0ecd3a898b52c8a6d5f60671746f50bb241a54"
      ],
      "author": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sat Oct 22 10:30:46 2011 -0700"
      },
      "committer": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sat Oct 22 10:30:46 2011 -0700"
      },
      "message": "Merge pull request #3 from git-core/master\n\nThe patches I\u0027ve sent early"
    },
    {
      "commit": "fa0ecd3a898b52c8a6d5f60671746f50bb241a54",
      "tree": "0751f9b80f4f4dbb2e1c9a1f6ffca22c728cda56",
      "parents": [
        "a1855463d26d78a47cd00355e33ba9a4ec473f9a",
        "a0cc2b931f54f063b9669fec49c18837bb7a7eba"
      ],
      "author": {
        "name": "Gleb O. Raiko",
        "email": "raiko@niisi.msk.ru",
        "time": "Sat Oct 22 19:37:42 2011 +0400"
      },
      "committer": {
        "name": "Gleb O. Raiko",
        "email": "raiko@niisi.msk.ru",
        "time": "Sat Oct 22 19:37:42 2011 +0400"
      },
      "message": "Merge branch \u0027master\u0027 of git://github.com/ChainsDD/su-binary\n"
    },
    {
      "commit": "a1855463d26d78a47cd00355e33ba9a4ec473f9a",
      "tree": "8091f38c86baf96705169d1ced094f42a3e84923",
      "parents": [
        "49427f6fa3d1c89666013ec0f6f7e547ad150b7f"
      ],
      "author": {
        "name": "Gleb O. Raiko",
        "email": "raiko@niisi.msk.ru",
        "time": "Sat Oct 22 19:19:05 2011 +0400"
      },
      "committer": {
        "name": "Gleb O. Raiko",
        "email": "raiko@niisi.msk.ru",
        "time": "Sat Oct 22 19:19:05 2011 +0400"
      },
      "message": "Fix db double close\n"
    },
    {
      "commit": "67394c6bbc56cc41523c1cc8712f77883a6408c3",
      "tree": "dd7694cd32b6d1f1b5fde988bd87da205d52c56a",
      "parents": [
        "a0cc2b931f54f063b9669fec49c18837bb7a7eba"
      ],
      "author": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sat Oct 22 16:10:46 2011 +0100"
      },
      "committer": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sat Oct 22 16:10:46 2011 +0100"
      },
      "message": "bump verison\n"
    },
    {
      "commit": "a0cc2b931f54f063b9669fec49c18837bb7a7eba",
      "tree": "f558665421d4aeb7dd7f85ebc9bfeae8546e7c8c",
      "parents": [
        "6fa4b9c48bbbcd2bac0ea91b63cf5f3b13209fcd"
      ],
      "author": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sat Oct 22 14:52:11 2011 +0100"
      },
      "committer": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Sat Oct 22 14:52:11 2011 +0100"
      },
      "message": "Fix file mode:\n"
    },
    {
      "commit": "49427f6fa3d1c89666013ec0f6f7e547ad150b7f",
      "tree": "71db08543b023a3e394b2247a995a40d13491d90",
      "parents": [
        "6fa4b9c48bbbcd2bac0ea91b63cf5f3b13209fcd"
      ],
      "author": {
        "name": "Gleb O. Raiko",
        "email": "raiko@niisi.msk.ru",
        "time": "Sat Oct 22 17:33:02 2011 +0400"
      },
      "committer": {
        "name": "Gleb O. Raiko",
        "email": "raiko@niisi.msk.ru",
        "time": "Sat Oct 22 17:33:02 2011 +0400"
      },
      "message": "Fix potential buffer overflow when getting a shell from the command line\n"
    },
    {
      "commit": "6fa4b9c48bbbcd2bac0ea91b63cf5f3b13209fcd",
      "tree": "0f3ffe2a914ab813f393db8f90923eed383a8c7f",
      "parents": [
        "186b86252e165dbf259e4a7800ea87a41e44740a",
        "00f1bb547ef219b690a440920c7bc29be2a1d348"
      ],
      "author": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Tue Oct 18 12:38:19 2011 -0700"
      },
      "committer": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Tue Oct 18 12:38:19 2011 -0700"
      },
      "message": "Merge pull request #2 from HomerSp/master\n\nPossible db fix"
    },
    {
      "commit": "00f1bb547ef219b690a440920c7bc29be2a1d348",
      "tree": "0f3ffe2a914ab813f393db8f90923eed383a8c7f",
      "parents": [
        "186b86252e165dbf259e4a7800ea87a41e44740a"
      ],
      "author": {
        "name": "HomerSp",
        "email": "homersp@villainrom.co.uk",
        "time": "Tue Oct 18 19:14:06 2011 +0200"
      },
      "committer": {
        "name": "HomerSp",
        "email": "homersp@villainrom.co.uk",
        "time": "Tue Oct 18 19:14:06 2011 +0200"
      },
      "message": "Possible fix for db crash\n"
    },
    {
      "commit": "186b86252e165dbf259e4a7800ea87a41e44740a",
      "tree": "01856da193b5d95308880d144c69a83ca38f062c",
      "parents": [
        "f79e166005b7a1f56f44ed63941951830cbb3abc"
      ],
      "author": {
        "name": "Koushik Dutta",
        "email": "koushd@gmail.com",
        "time": "Thu Oct 06 11:48:45 2011 +0800"
      },
      "committer": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Thu Oct 06 11:56:01 2011 +0800"
      },
      "message": "shell uid always gets root.\n\nChange-Id: Ic1d1a0eccf7fae96243c19bf8abc207b5b991200\n"
    },
    {
      "commit": "f79e166005b7a1f56f44ed63941951830cbb3abc",
      "tree": "43ddb1e84540f964ab6adb8808a81d897357cd14",
      "parents": [
        "91cd65c3d91967ddd2d095891735e0848b64cb71"
      ],
      "author": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Tue Sep 27 13:15:51 2011 +0100"
      },
      "committer": {
        "name": "Adam Shanks",
        "email": "chainsdd@gmail.com",
        "time": "Tue Sep 27 13:15:51 2011 +0100"
      },
      "message": "Merge master-dev into master\n"
    }
  ],
  "next": "91cd65c3d91967ddd2d095891735e0848b64cb71"
}
