Package: vtun
Version: 3.0.3-2.1
Severity: normal
Tags: security patch
When you send a SIGHUP to a vtun client process and it cannot connects
to the remote server, vtun try to reconnect without sleep between each attempt.
In result, the vtun process uses lot of CPU, and write to syslog without limit.
Here is a fix to prevent this behavior. On SIGHUP, the first sleep will be
discarded, then sleep will be used again.
--- a/client.c 2016-03-17 16:18:01.000000000 +0100                                                                                                                                                                                  
+++ b/client.c 2016-03-16 15:52:49.079811212 +0100                                                                                                                                                                          
@@ -133,6 +133,7 @@ void client(struct vtun_host *host)                                                                                                                                                                                      
           if (!vtun.quiet || errno != ETIMEDOUT)                                                                                                                                                                                            
              vtun_syslog(LOG_INFO,"Connect to %s failed. %s(%d)", vtun.svr_name,                                                                                                                                                            
                                        strerror(errno), errno);                                                                                                                                                                             
+          client_term = 0;                                                                                                                                                                                                                  
         } else {                                                                                                                                                                                                                            
           if( auth_client(s, host) ){                                                                                                                                                                                                       
              vtun_syslog(LOG_INFO,"Session %s[%s] opened",host->host,vtun.svr_name);                                                                                                                                                        
@@ -143,6 +144,7 @@ void client(struct vtun_host *host)
              vtun_syslog(LOG_INFO,"Session %s[%s] closed",host->host,vtun.svr_name);
           } else {
              vtun_syslog(LOG_INFO,"Connection denied by %s",vtun.svr_name);
+             client_term = 0;
           }
        }
        close(s);
-- System Information:
Debian Release: stretch/sid
  APT prefers testing
  APT policy: (990, 'testing'), (700, 'unstable'), (500, 'experimental'), (500, 'stable')
Architecture: amd64 (x86_64)
Foreign Architectures: i386
Kernel: Linux 4.2.0-1-amd64 (SMP w/8 CPU cores)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)