)]}'
{
  "log": [
    {
      "commit": "950a58e24d1019eb9d814dbb16f111a6b61e3f23",
      "tree": "5a91099e0ce1b9d552e7210fb914ba8d4d5ddb10",
      "parents": [
        "5f149f1bdef31d198c0e84fd8c904204d263e825"
      ],
      "author": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Fri Apr 04 14:38:18 2014 -0700"
      },
      "committer": {
        "name": "Christopher Ferris",
        "email": "cferris@google.com",
        "time": "Mon Apr 07 16:41:53 2014 -0700"
      },
      "message": "Add stpcpy/stpncpy.\n\nAdd tests for the above.\n\nAdd the fortify implementations of __stpcpy_chk and __stpncpy_chk.\n\nModify the strncpy test to cover more cases and use this template for\nstpncpy.\n\nAdd all of the fortify test cases.\n\nBug: 13746695\nChange-Id: I8c0f0d4991a878b8e8734fff12c8b73b07fdd344\n"
    },
    {
      "commit": "d1eda33f012e46083b91e087fb79d14a5ce70f0e",
      "tree": "2d075e9d43c3a300327e79ee27c5b8330d8dce4c",
      "parents": [
        "dc9d8d050a43e1cd32f1337e79187124bb15d938"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 15 16:43:38 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 15 16:49:28 2013 -0700"
      },
      "message": "Avoid confusing \"read prevented write\" log messages.\n\nMoving to a \"function: message\" style avoids ambiguity.\n\nChange-Id: If9d590e50265c61725d3673bd03796e65edd2d5e\n"
    },
    {
      "commit": "eb847bc8666842a3cfc9c06e8458ad1abebebaf0",
      "tree": "15e070fb706ba7599d5f402a8f934a7399541a6a",
      "parents": [
        "0c17099a71cb5d1b36b7aab66fd7341b3fc9106d"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 09 15:50:50 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 09 16:00:17 2013 -0700"
      },
      "message": "Fix x86_64 build, clean up intermediate libraries.\n\nThe x86_64 build was failing because clone.S had a call to __thread_entry which\nwas being added to a different intermediate .a on the way to making libc.so,\nand the linker couldn\u0027t guarantee statically that such a relocation would be\npossible.\n\n  ld: error: out/target/product/generic_x86_64/obj/STATIC_LIBRARIES/libc_common_intermediates/libc_common.a(clone.o): requires dynamic R_X86_64_PC32 reloc against \u0027__thread_entry\u0027 which may overflow at runtime; recompile with -fPIC\n\nThis patch addresses that by ensuring that the caller and callee end up in the\nsame intermediate .a. While I\u0027m here, I\u0027ve tried to clean up some of the mess\nthat led to this situation too. In particular, this removes libc/private/ from\nthe default include path (except for the DNS code), and splits out the DNS\ncode into its own library (since it\u0027s a weird special case of upstream NetBSD\ncode that\u0027s diverged so heavily it\u0027s unlikely ever to get back in sync).\n\nThere\u0027s more cleanup of the DNS situation possible, but this is definitely a\nstep in the right direction, and it\u0027s more than enough to get x86_64 building\ncleanly.\n\nChange-Id: I00425a7245b7a2573df16cc38798187d0729e7c4\n"
    },
    {
      "commit": "6861c6f85e6563695c4763e56756398c9d5f6e14",
      "tree": "c1d460b532b20b094f8bad905159f62a076c7eaf",
      "parents": [
        "a81fd294be55f8781dbf22f381a3335212d8dbd9"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Oct 04 09:45:24 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Oct 04 11:43:30 2013 -0700"
      },
      "message": "Make error messages even better!\n\nChange-Id: I72bd1eb1d526dc59833e5bc3c636171f7f9545af\n"
    },
    {
      "commit": "e2617290fca2ebbc4d64cae5a8d8d9e9f8e6c701",
      "tree": "7cd7f32b7fdd038bbaae6043d36a6854d1db5379",
      "parents": [
        "41ba05e22ed1829cc7431fd4899cfa5725c76044"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Oct 04 08:57:17 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Oct 04 08:57:17 2013 -0700"
      },
      "message": "FORTIFY_SOURCE: emphasize prevention in error messages.\n\nFORTIFY_SOURCE prevents buffer overflows from occurring.\nHowever, the error message often implies that we only\ndetect it, not prevent it.\n\nBring more clarity to the error messages by emphasizing\nprevention over detection.\n\nChange-Id: I5f3e1478673bdfc589e6cc4199fce8e52e197a24\n"
    },
    {
      "commit": "532d6f09b1e7bfe995c1dba6594d1fc2c1ea77cf",
      "tree": "b44f5c27070a9284e33a24b7ddc099c3140af827",
      "parents": [
        "e4ac8feb58ed1f963db9a1f32fa74a06a1f594f2"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu May 02 14:31:51 2013 -0700"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu May 02 14:31:51 2013 -0700"
      },
      "message": "Use __predict_false on some fortify methods.\n\nGive the compiler some hints that these error conditions\nare unlikely to occur in practice.\n\nChange-Id: Ifaf7322a12120ef663c8315c1a18c2dcbe4bda23\n"
    },
    {
      "commit": "8f2a5a0b40fc82126c691d5c30131d908772aab7",
      "tree": "0b29a5dc82395c076387edb5af9ca271a91264c0",
      "parents": [
        "e23ed8c6441389a79c6504295184f7249e01a197"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 15 15:30:25 2013 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Fri Mar 15 16:12:58 2013 -0700"
      },
      "message": "Clean up internal libc logging.\n\nWe only need one logging API, and I prefer the one that does no\nallocation and is thus safe to use in any context.\n\nAlso use O_CLOEXEC when opening the /dev/log files.\n\nMove everything logging-related into one header file.\n\nChange-Id: Ic1e3ea8e9b910dc29df351bff6c0aa4db26fbb58\n"
    },
    {
      "commit": "326ea5413d18ea019cd1bda415ce428f7bdcafd2",
      "tree": "630469ff443d522e356418bfda081452d28606f6",
      "parents": [
        "db79e827ebcb077ebaa6d6c96915c5bffba9a0ca"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Dec 04 13:55:19 2012 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Dec 04 15:27:30 2012 -0800"
      },
      "message": "clean up FORTIFY_SOURCE handling.\n\nAvoid duplicating huge chunks of code.\n\nChange-Id: Id6145cdfce781c5ffba2abaaa79681d25a7ab28f\n"
    },
    {
      "commit": "4035b7a32155eac46f3f3782774deb5967ea2b54",
      "tree": "34a510f809226aeec79ddd766ed77ef89ce67127",
      "parents": [
        "df92635a57e8093d9cbffc38bbf513f3361ee91e"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 22 15:32:01 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 22 15:32:01 2012 -0700"
      },
      "message": "Move the FORTIFY_SOURCE helpers over to .cpp.\n\nChange-Id: Ib5067d51b983cac7760c975becce7fe2408ead04\n"
    },
    {
      "commit": "df92635a57e8093d9cbffc38bbf513f3361ee91e",
      "tree": "2785a19d597c8c24449de0b225aae3737982bc03",
      "parents": [],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Mon Oct 22 14:56:31 2012 -0700"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "noreply-gerritcodereview@google.com",
        "time": "Mon Oct 22 14:56:32 2012 -0700"
      },
      "message": "Merge \"Support zone.tab in bionic, and remove the file format version.\""
    }
  ]
}
