Package: iftop
Version: 0.16-4
Severity: normal
Tags: patch

If my ~/.iftoprc contains dns-resolution or port-resolution lines, like this:

dns-resolution: yes

And I'm running iftop on an arm machine, it segfaults reading the config
file. This is because of this broken code:

int is_cfgdirective_valid(const char *s) {
    char* t;
    for (t = config_directives[0]; t != NULL; ++t) 
       if (strcmp(s, t) == 0) return 1;
    return 0;
}

++t does not do what the author of this code thinks it does; it just
increments the pointer by one character, not to the next word in
config_directives[0]. So if the config file contains an invalid config
directive, it walks through the entire program memory like this. On i386
this happens to not crash (although it takes it a lot longer to start up
than it should due to this); on arm it eventually walks off the programs's
memory space and segfaults. Here's an ltrace of ntop on i386 showing it
looking at completly inappropriate parts of memory:

strcmp("port-resolution", "\376\377\377o\340\220\004\b\377\377\377o\003") = -1
strcmp("port-resolution", "\377\377o\340\220\004\b\377\377\377o\003") = -1
strcmp("port-resolution", "\377o\340\220\004\b\377\377\377o\003") = -1
strcmp("port-resolution", "o\340\220\004\b\377\377\377o\003") = 1

Here's how the function should be written:

int is_cfgdirective_valid(const char *s) {
    int t;
    for (t = 0; config_directives[t] != NULL; t++) 
       if (strcmp(s, config_directives[t]) == 0) return 1;
    return 0;
}

-- System Information:
Debian Release: testing/unstable
  APT prefers unstable
  APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: arm
Shell:  /bin/sh linked to /bin/bash
Kernel: 2.6.15-1-nslu2
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)

Versions of packages iftop depends on:
ii  libc6                         2.3.5-12   GNU C Library: Shared libraries an
ii  libncurses5                   5.5-1      Shared libraries for terminal hand
ii  libpcap0.7                    0.7.2-7    System interface for user-level pa

iftop recommends no packages.

-- no debconf information

-- 
see shy jo

Attachment: signature.asc
Description: Digital signature

Reply via email to