[exim-dev] [Bug 496] New: exim_fixdb can't edit ratelimit re…

Top Page
Delete this message
Reply to this message
Author: bug496
Date:  
To: exim-dev
Subject: [exim-dev] [Bug 496] New: exim_fixdb can't edit ratelimit records
------- You are receiving this mail because: -------
You are the QA contact for the bug, or are watching the QA contact.

http://www.exim.org/bugzilla/show_bug.cgi?id=496

           Summary: exim_fixdb can't edit ratelimit records
           Product: Exim
           Version: 4.66
          Platform: All
        OS/Version: Linux
            Status: NEW
          Severity: bug
          Priority: medium
         Component: Unfiled
        AssignedTo: ph10@???
        ReportedBy: ward@???
         QAContact: exim-dev@???



Keys in the ratelimit db seem to contain spaces:

# exim_dumpdb /var/spool/exim4 ratelimit
16-Apr-2007 21:43:20.205018 rate:      2.754 key:  1h / strict / 10.0.0.5
16-Apr-2007 21:29:49.592824 rate:      0.000 key:  1d / leaky / 10.0.3.254
19-Apr-2007 02:34:24.917532 rate:      0.000 key:  1d / leaky / 10.166.210.84
19-Apr-2007 16:45:08.535817 rate:     10.247 key:  1d / leaky / 10.166.210.86


As a consequence, fixdb can't load the records:

# exim_fixdb /var/spool/exim4 ratelimit
Modifying Exim hints database /var/spool/exim4/db/ratelimit
> 1h / strict / 10.0.0.5

field number or d expected

This piece of code in src/exim_dbutils.c seems to be the problem:

  if ((isdigit((uschar)buffer[0]) && (buffer[1] == ' ' || buffer[1] == '\0'))
       || Ustrcmp(buffer, "d") == 0)
    {
    if (name[0] == 0)
      {
      printf("No previous record name is set\n");
      continue;
      }
    (void)sscanf(CS buffer, "%s %s", field, value);
    }
  else
    {
    name[0] = 0;
    (void)sscanf(CS buffer, "%s %s %s", name, field, value);
    }


I'm not sure what the best way to fix this would be.

I've tested this on 4.63, and the exim_dbutil.c file is identical in 4.67.

Thanks,
Ward.

--
Configure bugmail: http://www.exim.org/bugzilla/userprefs.cgi?tab=email