From 8ca14abb55c65103f107c022f38ac71bfec2c4eb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ren=C3=A9=20Canna=C3=B2?= Date: Tue, 9 Apr 2019 11:24:49 +1000 Subject: [PATCH] LDAP comment added after the first word in query --- lib/MySQL_Session.cpp | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/lib/MySQL_Session.cpp b/lib/MySQL_Session.cpp index c905bb5d6..7827378c4 100644 --- a/lib/MySQL_Session.cpp +++ b/lib/MySQL_Session.cpp @@ -5160,13 +5160,19 @@ void MySQL_Session::add_ldap_comment_to_pkt(PtrSize_t *_pkt) { memcpy(_new_pkt.ptr , _pkt->ptr, 5); unsigned char *_c=(unsigned char *)_new_pkt.ptr; _c+=5; - // prefix comment - //memcpy(_c,b,strlen(b)); - //_c+=strlen(b); - memcpy(_c, (char *)_pkt->ptr+5, _pkt->size-5); - // suffix comment - _c+=_pkt->size-5; - memcpy(_c,b,strlen(b)); + void *idx = memchr((char *)_pkt->ptr+5, ' ', _pkt->size-5); + if (idx) { + size_t first_word_len = (char *)idx - (char *)_pkt->ptr - 5; + memcpy(_c, (char *)_pkt->ptr+5, first_word_len); + _c+= first_word_len; + memcpy(_c,b,strlen(b)); + _c+= strlen(b); + memcpy(_c, (char *)idx, _pkt->size - 5 - first_word_len); + } else { + memcpy(_c, (char *)_pkt->ptr+5, _pkt->size-5); + _c+=_pkt->size-5; + memcpy(_c,b,strlen(b)); + } l_free(_pkt->size,_pkt->ptr); _pkt->size = _pkt->size + strlen(b); _pkt->ptr = _new_pkt.ptr;