From 32ffca1d004d3334d829bc1b1134b87b7c392dc8 Mon Sep 17 00:00:00 2001 From: Sergey Nikolaev Date: Wed, 8 Oct 2025 09:19:01 +0700 Subject: [PATCH 1/2] fix: correct address validation and memcpy usage in CSphUrl::Connect Related issue https://github.com/manticoresoftware/manticoresearch/issues/3799 --- mysqlse/snippets_udf.cc | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/mysqlse/snippets_udf.cc b/mysqlse/snippets_udf.cc index 581fea82cf..d0189b6320 100644 --- a/mysqlse/snippets_udf.cc +++ b/mysqlse/snippets_udf.cc @@ -386,7 +386,7 @@ int CSphUrl::Connect() #if MYSQL_VERSION_ID>=50515 struct addrinfo *hp = NULL; tmp_errno = getaddrinfo ( m_sHost, NULL, NULL, &hp ); - if ( !tmp_errno || !hp || !hp->ai_addr ) + if ( tmp_errno!=0 || !hp || !hp->ai_addr ) { bError = true; if ( hp ) @@ -413,7 +413,7 @@ int CSphUrl::Connect() } #if MYSQL_VERSION_ID>=50515 - memcpy ( &sin.sin_addr, hp->ai_addr, Min ( sizeof(sin.sin_addr), (size_t)hp->ai_addrlen ) ); + memcpy ( &sin.sin_addr, &( (struct sockaddr_in *)hp->ai_addr )->sin_addr, sizeof(sin.sin_addr) ); freeaddrinfo ( hp ); #else memcpy ( &sin.sin_addr, hp->h_addr, Min ( sizeof(sin.sin_addr), (size_t)hp->h_length ) ); From 3077bf9299035c5719fe7bee4d33239d26bf226d Mon Sep 17 00:00:00 2001 From: Sergey Nikolaev Date: Wed, 29 Oct 2025 17:46:21 +0700 Subject: [PATCH 2/2] fix: remove unnecessary memory deallocation in CSphUrl::Connect as suggested by @grooverdan in https://github.com/manticoresoftware/manticoresearch/pull/3804#issuecomment-3459198777 --- mysqlse/snippets_udf.cc | 2 -- 1 file changed, 2 deletions(-) diff --git a/mysqlse/snippets_udf.cc b/mysqlse/snippets_udf.cc index d0189b6320..756d7e3d20 100644 --- a/mysqlse/snippets_udf.cc +++ b/mysqlse/snippets_udf.cc @@ -389,8 +389,6 @@ int CSphUrl::Connect() if ( tmp_errno!=0 || !hp || !hp->ai_addr ) { bError = true; - if ( hp ) - freeaddrinfo ( hp ); } #else struct hostent tmp_hostent, *hp;