)]}'
{
  "commit": "3a5dd791abef032fe57fc652c0232913c696e59b",
  "tree": "6bf20b6d67d45bf84730c3ce19b9514948a31f34",
  "parents": [
    "6ccf80eb15ccaca4d3f1ab5162b9ded5eecd9971"
  ],
  "author": {
    "name": "Mike Frysinger",
    "email": "vapier@gentoo.org",
    "time": "Sun Jan 17 08:27:34 2010 +1030"
  },
  "committer": {
    "name": "Linus Torvalds",
    "email": "torvalds@linux-foundation.org",
    "time": "Sun Jan 17 11:00:53 2010 -0800"
  },
  "message": "modpost: fix segfault in sym_is() with prefixed arches\n\nThe sym_is() compares a symbol in an attempt to automatically skip symbol\nprefixes.  It does this first by searching the real symbol with the normal\nunprefixed symbol.  But then it uses the length of the original symbol to\ncheck the end of the substring instead of the length of the symbol it is\nlooking for.  On non-prefixed arches, this is effectively the same thing,\nso there is no problem.  On prefixed-arches, since this is exceeds by just\none byte, a crash is rare and it is usually a NUL byte anyways.  But every\nonce in a blue moon, you get the right page alignment and it segfaults.\n\nFor example, on the Blackfin arch, sym_is() will be called with the real\nsymbol \"___mod_usb_device_table\" as \"symbol\" when looking for the normal\nsymbol \"__mod_usb_device_table\" as \"name\".  The substring will thus return\none byte into \"symbol\" and store it into \"match\".  But then \"match\" will\nbe indexed with the length of \"symbol\" instead of \"name\" and so we will\nexceed the storage.  i.e. the code ends up doing:\n\tchar foo[] \u003d \"abc\"; return foo[strlen(foo)+1] \u003d\u003d \u0027\\0\u0027;\n\nSigned-off-by: Mike Frysinger \u003cvapier@gentoo.org\u003e\nSigned-off-by: Rusty Russell \u003crusty@rustcorp.com.au\u003e\nSigned-off-by: Linus Torvalds \u003ctorvalds@linux-foundation.org\u003e\n",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "6f426afbc52230cf01613c420994443e7bdf08af",
      "old_mode": 33188,
      "old_path": "scripts/mod/file2alias.c",
      "new_id": "220213e603db4320e8c1ea88d8c557652085bfe5",
      "new_mode": 33188,
      "new_path": "scripts/mod/file2alias.c"
    }
  ]
}
