)]}'
{
  "commit": "cf870199d576bdfc339b7fb016c9f6fe7f2c87ed",
  "tree": "e4bdb361862de3efd9b907379d0fe3f2ad3f4ae2",
  "parents": [
    "72f59c84fd73a0a701ce6448d103e9021c1cb060"
  ],
  "author": {
    "name": "Nick Kralevich",
    "email": "nnk@google.com",
    "time": "Thu May 30 16:48:53 2013 -0700"
  },
  "committer": {
    "name": "Nick Kralevich",
    "email": "nnk@google.com",
    "time": "Fri May 31 09:07:46 2013 -0700"
  },
  "message": "FORTIFY_SOURCE: strcat / strncat optimize\n\n__strcat_chk and __strncat_chk are slightly inefficient,\nbecause they end up traversing over the same memory region\ntwo times.\n\nThis change optimizes __strcat_chk / __strncat_chk so they\nonly access the memory once. Although I haven\u0027t benchmarked these\nchanges, it should improve the performance of these functions.\n\n__strlen_chk - expose this function, even if -D_FORTIFY_SOURCE\nisn\u0027t defined. This is needed to compile libc itself without\n-D_FORTIFY_SOURCE.\n\nChange-Id: Id2c70dff55a276b47c59db27a03734d659f84b74\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "fb46e0d7d47e16e821b1db4d4babc7b3177e4156",
      "old_mode": 33188,
      "old_path": "libc/bionic/__strcat_chk.cpp",
      "new_id": "e0b3259bf26fcf1afa625a9a7ce5f2d0ce0c8e9f",
      "new_mode": 33188,
      "new_path": "libc/bionic/__strcat_chk.cpp"
    },
    {
      "type": "modify",
      "old_id": "ab2854175ff39433d03615561dff1b6f250fac66",
      "old_mode": 33188,
      "old_path": "libc/bionic/__strncat_chk.cpp",
      "new_id": "f54d838cd90799012fffdce8c7e0dc1482f24f48",
      "new_mode": 33188,
      "new_path": "libc/bionic/__strncat_chk.cpp"
    },
    {
      "type": "modify",
      "old_id": "f8c573cc35d6ee43f877110ca49a5b482584bdbe",
      "old_mode": 33188,
      "old_path": "libc/include/string.h",
      "new_id": "1691b16c0825dd0eb80e27ba015b9045276e9c62",
      "new_mode": 33188,
      "new_path": "libc/include/string.h"
    },
    {
      "type": "modify",
      "old_id": "c6e176597a424551647217039d5afd32627d2490",
      "old_mode": 33188,
      "old_path": "libc/private/libc_logging.h",
      "new_id": "e62ddf20b7f4db8802abd84bbe27f073d4fcc90a",
      "new_mode": 33188,
      "new_path": "libc/private/libc_logging.h"
    },
    {
      "type": "modify",
      "old_id": "70d458a0879a28e0037d71c07e953ff23f311116",
      "old_mode": 33188,
      "old_path": "tests/fortify1_test.cpp",
      "new_id": "a9d8afd64dca180c2b46bbe5da69267fe4651664",
      "new_mode": 33188,
      "new_path": "tests/fortify1_test.cpp"
    },
    {
      "type": "modify",
      "old_id": "c937e91e76ca5e80b0d309616e8a5181d078240c",
      "old_mode": 33188,
      "old_path": "tests/fortify2_test.cpp",
      "new_id": "eee5770ddf26dc9f18fb8aba4b86f5103d124ead",
      "new_mode": 33188,
      "new_path": "tests/fortify2_test.cpp"
    },
    {
      "type": "modify",
      "old_id": "63bfadb45e6c223cb2759fd9ab5540f76aeef82d",
      "old_mode": 33188,
      "old_path": "tests/string_test.cpp",
      "new_id": "a0924dcb724d2d0221c1518e675490e56873234d",
      "new_mode": 33188,
      "new_path": "tests/string_test.cpp"
    }
  ]
}
