X-Git-Url: https://www.tinc-vpn.org/git/browse?p=tinc;a=blobdiff_plain;f=src%2Fnet.c;h=9daf8c81c0012758c189abeff688e53fb8319821;hp=3c884782152b7b66445b58123e88131c44a85f93;hb=61e71ab74ad9b5edb044b84ccf1111a33eb468cb;hpb=cc01b18bc6d0bfb12e6770fc0a007c278f355d9e diff --git a/src/net.c b/src/net.c index 3c884782..9daf8c81 100644 --- a/src/net.c +++ b/src/net.c @@ -935,8 +935,8 @@ cp if(cl->buflen >= MAXBUFSIZE) { - syslog(LOG_ERR, "Metadata read buffer full! Discarding contents."); - cl->buflen = 0; + syslog(LOG_ERR, "Metadata read buffer overflow."); + return -1; } lenin = read(cl->meta_socket, cl->buffer, MAXBUFSIZE-cl->buflen); @@ -971,17 +971,22 @@ cp if(request_handlers[request] == NULL) { syslog(LOG_ERR, "Unknown request: %s", cl->buffer); - return 0; + return -1; } if(debug_lvl > 3) syslog(LOG_DEBUG, "Got request: %s", cl->buffer); - request_handlers[request](cl); + if(request_handlers[request](cl)) /* Something went wrong. Probably scriptkiddies. Terminate. */ + { + syslog(LOG_ERR, "Error while processing request from IP_ADDR_S", IP_ADDR_V(cl->real_ip)); + return -1; + } } else { - syslog(LOG_ERR, "Bogus data received: %s", cl->buffer); + syslog(LOG_ERR, "Bogus data received."); + return -1; } cl->buflen -= cl->reqlen;