jpeg pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=3f73d205023a63e8cdb5762db5755363d20b8a3d

commit 3f73d205023a63e8cdb5762db5755363d20b8a3d
Author: Jean-Philippe Andre <[email protected]>
Date:   Mon Oct 27 21:37:39 2014 +0900

    Evas filters: Prevent division by 0
    
    While it really shouldn't happen, let's just add a quick if()
    and make Coverity shut up.
    
    Fixes:
     - CID 1191912
     - CID 1191911
     - CID 1191910
     - CID 1191909
---
 src/lib/evas/filters/blur/blur_gaussian_alpha_.c | 9 +++++++--
 src/lib/evas/filters/blur/blur_gaussian_rgba_.c  | 9 +++++++--
 2 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/src/lib/evas/filters/blur/blur_gaussian_alpha_.c 
b/src/lib/evas/filters/blur/blur_gaussian_alpha_.c
index 21b6b7d..fad14e2 100644
--- a/src/lib/evas/filters/blur/blur_gaussian_alpha_.c
+++ b/src/lib/evas/filters/blur/blur_gaussian_alpha_.c
@@ -41,7 +41,7 @@ FUNCTION_NAME(const DATA8* restrict srcdata, DATA8* restrict 
dstdata,
                   acc += (*s) * weights[j + radius - k];
                   divider += weights[j + radius - k];
                }
-             //if (!divider) abort();
+             if (!divider) goto error;
              *dst = acc / divider;
           }
 
@@ -66,13 +66,18 @@ FUNCTION_NAME(const DATA8* restrict srcdata, DATA8* 
restrict dstdata,
                   acc += (*s) * weights[j];
                   divider += weights[j];
                }
-             //if (!divider) abort();
+             if (!divider) goto error;
              *dst = acc / divider;
           }
 
         dstdata += loopstep;
         srcdata += loopstep;
      }
+
+   return;
+
+error:
+   CRI("Avoided division by 0.");
 }
 
 #undef FUNCTION_NAME
diff --git a/src/lib/evas/filters/blur/blur_gaussian_rgba_.c 
b/src/lib/evas/filters/blur/blur_gaussian_rgba_.c
index 4492e6b..fdbf3da 100644
--- a/src/lib/evas/filters/blur/blur_gaussian_rgba_.c
+++ b/src/lib/evas/filters/blur/blur_gaussian_rgba_.c
@@ -43,7 +43,7 @@ FUNCTION_NAME(const DATA32* restrict srcdata, DATA32* 
restrict dstdata,
                   acc[BLUE]  += B_VAL(s) * weights[weightidx];
                   divider += weights[weightidx];
                }
-             //if (!divider) abort();
+             if (!divider) goto error;
              A_VAL(dst) = acc[ALPHA] / divider;
              R_VAL(dst) = acc[RED]   / divider;
              G_VAL(dst) = acc[GREEN] / divider;
@@ -82,7 +82,7 @@ FUNCTION_NAME(const DATA32* restrict srcdata, DATA32* 
restrict dstdata,
                   acc[BLUE]  += B_VAL(s) * weights[j];
                   divider += weights[j];
                }
-             //if (!divider) abort();
+             if (!divider) goto error;
              A_VAL(dst) = acc[ALPHA] / divider;
              R_VAL(dst) = acc[RED]   / divider;
              G_VAL(dst) = acc[GREEN] / divider;
@@ -92,6 +92,11 @@ FUNCTION_NAME(const DATA32* restrict srcdata, DATA32* 
restrict dstdata,
         dstdata += loopstep;
         srcdata += loopstep;
      }
+
+   return;
+
+error:
+   CRI("Avoided division by 0.");
 }
 
 #undef FUNCTION_NAME

-- 


Reply via email to