)]}'
{
  "commit": "147c2849af9c28f2ce347b4005e022ac13db9dd8",
  "tree": "3253a41ec24827c1c556b22c4591550b72919b2b",
  "parents": [
    "6c08ac72c6ce9faf66bf28ee75cbb87413daa6aa"
  ],
  "author": {
    "name": "Jim Apple",
    "email": "jbapple-impala@apache.org",
    "time": "Sat Mar 18 12:56:50 2017 -0700"
  },
  "committer": {
    "name": "James E. King, III",
    "email": "jking@apache.org",
    "time": "Sat Mar 25 08:16:18 2017 -0400"
  },
  "message": "THRIFT-2026: Eliminate some undefined behavior in C/C++\nClients: glib, C++\nPatch: Jim Apple \u003cjbapple-impala@apache.org\u003e\n\nThis closes #1214\n\nThis patch fixes some undefined behavior were found using Clang\u0027s\nUndefinedBehaviorSanitizer (UBSan). To check for undefined behavior,\nrun /build/docker/scripts/ubsan.sh. This is run during CI builds, as\nwell.\n\nThe examples of the types of undefined behavior fixed in this commit\nare:\n\n1. Enumerations exhibit undefined behavior when they have values\n   outside of a range dependent on the values of their enumerators, as\n   specified in C++14\u0027s chapter 7.2 (\"Enumeration declarations\"),\n   paragraph 8.\n\n2. Left shift of negative values, used in zigzag encoding, is\n   undefined behavior. See 5.8 (\"Shift operators\"), paragraph 2 for\n   C++ and 6.5.7 (\"Bitwise shift operators\"), paragraph 4 for C99 and\n   C11.\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "70293edef803cfe2b014500b17479b45da8c11cf",
      "old_mode": 33188,
      "old_path": ".travis.yml",
      "new_id": "10c6fd09bac58950aaa6fdf8fdb4e723da107077",
      "new_mode": 33188,
      "new_path": ".travis.yml"
    },
    {
      "type": "add",
      "old_id": "0000000000000000000000000000000000000000",
      "old_mode": 0,
      "old_path": "/dev/null",
      "new_id": "6db10f3d8dc9a50689eb9d2358aedc94eb8bc2a1",
      "new_mode": 33261,
      "new_path": "build/docker/scripts/ubsan.sh"
    },
    {
      "type": "modify",
      "old_id": "7d4e4f03dbc486733227617be400933441ada93e",
      "old_mode": 33188,
      "old_path": "compiler/cpp/src/thrift/generate/t_c_glib_generator.cc",
      "new_id": "7d4818e99b92c521827313fe8f39c902e437f685",
      "new_mode": 33188,
      "new_path": "compiler/cpp/src/thrift/generate/t_c_glib_generator.cc"
    },
    {
      "type": "modify",
      "old_id": "481668146c0dd6f0ac4f476256c8d0d7c93aa551",
      "old_mode": 33188,
      "old_path": "compiler/cpp/src/thrift/generate/t_d_generator.cc",
      "new_id": "819254977c773e51957d29c2666e377d49927cb6",
      "new_mode": 33188,
      "new_path": "compiler/cpp/src/thrift/generate/t_d_generator.cc"
    },
    {
      "type": "modify",
      "old_id": "32523cb9db5747a294ab9d7c99e3bb83b899aef6",
      "old_mode": 33188,
      "old_path": "compiler/cpp/src/thrift/parse/t_base_type.h",
      "new_id": "71398ba70a603a85cc4645a672326fcd5b5ca965",
      "new_mode": 33188,
      "new_path": "compiler/cpp/src/thrift/parse/t_base_type.h"
    },
    {
      "type": "modify",
      "old_id": "a0dd3cc457bdf2846b59f4bb515d1ce5e80f6a46",
      "old_mode": 33188,
      "old_path": "lib/c_glib/src/thrift/c_glib/protocol/thrift_compact_protocol.c",
      "new_id": "cae4749f002ea10d0fdea1a547ad46dc6b51d546",
      "new_mode": 33188,
      "new_path": "lib/c_glib/src/thrift/c_glib/protocol/thrift_compact_protocol.c"
    },
    {
      "type": "modify",
      "old_id": "6bbf9ef34cce4741b13cdcd8f84f2a101ba905f5",
      "old_mode": 33188,
      "old_path": "lib/cpp/src/thrift/protocol/TCompactProtocol.tcc",
      "new_id": "d40c3313431f7854c0069311faca7506f26921e5",
      "new_mode": 33188,
      "new_path": "lib/cpp/src/thrift/protocol/TCompactProtocol.tcc"
    }
  ]
}
