)]}'
{
  "log": [
    {
      "commit": "a44e9afdd16105d6f36319cb538666d9cc78435a",
      "tree": "8606530bcdef438dc305894c805f0713edad5306",
      "parents": [
        "f3fe19459fd9263e8cc8a413a5313b1ec3cf3975"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Jan 17 15:41:33 2013 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Jan 17 15:41:33 2013 -0800"
      },
      "message": "FORTIFY_SOURCE: optimize\n\nDon\u0027t do the fortify_source checks if we can determine, at\ncompile time, that the provided operation is safe.\n\nThis avoids silliness like calling fortify source on things like:\n\n  size_t len \u003d strlen(\"asdf\");\n  printf(\"%d\\n\", len);\n\nand allows the compiler to optimize this code to:\n\n  printf(\"%d\\n\", 4);\n\nDefer to gcc\u0027s builtin functions instead of pointing our code\nto the libc implementation.\n\nChange-Id: I5e1dcb61946461c4afaaaa983e39f07c7a0df0ae\n"
    },
    {
      "commit": "606058933c5129cb1026960ea67624b9426c610f",
      "tree": "b041941841289aff7b9fd12217a97ab1bbd22054",
      "parents": [
        "b09d7d86004ab75b774358454d8ee261987af96b"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jan 15 10:35:09 2013 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Tue Jan 15 10:35:09 2013 -0800"
      },
      "message": "fix strerror_r test\n\ne6e60065ff093ff8c859ab146cf543531cb1967c modified strerror_r to\ntreat errno as signed. However, the change to the test code\nmodified the \"strerror\" test, not the \"strerror_r\" test.\n\nMake the same change for the strerror_r code.\n\nChange-Id: Ia236a53df5745935e229a4446a74da8bed0cfd7b\n"
    },
    {
      "commit": "dcab1b2c76a498c56bc00024613386de8b4b2aae",
      "tree": "6d7eb1ea166186df3092552b190b4485658b3e68",
      "parents": [
        "bfde0b6fd9e5de545746ab963d3a05ed2a8014f6"
      ],
      "author": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Thu Jan 10 17:12:29 2013 -0800"
      },
      "committer": {
        "name": "Nick Kralevich",
        "email": "nnk@google.com",
        "time": "Fri Jan 11 10:52:36 2013 -0800"
      },
      "message": "Add stack canaries / strcpy tests.\n\nAdd a test to ensure that stack canaries are working\ncorrectly. Since stack canaries aren\u0027t normally generated\non non-string functions, we have to enable stack-protector-all.\n\nAdd a test to ensure that an out of bounds strcpy generates\na runtime failure.\n\nChange-Id: Id0d3e59fc4b9602da019e4d35c5c653e1a57fae4\n"
    },
    {
      "commit": "e6e60065ff093ff8c859ab146cf543531cb1967c",
      "tree": "41de4f1d0cf5cec9fa72c4ad6d0fed5bf1b00329",
      "parents": [
        "0d3700d957debe841c385f66a8026ca8b3755815"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 10 16:01:59 2013 -0800"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Jan 10 16:01:59 2013 -0800"
      },
      "message": "glibc 2.15 treats errno as signed in strerror(3).\n\nAnd the only reason I hadn\u0027t done that in bionic is because I wanted to behave\nthe same as glibc.\n\nChange-Id: I2cf1bf0aac82a748cd6305a2cabbac0790058570\n"
    },
    {
      "commit": "036154b0c2d64d618aded8674f2e13cbbb2867e2",
      "tree": "762ecdcbac0adba6fa068d5704eae2af1688c69d",
      "parents": [
        "604a163e4c7724f881605fdbda94db4f7c8f0e7a"
      ],
      "author": {
        "name": "Anna Tikhonova",
        "email": "anna.tikhonova@intel.com",
        "time": "Fri Oct 05 15:21:11 2012 +0400"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Nov 07 18:14:29 2012 -0800"
      },
      "message": "Tests for string routines.\n\nChange-Id: I24068a228f59df1c3b758c5b2026a09720490616\nSigned-off-by: Anna Tikhonova \u003canna.tikhonova@intel.com\u003e\n"
    },
    {
      "commit": "ad88a0863110798cef5169dcf917e18b967a7cf6",
      "tree": "9b5fcbe6ebc81b4fb781dd788b8795a334def653",
      "parents": [
        "d0f2b7e7e65f19f978c59abcbb522c08e76b1508"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Wed Oct 24 18:37:21 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Oct 25 12:04:03 2012 -0700"
      },
      "message": "Per-thread -fstack-protector guards for x86.\n\nBased on a pair of patches from Intel:\n\n  https://android-review.googlesource.com/#/c/43909/\n  https://android-review.googlesource.com/#/c/44903/\n\nFor x86, this patch supports _both_ the global that ARM/MIPS use\nand the per-thread TLS entry (%gs:20) that GCC uses by default. This\nlets us support binaries built with any x86 toolchain (right now,\nthe NDK is emitting x86 code that uses the global).\n\nI\u0027ve also extended the original tests to cover ARM/MIPS too, and\nbe a little more thorough for x86.\n\nChange-Id: I02f279a80c6b626aecad449771dec91df235ad01\n"
    },
    {
      "commit": "5419b9474753d25dff947c7740532f86d130c0be",
      "tree": "4d746cfc20a1d3b5886f691ed1a49ddf34e2df78",
      "parents": [
        "a9944cfe9e152ca46afb0a77300ec5a2a1a24e64"
      ],
      "author": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 16 15:54:46 2012 -0700"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Tue Oct 16 17:58:17 2012 -0700"
      },
      "message": "Make dlerror(3) thread-safe.\n\nI gave up trying to use the usual thread-local buffer idiom; calls to\ncalloc(3) and free(3) from any of the \"dl\" functions -- which live in\nthe dynamic linker -- end up resolving to the dynamic linker\u0027s stubs.\nI tried to work around that, but was just making things more complicated.\nThis alternative costs us a well-known TLS slot (instead of the\ndynamically-allocated TLS slot we\u0027d have used otherwise, so no difference\nthere), plus an extra buffer inside every pthread_internal_t.\n\nBug: 5404023\nChange-Id: Ie9614edd05b6d1eeaf7bf9172792d616c6361767\n"
    },
    {
      "commit": "b5f053b5a7deb084e7a052d527e0aa41339ae05c",
      "tree": "a75d6715f7c7c954d22440b8c21c59b01d87e83d",
      "parents": [
        "4a9b7c694a8312160d3cd953a8227c23a1624868"
      ],
      "author": {
        "name": "Irina Tirdea",
        "email": "irina.tirdea@intel.com",
        "time": "Sat Sep 08 09:17:54 2012 +0300"
      },
      "committer": {
        "name": "Elliott Hughes",
        "email": "enh@google.com",
        "time": "Thu Sep 13 15:18:21 2012 -0700"
      },
      "message": "Make strerror(3) and strsignal(3) thread-safe, and add psignal(3) and psiginfo(3).\n\nChange-Id: I426109db25e907980d6cb3a7a695796e45783b78\n"
    }
  ]
}
