On 8.1.2013, at 11.15, Joan Picanyol i Puig <[email protected]> wrote:

>>      if (i_strocpy(sa.un.sun_path, path, sizeof(sa.un.sun_path)) < 0) {
>>              /* too long path */
>>              errno = EINVAL;
>> 
>> Your path is longer than possible. This patch should make it clearer in
>> future: http://hg.dovecot.org/dovecot-2.1/rev/e4cc3f2b66e3
> 
> Thanks, changing base_dir did the trick. I wonder why though, since
> both PATH_MAX and FILENAME_MAX are defined as 1024 on my system…

UNIX socket paths seem to have a rather small limit in all operating systems. 
Linux and Solaris has 108 bytes, OSX has 104 bytes. Probably increasing it 
would break some programs.

Although I wonder if it would be possible to simply allocate more memory than 
the struct contains and just write the string there. OSX also has some length 
parameter:

        unsigned char   sun_len;        /* sockaddr len including null */

Anyway, probably not worth the trouble.

Reply via email to