[PATCH grout] api: fix external clients build

Andrei Rybchenko rybchenko.andrei at gmail.com
Tue Mar 24 13:52:04 CET 2026


On 3/24/26 3:15 PM, Robin Jarry wrote:
> Hey Andrei,
> 
> Andrei Rybchenko, Mar 24, 2026 at 12:20:
>> gr_string.h is now used in API headers. So, it must be installed and
>> provided in grout-headers package.
>>
>> Fixes: 88c63f8871f7 ("api: replace direct memccpy with gr_strcpy for safe string copy")
>> Signed-off-by: Andrei Rybchenko <rybchenko.andrei at gmail.com>
>> ---
>>   api/meson.build | 1 +
>>   1 file changed, 1 insertion(+)
>>
>> diff --git a/api/meson.build b/api/meson.build
>> index ce8340c8..f734a65b 100644
>> --- a/api/meson.build
>> +++ b/api/meson.build
>> @@ -10,6 +10,7 @@ api_headers += files(
>>     'gr_macro.h',
>>     'gr_net_compat.h',
>>     'gr_net_types.h',
>> +  'gr_string.h',
>>   )
>>   api_headers += configure_file(
>>     output: 'gr_version.h',
> 
> Hmm, I hadn't considered this. The issue here is that some functions
> declared in gr_string.h are implemented in api/string.c which isn't
> shipped as grout headers.

Good point. I've not noticed it.

> 
> Installing gr_string.h isn't the correct solution. We should remove the
> include from gr_api_client_impl.h instead:
> 
> diff --git api/gr_api_client_impl.h api/gr_api_client_impl.h
> index ca9a0f84e1b7..14b4a79d3087 100644
> --- api/gr_api_client_impl.h
> +++ api/gr_api_client_impl.h
> @@ -8,7 +8,6 @@
>   #include <gr_api.h>
>   #include <gr_errno.h>
>   #include <gr_macro.h>
> -#include <gr_string.h>
>   #include <gr_version.h>
> 
>   #include <assert.h>
> @@ -50,8 +49,11 @@ struct gr_api_client *gr_api_client_connect(const char *sock_path) {
>                  goto err;
> 
>          addr.un.sun_family = AF_UNIX;
> -       if (gr_strcpy(addr.un.sun_path, sizeof(addr.un.sun_path), sock_path) < 0)
> +       unsigned ret = snprintf(addr.un.sun_path, sizeof(addr.un.sun_path), "%s", sock_path);
> +       if (ret < 0 || ret >= sizeof(addr.un.sun_path)) {
> +               errno = ENAMETOOLONG;
>                  goto err;
> +       }
> 
>          if (connect(client->sock_fd, &addr.a, sizeof(addr.un)) < 0)
>                  goto err;
> 



More information about the grout mailing list