--- /dev/null
+--- a/hydra-asterisk.c
++++ b/hydra-asterisk.c
+@@ -9,11 +9,11 @@
+
+ extern char *HYDRA_EXIT;
+
+-char *buf;
+-
+ int32_t start_asterisk(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp) {
+ char *empty = "\"\"";
+ char *login, *pass, buffer[1024];
++ char *buf;
++
+
+ if (strlen(login = hydra_get_next_login()) == 0)
+ login = empty;
+@@ -65,6 +65,7 @@ int32_t start_asterisk(int32_t s, char *ip, int32_t port, unsigned char options,
+ void service_asterisk(char *ip, int32_t sp, unsigned char options, char *miscptr, FILE * fp, int32_t port, char *hostname) {
+ int32_t run = 1, next_run = 1, sock = -1;
+ int32_t myport = PORT_ASTERISK, mysslport = PORT_ASTERISK_SSL;
++ char *buf;
+
+ hydra_register_socket(sp);
+ if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0)
+--- a/hydra-cisco-enable.c
++++ b/hydra-cisco-enable.c
+@@ -1,11 +1,11 @@
+ #include "hydra-mod.h"
+
+ extern char *HYDRA_EXIT;
+-char *buf;
+
+ int32_t start_cisco_enable(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp) {
+ char *empty = "";
+ char *pass, buffer[300];
++ char *buf;
+
+ if (strlen(pass = hydra_get_next_password()) == 0)
+ pass = empty;
+@@ -63,6 +63,7 @@ void service_cisco_enable(char *ip, int32_t sp, unsigned char options, char *mis
+ int32_t myport = PORT_TELNET, mysslport = PORT_TELNET_SSL;
+ char buffer[300];
+ char *login;
++ char *buf;
+
+ hydra_register_socket(sp);
+ if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0)
+--- a/hydra-cisco.c
++++ b/hydra-cisco.c
+@@ -5,11 +5,11 @@
+ #endif
+
+ extern char *HYDRA_EXIT;
+-char *buf = NULL;
+
+ int32_t start_cisco(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp) {
+ char *empty = "";
+ char *pass, buffer[300];
++ char *buf = NULL;
+
+ if (strlen(pass = hydra_get_next_password()) == 0)
+ pass = empty;
+--- a/hydra-cvs.c
++++ b/hydra-cvs.c
+@@ -3,7 +3,6 @@
+ extern int32_t hydra_data_ready_timed(int32_t socket, long sec, long usec);
+
+ extern char *HYDRA_EXIT;
+-char *buf;
+
+ int32_t start_cvs(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp) {
+ char *empty = "";
+@@ -37,6 +36,7 @@ int32_t start_cvs(int32_t s, char *ip, int32_t port, unsigned char options, char
+ 0, 121, 117, 104, 101, 100, 69, 73, 99, 63, 94, 93, 39, 37, 61, 48,
+ 58, 113, 32, 90, 44, 98, 60, 51, 33, 97, 62
+ };
++ char *buf;
+
+ if (strlen(login = hydra_get_next_login()) == 0)
+ login = empty;
+--- a/hydra-ftp.c
++++ b/hydra-ftp.c
+@@ -1,11 +1,11 @@
+ #include "hydra-mod.h"
+
+ extern char *HYDRA_EXIT;
+-char *buf;
+
+ int32_t start_ftp(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp) {
+ char *empty = "\"\"";
+ char *login, *pass, buffer[510];
++ char *buf;
+
+ if (strlen(login = hydra_get_next_login()) == 0)
+ login = empty;
+@@ -77,6 +77,7 @@ int32_t start_ftp(int32_t s, char *ip, int32_t port, unsigned char options, char
+ void service_ftp_core(char *ip, int32_t sp, unsigned char options, char *miscptr, FILE * fp, int32_t port, char *hostname, int32_t tls) {
+ int32_t run = 1, next_run = 1, sock = -1;
+ int32_t myport = PORT_FTP, mysslport = PORT_FTP_SSL;
++ char *buf;
+
+ hydra_register_socket(sp);
+ if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0)
+--- a/hydra-http-form.c
++++ b/hydra-http-form.c
+@@ -53,7 +53,6 @@ Added fail or success condition, getting cookies, and allow 5 redirections by da
+ #include "sasl.h"
+
+ extern char *HYDRA_EXIT;
+-char *buf;
+ char *cond;
+ extern int32_t http_auth_mechanism;
+
+@@ -579,6 +578,7 @@ return -1 if no response from server
+ */
+ int32_t analyze_server_response(int32_t s) {
+ int32_t runs = 0;
++ char *buf;
+
+ redirected_flag = 0;
+ auth_flag = 0;
+--- a/hydra-http-proxy-urlenum.c
++++ b/hydra-http-proxy-urlenum.c
+@@ -2,7 +2,6 @@
+ #include "sasl.h"
+
+ extern char *HYDRA_EXIT;
+-char *buf;
+ static int32_t http_proxy_auth_mechanism = AUTH_ERROR;
+
+ int32_t start_http_proxy_urlenum(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp, char *hostname) {
+@@ -12,6 +11,7 @@ int32_t start_http_proxy_urlenum(int32_t s, char *ip, int32_t port, unsigned cha
+ char *header = ""; /* XXX TODO */
+ char *ptr;
+ int32_t auth = 0;
++ char *buf;
+
+ login = hydra_get_next_login();
+ if (login == NULL || strlen(login) == 0 || strstr(login, "://") == NULL) {
+--- a/hydra-imap.c
++++ b/hydra-imap.c
+@@ -2,7 +2,6 @@
+ #include "sasl.h"
+
+ extern char *HYDRA_EXIT;
+-char *buf;
+ int32_t counter;
+
+ int32_t imap_auth_mechanism = AUTH_CLEAR;
+@@ -42,6 +41,7 @@ char *imap_read_server_capacity(int32_t sock) {
+ int32_t start_imap(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp) {
+ char *empty = "";
+ char *login, *pass, buffer[500], buffer2[500], *fooptr;
++ char *buf = NULL;
+
+ if (strlen(login = hydra_get_next_login()) == 0)
+ login = empty;
+@@ -357,6 +357,7 @@ void service_imap(char *ip, int32_t sp, unsigned char options, char *miscptr, FI
+ int32_t run = 1, next_run = 1, sock = -1;
+ int32_t myport = PORT_IMAP, mysslport = PORT_IMAP_SSL, disable_tls = 1;
+ char *buffer1 = "1 CAPABILITY\r\n";
++ char *buf = NULL;
+
+ hydra_register_socket(sp);
+ if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0)
+--- a/hydra-ldap.c
++++ b/hydra-ldap.c
+@@ -3,8 +3,6 @@
+
+ extern char *HYDRA_EXIT;
+
+-unsigned char *buf;
+-int32_t counter;
+ int32_t tls_required = 0;
+
+ int32_t start_ldap(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp, char *hostname, char version, int32_t auth_method) {
+@@ -13,6 +11,8 @@ int32_t start_ldap(int32_t s, char *ip, int32_t port, unsigned char options, cha
+ unsigned char buffer[512];
+ int32_t length = 0;
+ int32_t ldap_auth_mechanism = auth_method;
++ unsigned char *buf;
++ int32_t counter;
+
+ /*
+ The LDAP "simple" method has three modes of operation:
+@@ -354,6 +354,8 @@ int32_t start_ldap(int32_t s, char *ip, int32_t port, unsigned char options, cha
+ void service_ldap(char *ip, int32_t sp, unsigned char options, char *miscptr, FILE * fp, int32_t port, char *hostname, char version, int32_t auth_method) {
+ int32_t run = 1, next_run = 1, sock = -1;
+ int32_t myport = PORT_LDAP, mysslport = PORT_LDAP_SSL;
++ unsigned char *buf;
++ int32_t counter;
+
+ hydra_register_socket(sp);
+ if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0)
+--- a/hydra-mongodb.c
++++ b/hydra-mongodb.c
+@@ -17,7 +17,6 @@ void dummy_mongodb() {
+ extern int32_t hydra_data_ready_timed(int32_t socket, long sec, long usec);
+
+ extern char *HYDRA_EXIT;
+-char *buf;
+
+ #define DEFAULT_DB "admin"
+
+@@ -31,6 +30,7 @@ int is_error_msg(char *msg) {
+ }
+
+ int require_auth(int32_t sock) {
++ char *buf;
+ unsigned char m_hdr[] =
+ "\x3f\x00\x00\x00" //messageLength (63)
+ "\x00\x00\x00\x41" //requestID
+--- a/hydra-mssql.c
++++ b/hydra-mssql.c
+@@ -3,7 +3,6 @@
+ #define MSLEN 30
+
+ extern char *HYDRA_EXIT;
+-char *buf;
+
+ unsigned char p_hdr[] =
+ "\x02\x00\x02\x00\x00\x00\x02\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" "\x00\x00\x00\x00\x00\x00\x00\x00\x00";
+@@ -52,6 +51,7 @@ int32_t start_mssql(int32_t s, char *ip, int32_t port, unsigned char options, ch
+ char ms_pass[MSLEN + 1];
+ unsigned char len_login, len_pass;
+ int32_t ret = -1;
++ char *buf;
+
+ if (strlen(login = hydra_get_next_login()) == 0)
+ login = empty;
+--- a/hydra-nntp.c
++++ b/hydra-nntp.c
+@@ -13,7 +13,6 @@ RFC 4643: Network News Transfer Protocol (NNTP) Extension for Authentication
+ int32_t nntp_auth_mechanism = AUTH_CLEAR;
+
+ extern char *HYDRA_EXIT;
+-char *buf;
+
+ char *nntp_read_server_capacity(int32_t sock) {
+ char *ptr = NULL;
+@@ -51,6 +50,7 @@ int32_t start_nntp(int32_t s, char *ip, int32_t port, unsigned char options, cha
+ char *empty = "\"\"";
+ char *login, *pass, buffer[500], buffer2[500], *fooptr;
+ int32_t i = 1;
++ char *buf;
+
+ if (strlen(login = hydra_get_next_login()) == 0)
+ login = empty;
+@@ -270,6 +270,7 @@ void service_nntp(char *ip, int32_t sp, unsigned char options, char *miscptr, FI
+ int32_t i = 0, run = 1, next_run = 1, sock = -1;
+ int32_t myport = PORT_NNTP, mysslport = PORT_NNTP_SSL, disable_tls = 0;
+ char *buffer1 = "CAPABILITIES\r\n";
++ char *buf;
+
+ hydra_register_socket(sp);
+ if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0)
+--- a/hydra-oracle-listener.c
++++ b/hydra-oracle-listener.c
+@@ -22,8 +22,6 @@ void dummy_oracle_listener() {
+ #define HASHSIZE 17
+
+ extern char *HYDRA_EXIT;
+-char *buf;
+-unsigned char *hash;
+ int32_t sid_mechanism = AUTH_PLAIN;
+
+ int32_t initial_permutation(unsigned char **result, char *p_str, int32_t *sz) {
+@@ -143,6 +141,7 @@ int32_t ora_hash_password(char *pass) {
+ unsigned char *desresult;
+ unsigned char *result;
+ char buff[strlen(pass) + 5];
++ unsigned char *hash;
+
+ memset(buff, 0, sizeof(buff));
+
+@@ -192,6 +191,8 @@ int32_t start_oracle_listener(int32_t s, char *ip, int32_t port, unsigned char o
+ char connect_string[200];
+ char buffer2[260];
+ int32_t siz = 0;
++ char *buf;
++ unsigned char *hash;
+
+ memset(connect_string, 0, sizeof(connect_string));
+ memset(buffer2, 0, sizeof(buffer2));
+--- a/hydra-oracle-sid.c
++++ b/hydra-oracle-sid.c
+@@ -19,7 +19,6 @@ void dummy_oracle_sid() {
+ #define HASHSIZE 16
+
+ extern char *HYDRA_EXIT;
+-char *buf;
+ unsigned char *hash;
+
+
+@@ -40,6 +39,7 @@ int32_t start_oracle_sid(int32_t s, char *ip, int32_t port, unsigned char option
+ char connect_string[200];
+ char buffer2[260];
+ int32_t siz = 0;
++ char *buf;
+
+ memset(connect_string, 0, sizeof(connect_string));
+ memset(buffer2, 0, sizeof(buffer2));
+--- a/hydra-pcnfs.c
++++ b/hydra-pcnfs.c
+@@ -3,7 +3,6 @@
+ /* pcnfs stuff copied from prout.c */
+
+ extern char *HYDRA_EXIT;
+-char *buf;
+
+ #define LEN_HDR_RPC 24
+ #define LEN_AUTH_UNIX 72+12
+@@ -37,6 +36,7 @@ int32_t start_pcnfs(int32_t s, char *ip, int32_t port, unsigned char options, ch
+ char *empty = "";
+ char *login, *pass, buffer[LEN_HDR_RPC + LEN_AUTH_UNIX + LEN_HDR_PCN_AUTH];
+ char *ptr, *pkt = buffer;
++ char *buf;
+
+ unsigned long *authp;
+ struct timeval tv;
+--- a/hydra-pop3.c
++++ b/hydra-pop3.c
+@@ -13,7 +13,6 @@ typedef struct pool_str {
+ } pool;
+
+ extern char *HYDRA_EXIT;
+-char *buf;
+ char apop_challenge[300] = "";
+ pool *plist = NULL, *p = NULL;
+
+@@ -120,6 +119,7 @@ STLS
+ int32_t start_pop3(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp) {
+ char *empty = "\"\"";
+ char *login, *pass, buffer[500], buffer2[500], *fooptr;
++ char *buf;
+
+ if (strlen(login = hydra_get_next_login()) == 0)
+ login = empty;
+@@ -416,6 +416,7 @@ int32_t start_pop3(int32_t s, char *ip, int32_t port, unsigned char options, cha
+ void service_pop3(char *ip, int32_t sp, unsigned char options, char *miscptr, FILE * fp, int32_t port, char *hostname) {
+ int32_t run = 1, next_run = 1, sock = -1;
+ char *ptr = NULL;
++ char *buf;
+
+ //extract data from the pool, ip is the key
+ if (plist == NULL)
+@@ -520,6 +521,7 @@ int32_t service_pop3_init(char *ip, int32_t sp, unsigned char options, char *mis
+ char *capa_str = "CAPA\r\n";
+ char *quit_str = "QUIT\r\n";
+ pool p;
++ char *buf;
+
+ p.pop3_auth_mechanism = AUTH_CLEAR;
+ p.disable_tls = 1;
+--- a/hydra-redis.c
++++ b/hydra-redis.c
+@@ -1,11 +1,11 @@
+ #include "hydra-mod.h"
+
+ extern char *HYDRA_EXIT;
+-char *buf;
+
+ int32_t start_redis(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp) {
+ char *pass, buffer[510];
+ char *empty = "";
++ char *buf;
+
+ if (strlen(pass = hydra_get_next_password()) == 0)
+ pass = empty;
+@@ -134,6 +134,7 @@ int32_t service_redis_init(char *ip, int32_t sp, unsigned char options, char *mi
+ int32_t sock = -1;
+ int32_t myport = PORT_REDIS, mysslport = PORT_REDIS_SSL;
+ char buffer[] = "*1\r\n$4\r\nping\r\n";
++ char *buf;
+
+ hydra_register_socket(sp);
+ if ((options & OPTION_SSL) == 0) {
+--- a/hydra-smtp-enum.c
++++ b/hydra-smtp-enum.c
+@@ -14,7 +14,6 @@ passwd will be used as the domain name
+ #include "hydra-mod.h"
+
+ extern char *HYDRA_EXIT;
+-char *buf;
+ char *err = NULL;
+ int32_t tosent = 0;
+
+@@ -27,6 +26,7 @@ int32_t smtp_enum_cmd = VRFY;
+ int32_t start_smtp_enum(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp) {
+ char *empty = "";
+ char *login, *pass, buffer[500];
++ char *buf;
+
+ if (strlen(login = hydra_get_next_login()) == 0)
+ login = empty;
+@@ -154,6 +154,7 @@ void service_smtp_enum(char *ip, int32_t sp, unsigned char options, char *miscpt
+ int32_t run = 1, next_run = 1, sock = -1, i = 0;
+ int32_t myport = PORT_SMTP, mysslport = PORT_SMTP_SSL;
+ char *buffer = "HELO hydra\r\n";
++ char *buf;
+
+ hydra_register_socket(sp);
+ if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0)
+--- a/hydra-socks5.c
++++ b/hydra-socks5.c
+@@ -10,7 +10,6 @@ This module enable bruteforcing for socks5, only following types are supported:
+ */
+
+ extern char *HYDRA_EXIT;
+-unsigned char *buf;
+
+ int32_t fail_cnt;
+
+@@ -18,6 +17,7 @@ int32_t start_socks5(int32_t s, char *ip, int32_t port, unsigned char options, c
+ char *empty = "";
+ char *login, *pass, buffer[300];
+ int32_t pport, fud = 0;
++ unsigned char *buf;
+
+ if (strlen(login = hydra_get_next_login()) == 0)
+ login = empty;
+--- a/hydra-telnet.c
++++ b/hydra-telnet.c
+@@ -2,13 +2,13 @@
+ #include <arpa/telnet.h>
+
+ extern char *HYDRA_EXIT;
+-char *buf;
+ int32_t no_line_mode;
+
+ int32_t start_telnet(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp) {
+ char *empty = "";
+ char *login, *pass, buffer[300];
+ int32_t i = 0;
++ char *buf;
+
+ if (strlen(login = hydra_get_next_login()) == 0)
+ login = empty;
+@@ -99,6 +99,7 @@ int32_t start_telnet(int32_t s, char *ip, int32_t port, unsigned char options, c
+ void service_telnet(char *ip, int32_t sp, unsigned char options, char *miscptr, FILE * fp, int32_t port, char *hostname) {
+ int32_t run = 1, next_run = 1, sock = -1, fck;
+ int32_t myport = PORT_TELNET, mysslport = PORT_TELNET_SSL;
++ char *buf;
+
+ hydra_register_socket(sp);
+ if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0)
+--- a/hydra-vmauthd.c
++++ b/hydra-vmauthd.c
+@@ -8,11 +8,11 @@
+
+ extern char *HYDRA_EXIT;
+
+-char *buf;
+-
+ int32_t start_vmauthd(int32_t s, char *ip, int32_t port, unsigned char options, char *miscptr, FILE * fp) {
+ char *empty = "\"\"";
+ char *login, *pass, buffer[300];
++ char *buf;
++
+
+ if (strlen(login = hydra_get_next_login()) == 0)
+ login = empty;
+@@ -68,6 +68,7 @@ int32_t start_vmauthd(int32_t s, char *ip, int32_t port, unsigned char options,
+ void service_vmauthd(char *ip, int32_t sp, unsigned char options, char *miscptr, FILE * fp, int32_t port, char *hostname) {
+ int32_t run = 1, next_run = 1, sock = -1;
+ int32_t myport = PORT_VMAUTHD, mysslport = PORT_VMAUTHD_SSL;
++ char *buf;
+
+ hydra_register_socket(sp);
+ if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0)
+--- a/hydra-vnc.c
++++ b/hydra-vnc.c
+@@ -19,7 +19,6 @@ int32_t vnc_client_version = RFB33;
+ int32_t failed_auth = 0;
+
+ extern char *HYDRA_EXIT;
+-char *buf;
+
+ /*
+ * Encrypt CHALLENGESIZE bytes in memory using a password.
+@@ -48,6 +47,7 @@ int32_t start_vnc(int32_t s, char *ip, int32_t port, unsigned char options, char
+ char *empty = "";
+ char *pass;
+ unsigned char buf2[CHALLENGESIZE + 4];
++ char *buf;
+
+ if (strlen(pass = hydra_get_next_password()) == 0)
+ pass = empty;
+@@ -148,6 +148,7 @@ int32_t start_vnc(int32_t s, char *ip, int32_t port, unsigned char options, char
+ void service_vnc(char *ip, int32_t sp, unsigned char options, char *miscptr, FILE * fp, int32_t port, char *hostname) {
+ int32_t run = 1, next_run = 1, sock = -1;
+ int32_t myport = PORT_VNC, mysslport = PORT_VNC_SSL;
++ char *buf;
+
+ hydra_register_socket(sp);
+ if (memcmp(hydra_get_next_pair(), &HYDRA_EXIT, sizeof(HYDRA_EXIT)) == 0)