Package: ngrep
Version: 1.44-2
Severity: important
Tags: security

   ngrep's signal handler, clean_exit(), calls free() and other cleanup
functions in a non-idempotent way. There is an easy way to trigger the
bug by running "ngrep . | cat", then pressing Ctrl-C. ngrep will get a
SIGINT signal from the shell, and a SIGPIPE signal from the dying cat
process, resulting in clean_exit() being called twice.

   Adding some code like this at the beginning of clean_exit() probably
fixes the issue:

    static volatile int cleaned = 0;
    if(cleaned++) exit(sig);

   This is probably a security issue, too, because the data ngrep is
handling comes from the network, but it does not seem to be easily
exploitable (famous last words, I know). Feel free to remove the
security tag if you disagree, but a process running as root dumping
core does not seem right to me in any case.

   Also the argument for clean_exit seems wrong to me, signal(2) says
int, not int32_t.

-- System Information:
Debian Release: testing/unstable
  APT prefers unstable
  APT policy: (500, 'unstable'), (50, 'experimental')
Architecture: i386 (i686)
Shell:  /bin/sh linked to /bin/bash
Kernel: Linux 2.6.17.11
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)

Versions of packages ngrep depends on:
ii  libc6                        2.3.6.ds1-6 GNU C Library: Shared libraries
ii  libpcap0.8                   0.9.5-1     System interface for user-level pa
ii  libpcre3                     6.7-1       Perl 5 Compatible Regular Expressi

ngrep recommends no packages.

-- no debconf information


-- 
To UNSUBSCRIBE, email to [EMAIL PROTECTED]
with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]

Reply via email to