On Thu, Jan 02, 2020 at 02:35:22PM +0100, Florian Weimer wrote:
* Damian Ivanov:
> I could not find any information if having the socket length limited
> is still something that is required nowadays as it seems this is
> mostly for compatibility reasons?
I don't know why the kernel limits the socket length. There is no
strict requirement to do so because the userspace interfaces all have
explicit lengths. struct sockaddr_un has a fixed-size buffer, but
that could be worked around, similar to struct dirent.
The kernel doesn't limit this length for any particular technical reason, it
limits it as a matter of maintaining ABI compatibility. When the unix address
family was written back in the 80's, they decided that the sun_path component
was coded to a length of 108 bytes, and so that is now part of the ABI, and
can't be changed. Any systemcall expecting a strict 108 byte path may encounter
what would appear to be an unterminated string, even if the only thing you did
was lengthen the path name. And migrating structure to an arbitrary length
string (using a variable array or some such), would completley break the ABI.
The internal kernel interfaces are built on top of struct
sockaddr_storage and do not pass explicit lengths, but those could be
changed.
_______________________________________________
kernel mailing list -- kernel(a)lists.fedoraproject.org
To unsubscribe send an email to kernel-leave(a)lists.fedoraproject.org
Fedora Code of Conduct:
https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines:
https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives:
https://lists.fedoraproject.org/archives/list/kernel@lists.fedoraproject.org