From 4c14b7869d47a28aca29e219a3bae10f43083b33 Mon Sep 17 00:00:00 2001 From: Jeff Schumacher Date: Fri, 9 Jul 2010 12:53:57 -0700 Subject: [PATCH] Fixed potential div by zero bug The scoring logic in SimilarityIndex was dividing by the max file size. If both files are empty, this would cause a div by zero error. This case cannot currently happen, since two empty files would have the same SHA1, and would therefore be caught in the earlier SHA1 based detection pass. Still, if this logic eventually gets separated from that pass, a div by zero error would occur. I changed the logic to instead consider two empty files to have a similarity score of 100. Change-Id: Ic08e18a066b8fef25bb5e7c62418106a8cee762a --- org.eclipse.jgit/src/org/eclipse/jgit/diff/SimilarityIndex.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/org.eclipse.jgit/src/org/eclipse/jgit/diff/SimilarityIndex.java b/org.eclipse.jgit/src/org/eclipse/jgit/diff/SimilarityIndex.java index d6026b5be..f4cccfc37 100644 --- a/org.eclipse.jgit/src/org/eclipse/jgit/diff/SimilarityIndex.java +++ b/org.eclipse.jgit/src/org/eclipse/jgit/diff/SimilarityIndex.java @@ -144,6 +144,8 @@ class SimilarityIndex { int score(SimilarityIndex dst) { long max = Math.max(fileSize, dst.fileSize); + if (max == 0) + return 100; return (int) ((common(dst) * 100L) / max); }