From: Guus Sliepen Date: Mon, 24 Apr 2000 09:39:50 +0000 (+0000) Subject: Bug found! Wrong pointer was used for handling multiple ADD_HOST requests X-Git-Tag: import-tinc-1.1~1006 X-Git-Url: https://git.meshlink.io/?a=commitdiff_plain;h=16d581be68bb52c08569e34e8a6b87f66b87e8ee;p=meshlink Bug found! Wrong pointer was used for handling multiple ADD_HOST requests at once. (See line 606.) --- diff --git a/src/protocol.c b/src/protocol.c index d6195377..0e250da5 100644 --- a/src/protocol.c +++ b/src/protocol.c @@ -491,7 +491,7 @@ int ack_h(conn_list_t *cl, unsigned char *d, int len) { if(request_handlers[d[1]] == NULL) syslog(LOG_ERR, "Unknown request %d.", d[1]); - if(request_handlers[d[1]](cl, d, len - 1) < 0) + if(request_handlers[d[1]](cl, d + 1, len - 1) < 0) return -1; } @@ -597,12 +597,13 @@ int add_host_h(conn_list_t *cl, unsigned char *d, int len) /* again, i'm cheating here. see the comment in ack_h. + Naughty zarq! Now you see what cheating will get you... [GS] */ if(len > sizeof(add_host_t)) /* Another ADD_HOST follows */ { if(request_handlers[d[sizeof(add_host_t)]] == NULL) syslog(LOG_ERR, "Unknown request %d.", d[sizeof(add_host_t)]); - if(request_handlers[d[sizeof(add_host_t)]](cl, d, len - sizeof(add_host_t)) < 0) + if(request_handlers[d[sizeof(add_host_t)]](cl, d + sizeof(add_host_t), len - sizeof(add_host_t)) < 0) return -1; }