Deleted Added
full compact
sysv_msg.c (172930) sysv_msg.c (192895)
1/*-
2 * Implementation of SVID messages
3 *
4 * Author: Daniel Boulet
5 *
6 * Copyright 1993 Daniel Boulet and RTMX Inc.
7 *
8 * This system call was implemented by Daniel Boulet under contract from RTMX.

--- 34 unchanged lines hidden (view full) ---

43 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
44 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
45 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
46 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
47 * SUCH DAMAGE.
48 */
49
50#include <sys/cdefs.h>
1/*-
2 * Implementation of SVID messages
3 *
4 * Author: Daniel Boulet
5 *
6 * Copyright 1993 Daniel Boulet and RTMX Inc.
7 *
8 * This system call was implemented by Daniel Boulet under contract from RTMX.

--- 34 unchanged lines hidden (view full) ---

43 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
44 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
45 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
46 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
47 * SUCH DAMAGE.
48 */
49
50#include <sys/cdefs.h>
51__FBSDID("$FreeBSD: head/sys/kern/sysv_msg.c 172930 2007-10-24 19:04:04Z rwatson $");
51__FBSDID("$FreeBSD: head/sys/kern/sysv_msg.c 192895 2009-05-27 14:11:23Z jamie $");
52
53#include "opt_sysvipc.h"
54#include "opt_mac.h"
55
56#include <sys/param.h>
57#include <sys/systm.h>
58#include <sys/sysproto.h>
59#include <sys/kernel.h>

--- 272 unchanged lines hidden (view full) ---

332 int a3;
333 int a4;
334 int a5;
335 int a6;
336 } */ *uap;
337{
338 int error;
339
52
53#include "opt_sysvipc.h"
54#include "opt_mac.h"
55
56#include <sys/param.h>
57#include <sys/systm.h>
58#include <sys/sysproto.h>
59#include <sys/kernel.h>

--- 272 unchanged lines hidden (view full) ---

332 int a3;
333 int a4;
334 int a5;
335 int a6;
336 } */ *uap;
337{
338 int error;
339
340 if (!jail_sysvipc_allowed && jailed(td->td_ucred))
340 if (!prison_allow(td->td_ucred, PR_ALLOW_SYSVIPC))
341 return (ENOSYS);
342 if (uap->which < 0 ||
343 uap->which >= sizeof(msgcalls)/sizeof(msgcalls[0]))
344 return (EINVAL);
345 error = (*msgcalls[uap->which])(td, &uap->a2);
346 return (error);
347}
348

--- 56 unchanged lines hidden (view full) ---

405 struct thread *td;
406 int msqid;
407 int cmd;
408 struct msqid_ds *msqbuf;
409{
410 int rval, error, msqix;
411 register struct msqid_kernel *msqkptr;
412
341 return (ENOSYS);
342 if (uap->which < 0 ||
343 uap->which >= sizeof(msgcalls)/sizeof(msgcalls[0]))
344 return (EINVAL);
345 error = (*msgcalls[uap->which])(td, &uap->a2);
346 return (error);
347}
348

--- 56 unchanged lines hidden (view full) ---

