[systemd-devel] [PATCH] libudev: fix check for too long packet
Topi Miettinen
toiwoton at gmail.com
Fri Jan 23 09:29:46 PST 2015
On 01/23/15 03:06, Lennart Poettering wrote:
> On Sun, 18.01.15 23:57, Topi Miettinen (toiwoton at gmail.com) wrote:
>
>> Don't use recvmsg(2) return value to check for too long packets
>> (it doesn't work) but MSG_TRUNC flag.
>
> Why precisely doesn't this work? I mean, it will consider messages
> that are exactly as large as the buffer as too long, but otherwise the
> old check should be fine, no?
It doesn't work because the return value of recvmsg() never exceeds the
buffer size, so too large packets are never detected.
-Topi
>
> (The new check is much nicer though, admittedly)
>
>> ---
>> src/libudev/libudev-monitor.c | 2 +-
>> 1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/src/libudev/libudev-monitor.c b/src/libudev/libudev-monitor.c
>> index 484fefe..d8e551b 100644
>> --- a/src/libudev/libudev-monitor.c
>> +++ b/src/libudev/libudev-monitor.c
>> @@ -609,7 +609,7 @@ retry:
>> return NULL;
>> }
>>
>> - if (buflen < 32 || (size_t)buflen >= sizeof(buf)) {
>> + if (buflen < 32 || smsg.msg_flags & MSG_TRUNC) {
>> log_debug("invalid message length");
>> return NULL;
>> }
>> --
>> 2.1.4
>>
>> _______________________________________________
>> systemd-devel mailing list
>> systemd-devel at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/systemd-devel
>
>
> Lennart
>
More information about the systemd-devel
mailing list