)]}' { "commit": "d7c7dd8b955e9633da5ba763bb707854709d3033", "tree": "083e48f09c7e8d7a82d4811b9be5eac31258257e", "parents": [ "47820316fcec0c698356770e660be96981448d1a" ], "author": { "name": "Mike Klein", "email": "mtklein@google.com", "time": "Fri Aug 23 11:34:17 2019 -0500" }, "committer": { "name": "Skia Commit-Bot", "email": "skia-commit-bot@chromium.org", "time": "Fri Aug 23 16:48:49 2019 +0000" }, "message": "more careful isfinite_() checks in skcms_TF_invert()\n\nThe fuzzer found a couple non-finite value edge cases:\n\nIn one, we end up with inv.a \u003d inf, inv.d \u003d finite, and tweak inv.b to\nbecome -inf. Then when we assert ad+b \u003e\u003d 0, we calculate inf-inf \u003e\u003d 0,\nwhich is nan \u003e\u003d0, false. To guard this, check tf_is_valid() after\nb-tweak, which will catch any non-finite parameters.\n\nIn the other, gamma is large enough that we end up calculating\ns \u003d 0.983188629 + 0.951436281) ** 134.4673 \u003d\u003d 3.45e38 \u003d\u003d NaN\nwith powf_(). With s \u003d NaN, so is as+b, and the check in powf_()\nfor x \u003e\u003d 0 fails. To fix, check isfinite_(s) before using s.\n\nBug: oss-fuzz:16674, oss-fuzz:16675\nChange-Id: I8e83526d7358a0c806720cd1e1458758f3474efc\nReviewed-on: https://skia-review.googlesource.com/c/skcms/+/236860\nReviewed-by: Brian Osman \u003cbrianosman@google.com\u003e\nCommit-Queue: Mike Klein \u003cmtklein@google.com\u003e\n", "tree_diff": [ { "type": "add", "old_id": "0000000000000000000000000000000000000000", "old_mode": 0, "old_path": "/dev/null", "new_id": "976834dcb7d0b442b8a48bb3ed731c0a6102f92d", "new_mode": 33188, "new_path": "profiles/fuzz/inf_a.icc" }, { "type": "add", "old_id": "0000000000000000000000000000000000000000", "old_mode": 0, "old_path": "/dev/null", "new_id": "c84e1c3acae00d43dc9ea993024f5944cf481001", "new_mode": 33188, "new_path": "profiles/fuzz/inf_a.icc.txt" }, { "type": "add", "old_id": "0000000000000000000000000000000000000000", "old_mode": 0, "old_path": "/dev/null", "new_id": "25d4983c14dae8df60ba838359e308c7a33fd5c1", "new_mode": 33188, "new_path": "profiles/fuzz/nan_s.icc" }, { "type": "add", "old_id": "0000000000000000000000000000000000000000", "old_mode": 0, "old_path": "/dev/null", "new_id": "1c1fde179be52a9cf9444a4ea1132b40993f3978", "new_mode": 33188, "new_path": "profiles/fuzz/nan_s.icc.txt" }, { "type": "modify", "old_id": "3051b67e7f2d31a0487f56419ad6de465830c5fa", "old_mode": 33188, "old_path": "skcms.cc", "new_id": "b26e4d50f6e9e7e3f3ad00e0c65ac5c9355f4b1a", "new_mode": 33188, "new_path": "skcms.cc" }, { "type": "modify", "old_id": "03abb03acf4d64e8d4402e0a80e6438bbf38d1ff", "old_mode": 33188, "old_path": "tests.c", "new_id": "6911b0ba2b2f77994f17bfb2d07bd08be0d3ff6a", "new_mode": 33188, "new_path": "tests.c" } ] }