<div dir="auto"><div><br><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Feb 5, 2020, 12:58 AM Bran S <<a href="mailto:archsbran@gmail.com">archsbran@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Trying to solve ticket <a href="https://devel.rtems.org/ticket/1977" rel="noreferrer noreferrer" target="_blank">https://devel.rtems.org/ticket/1977</a><br>
<br>
The mode parameter sets access permissions for the created message queue.<br>
Examples:<br>
S_IRUSR  00400 user has read permission<br>
S_IWUSR  00200 user has write permission<br>
S_IXUSR  00100 user has execute permission<br>
Complete list is at: <a href="http://man7.org/linux/man-pages/man2/open.2.html" rel="noreferrer noreferrer" target="_blank">http://man7.org/linux/man-pages/man2/open.2.html</a><br>
<br>
<a href="https://github.com/RTEMS/rtems/blob/master/cpukit/posix/src/mqueueopen.c#L176" rel="noreferrer noreferrer" target="_blank">https://github.com/RTEMS/rtems/blob/master/cpukit/posix/src/mqueueopen.c#L176</a><br>
Is this is the place where we need to take care of the mode argument ?<br>
<br>
I am thinking we would need to store the mode bits in<br>
POSIX_Message_queue_Control structure.(Ref:<br>
<a href="https://github.com/RTEMS/rtems/blob/master/cpukit/include/rtems/posix/mqueue.h#L57" rel="noreferrer noreferrer" target="_blank">https://github.com/RTEMS/rtems/blob/master/cpukit/include/rtems/posix/mqueue.h#L57</a>)<br>
<br>
Then every time the created queue is accessed we would use the mode<br>
bits to check if the accessor is allowed to access the queue.<br></blockquote></div></div><div dir="auto"><br></div><div dir="auto">POSIX mqs are specified to have file like attributes but do not have to be filesystem objects. In RTEMS, they are not.</div><div dir="auto"><br></div><div dir="auto">That only leaves two places to add this. The score and the POSIX control structure for mqs. I'm prone to agree with you that this is POSIX specific and requires the mq descriptors. </div><div dir="auto"><br></div><div dir="auto">But please make sure this even makes sense inside a single process. In a full POSIX system there can be multiple processes accessing the mq and the mode may make sense in that use case.</div><div dir="auto"><br></div><div dir="auto">It may require our capability to set a different per process environment for a thread to get different user and group IDs for testing.</div><div dir="auto"><br></div><div dir="auto">Just thinking in terms of when an access gets rejected, what were the ownership, gid and uid for the mq versus the accessing attempt.</div><div dir="auto"><br></div><div dir="auto"><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
Please share your thoughts on solving this.<br>
_______________________________________________<br>
devel mailing list<br>
<a href="mailto:devel@rtems.org" target="_blank" rel="noreferrer">devel@rtems.org</a><br>
<a href="http://lists.rtems.org/mailman/listinfo/devel" rel="noreferrer noreferrer" target="_blank">http://lists.rtems.org/mailman/listinfo/devel</a><br>
</blockquote></div></div></div>