diff --git a/src/auth.c b/src/auth.c index 05c9e2e..83a7d82 100644 --- a/src/auth.c +++ b/src/auth.c @@ -57,7 +57,7 @@ int clientnegotiate(struct chain * redir, struct clientparam * param, struct soc ":%hu HTTP/1.0\r\nProxy-Connection: keep-alive\r\n", ntohs(*SAPORT(addr))); if(user){ len += sprintf((char *)buf + len, "Proxy-authorization: basic "); - sprintf((char *)username, "%.128s:%.64s", user, pass?pass:(unsigned char *)""); + sprintf((char *)username, "%.128s:%.128s", user, pass?pass:(unsigned char *)""); en64(username, buf+len, (int)strlen((char *)username)); len = (int)strlen((char *)buf); len += sprintf((char *)buf + len, "\r\n"); diff --git a/src/ftp.c b/src/ftp.c index b776115..3007ade 100644 --- a/src/ftp.c +++ b/src/ftp.c @@ -9,17 +9,17 @@ int ftplogin(struct clientparam *param, char *nbuf, int *innbuf) { - char tbuf[1024]; + char tbuf[256]; int i; char *buf; int len; int res; buf = nbuf?nbuf:tbuf; - len = nbuf?*innbuf:1024; + len = nbuf?*innbuf:sizeof(tbuf); if(innbuf)*innbuf = 0; - if(len < 48) return 707; + if(len < 140) return 707; while((i = sockgetlinebuf(param, SERVER, (unsigned char *)buf, len - 1, '\n', conf.timeouts[STRING_L])) > 0 && (i < 3 || !isnumber(*buf) || buf[3] == '-')){ } if(i < 3) return 706; @@ -28,7 +28,7 @@ int ftplogin(struct clientparam *param, char *nbuf, int *innbuf) { *innbuf = i; return 702; } - sprintf(buf, "USER %.32s\r\n", param->extusername?param->extusername:(unsigned char *)"anonymous"); + sprintf(buf, "USER %.128s\r\n", param->extusername?param->extusername:(unsigned char *)"anonymous"); if((int)socksend(param->remsock, (unsigned char *)buf, (int)strlen(buf), conf.timeouts[STRING_S]) != (int)strlen(buf)){ return 703; } @@ -40,7 +40,7 @@ int ftplogin(struct clientparam *param, char *nbuf, int *innbuf) { buf[i] = 0; res = atoi(buf)/100; if(res == 3){ - sprintf(buf, "PASS %.32s\r\n", + sprintf(buf, "PASS %.128s\r\n", param->extusername? (param->extpassword? param->extpassword:(unsigned char *)"") diff --git a/src/ftppr.c b/src/ftppr.c index 820e9cc..0cc0762 100644 --- a/src/ftppr.c +++ b/src/ftppr.c @@ -70,7 +70,7 @@ void * ftpprchild(struct clientparam* param) { param->res = res; if(inbuf && inbuf != BUFSIZE && socksend(param->ctrlsock, buf, inbuf, conf.timeouts[STRING_S])!=inbuf) {RETURN (807);} if(!res) status = 3; - sprintf((char *)buf, "%.64s@%.128s%c%hu", param->extusername, param->hostname, (ntohs(*SAPORT(¶m->sinsr))==21)?0:':', ntohs(*SAPORT(¶m->sinsr))); + sprintf((char *)buf, "%.128s@%.128s%c%hu", param->extusername, param->hostname, (ntohs(*SAPORT(¶m->sinsr))==21)?0:':', ntohs(*SAPORT(¶m->sinsr))); req = mystrdup((char *)buf); #ifndef WITHMAIN { diff --git a/src/pop3p.c b/src/pop3p.c index 46b4480..b5f3088 100644 --- a/src/pop3p.c +++ b/src/pop3p.c @@ -48,7 +48,7 @@ void * pop3pchild(struct clientparam* param) { CLEANRET: if(param->hostname&¶m->extusername) { - sprintf((char *)buf, "%.64s@%.128s%c%hu", param->extusername, param->hostname, (*SAPORT(¶m->sinsr)==110)?0:':', ntohs(*SAPORT(¶m->sinsr))); + sprintf((char *)buf, "%.128s@%.128s%c%hu", param->extusername, param->hostname, (*SAPORT(¶m->sinsr)==110)?0:':', ntohs(*SAPORT(¶m->sinsr))); (*param->srv->logfunc)(param, buf); } else (*param->srv->logfunc)(param, NULL); diff --git a/src/proxy.c b/src/proxy.c index 46bba1f..07eed13 100644 --- a/src/proxy.c +++ b/src/proxy.c @@ -131,8 +131,8 @@ char * proxy_stringtable[] = { NULL }; -#define BUFSIZE 8192 #define LINESIZE 4096 +#define BUFSIZE (LINESIZE*2) #define FTPBUFSIZE 1536 static void logurl(struct clientparam * param, char * buf, char * req, int ftp){ @@ -843,7 +843,7 @@ for(;;){ if(keepalive <= 1) sprintf((char*)buf+strlen((char *)buf), "%s: %s\r\n", (param->redirtype == R_HTTP)?"Proxy-Connection":"Connection", keepalive? "keep-alive":"close"); if(param->extusername){ sprintf((char*)buf + strlen((char *)buf), "%s: basic ", (redirect)?"Proxy-Authorization":"Authorization"); - sprintf((char*)username, "%.128s:%.64s", param->extusername, param->extpassword?param->extpassword:(unsigned char*)""); + sprintf((char*)username, "%.128s:%.128s", param->extusername, param->extpassword?param->extpassword:(unsigned char*)""); en64(username, buf+strlen((char *)buf), (int)strlen((char *)username)); sprintf((char*)buf + strlen((char *)buf), "\r\n"); } diff --git a/src/smtpp.c b/src/smtpp.c index 048f883..e40e4ea 100644 --- a/src/smtpp.c +++ b/src/smtpp.c @@ -291,7 +291,7 @@ void * smtppchild(struct clientparam* param) { CLEANRET: if(param->hostname&¶m->extusername) { - sprintf((char *)buf, "%.64s@%.128s%c%hu", param->extusername, param->hostname, *SAPORT(¶m->sinsr)==25?0:':',ntohs(*SAPORT(¶m->sinsr))); + sprintf((char *)buf, "%.128s@%.128s%c%hu", param->extusername, param->hostname, *SAPORT(¶m->sinsr)==25?0:':',ntohs(*SAPORT(¶m->sinsr))); (*param->srv->logfunc)(param, buf); } else (*param->srv->logfunc)(param, NULL);