[Secure-testing-team] Bug#606808: echoping crashes sometimes when used against HTTPS host

Dmitry Semyonov linulin at gmail.com
Sat Dec 11 21:57:20 UTC 2010


Package: echoping
Version: 6.0.2-3
Severity: grave
Tags: security patch
Justification: user security hole

I use Smokeping to monitor a number of external hosts. echoping is
called by EchoPingHttps Smokeping probe, and it crashes several times a
week, resulting in syslog error like: 

Dec 11 00:13:27 bor kernel: [49668.766339] echoping[17510]: segfault at 767c858e ip 0804db39 sp bfea8710 error 4 in echoping[8048000+9000]

Hopefully, I found the source of this crash. I'm now running the patched
echoping binary to verify the fix, which is provided below. (Strictly
speaking, only the last change is required, but the former two improve
safety without causing any harm.)

--- echoping-6.0.2.orig/readline.c
+++ echoping-6.0.2/readline.c
@@ -139,7 +139,8 @@
        if (ln) {
                /* Empty buffer */
                if (buf_end == 0) {
-                       rc = gnutls_record_recv(session, TLS_buffer, maxlen);
+                       rc = gnutls_record_recv(session, TLS_buffer,
+                                               maxlen > MAXTOREAD ? MAXTOREAD : maxlen);
                        if (rc == -1)
                                return rc;
                        buf_end = rc;
@@ -148,13 +149,14 @@
                /* No more data in the buffer */
                else if (buf_ptr == buf_end) {
                        buf_ptr = 0;
-                       rc = gnutls_record_recv(session, TLS_buffer, maxlen);
+                       rc = gnutls_record_recv(session, TLS_buffer,
+                                               maxlen > MAXTOREAD ? MAXTOREAD : maxlen);
                        if (rc == -1)
                                return rc;
                        buf_end = rc;
                } else if (TLS_buffer[buf_end] != '\n') {
                        rc = gnutls_record_recv(session, TLS_buffer + buf_end,
-                                               maxlen);
+                                               maxlen > MAXTOREAD - buf_end ? MAXTOREAD - buf_end : maxlen);
                        if (rc == -1)
                                return rc;
                        buf_end = buf_end + rc;


-- System Information:
Debian Release: squeeze/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable'), (1, 'experimental')
Architecture: i386 (i686)

Kernel: Linux 2.6.32-5-686 (SMP w/1 CPU core)
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages echoping depends on:
ii  libc6                         2.11.2-7   Embedded GNU C Library: Shared lib
ii  libgnutls26                   2.8.6-1    the GNU TLS library - runtime libr
ii  libidn11                      1.15-2     GNU Libidn library, implementation
ii  libldap-2.4-2                 2.4.23-7   OpenLDAP libraries
ii  libpopt0                      1.16-1     lib for parsing cmdline parameters

echoping recommends no packages.

echoping suggests no packages.

-- no debconf information





More information about the Secure-testing-team mailing list