405 struct thread *td;
406 int msqid;
407 int cmd;
408 struct msqid_ds *msqbuf;
409{
410 int rval, error, msqix;
411 register struct msqid_kernel *msqkptr;
412
413 if (!jail_sysvipc_allowed && jailed(td->td_ucred))
413 if (!prison_allow(td->td_ucred, PR_ALLOW_SYSVIPC))
414 return (ENOSYS);
415
416 msqix = IPCID_TO_IX(msqid);
417
418 if (msqix < 0 || msqix >= msginfo.msgmni) {
419 DPRINTF(("msqid (%d) out of range (0<=msqid<%d)\n", msqix,
420 msginfo.msgmni));
421 return (EINVAL);

--- 137 unchanged lines hidden (view full) ---

559 int msqid, error = 0;
560 int key = uap->key;
561 int msgflg = uap->msgflg;
562 struct ucred *cred = td->td_ucred;
563 register struct msqid_kernel *msqkptr = NULL;
564
565 DPRINTF(("msgget(0x%x, 0%o)\n", key, msgflg));
566
414 return (ENOSYS);
415
416 msqix = IPCID_TO_IX(msqid);
417
418 if (msqix < 0 || msqix >= msginfo.msgmni) {
419 DPRINTF(("msqid (%d) out of range (0<=msqid<%d)\n", msqix,
420 msginfo.msgmni));
421 return (EINVAL);

--- 137 unchanged lines hidden (view full) ---

559 int msqid, error = 0;
560 int key = uap->key;
561 int msgflg = uap->msgflg;
562 struct ucred *cred = td->td_ucred;
563 register struct msqid_kernel *msqkptr = NULL;
564
565 DPRINTF(("msgget(0x%x, 0%o)\n", key, msgflg));
566
567 if (!jail_sysvipc_allowed && jailed(td->td_ucred))
567 if (!prison_allow(td->td_ucred, PR_ALLOW_SYSVIPC))
568 return (ENOSYS);
569
570 mtx_lock(&msq_mtx);
571 if (key != IPC_PRIVATE) {
572 for (msqid = 0; msqid < msginfo.msgmni; msqid++) {
573 msqkptr = &msqids[msqid];
574 if (msqkptr->u.msg_qbytes != 0 &&
575 msqkptr->u.msg_perm.key == key)

--- 93 unchanged lines hidden (view full) ---

669 int msgflg;
670 long mtype;
671{
672 int msqix, segs_needed, error = 0;
673 register struct msqid_kernel *msqkptr;
674 register struct msg *msghdr;
675 short next;
676
568 return (ENOSYS);
569
570 mtx_lock(&msq_mtx);
571 if (key != IPC_PRIVATE) {
572 for (msqid = 0; msqid < msginfo.msgmni; msqid++) {
573 msqkptr = &msqids[msqid];
574 if (msqkptr->u.msg_qbytes != 0 &&
575 msqkptr->u.msg_perm.key == key)

--- 93 unchanged lines hidden (view full) ---

669 int msgflg;
670 long mtype;
671{
672 int msqix, segs_needed, error = 0;
673 register struct msqid_kernel *msqkptr;
674 register struct msg *msghdr;
675 short next;
676
677 if (!jail_sysvipc_allowed && jailed(td->td_ucred))
677 if (!prison_allow(td->td_ucred, PR_ALLOW_SYSVIPC))
678 return (ENOSYS);
679
680 mtx_lock(&msq_mtx);
681 msqix = IPCID_TO_IX(msqid);
682
683 if (msqix < 0 || msqix >= msginfo.msgmni) {
684 DPRINTF(("msqid (%d) out of range (0<=msqid<%d)\n", msqix,
685 msginfo.msgmni));

--- 321 unchanged lines hidden (view full) ---

1007 long *mtype;
1008{
1009 size_t len;
1010 register struct msqid_kernel *msqkptr;
1011 register struct msg *msghdr;
1012 int msqix, error = 0;
1013 short next;
1014
678 return (ENOSYS);
679
680 mtx_lock(&msq_mtx);
681 msqix = IPCID_TO_IX(msqid);
682
683 if (msqix < 0 || msqix >= msginfo.msgmni) {
684 DPRINTF(("msqid (%d) out of range (0<=msqid<%d)\n", msqix,
685 msginfo.msgmni));

--- 321 unchanged lines hidden (view full) ---

1007 long *mtype;
1008{
1009 size_t len;
1010 register struct msqid_kernel *msqkptr;
1011 register struct msg *msghdr;
1012 int msqix, error = 0;
1013 short next;
1014
1015 if (!jail_sysvipc_allowed && jailed(td->td_ucred))
1015 if (!prison_allow(td->td_ucred, PR_ALLOW_SYSVIPC))
1016 return (ENOSYS);
1017
1018 msqix = IPCID_TO_IX(msqid);
1019
1020 if (msqix < 0 || msqix >= msginfo.msgmni) {
1021 DPRINTF(("msqid (%d) out of range (0<=msqid<%d)\n", msqix,
1022 msginfo.msgmni));
1023 return (EINVAL);

--- 270 unchanged lines hidden ---
1016 return (ENOSYS);
1017
1018 msqix = IPCID_TO_IX(msqid);
1019
1020 if (msqix < 0 || msqix >= msginfo.msgmni) {
1021 DPRINTF(("msqid (%d) out of range (0<=msqid<%d)\n", msqix,
1022 msginfo.msgmni));
1023 return (EINVAL);

--- 270 unchanged lines hidden ---