https://bugs.exim.org/show_bug.cgi?id=2987

            Bug ID: 2987
           Summary: $spam_score_int calculation for negative values is
                    off-by-one
           Product: Exim
           Version: 4.97
          Hardware: All
                OS: All
            Status: NEW
          Severity: bug
          Priority: medium
         Component: Content Scanning
          Assignee: t...@duncanthrax.net
          Reporter: bugzilla...@shadowweb.org
                CC: exim-dev@exim.org

The internal calculation of spam_score_int in spam.c seems to be off-by-one if
negative spamd_score values are encountered:

/* create "int" spam score */
j = (int)((spamd_score + 0.001)*10);
(void)string_format(spam_score_int_buffer, sizeof(spam_score_int_buffer),
        "%d", j);
spam_score_int = spam_score_int_buffer;

The above yields correct results for positive spam scores (0.1 => 1, 4.8 =>
48), but will be off for negative values (-0.1 => 0, -4.8 => -47).

I guess the correct way of fixing this would be to differentiate between
positive and negative spamd_score values (adding 0.001 to positive and
subtracting 0.001 from negative values before casting to int).

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-- 
## List details at https://lists.exim.org/mailman/listinfo/exim-dev Exim 
details at http://www.exim.org/ ##

Reply via email to