diff --git a/minix/kernel/mqueue.c b/minix/kernel/mqueue.c index 4b8e050d2..748029837 100644 --- a/minix/kernel/mqueue.c +++ b/minix/kernel/mqueue.c @@ -80,7 +80,7 @@ int mq_open(const char *name, int oflag) for (int i = 0; i < number_of_queues; i++) if (mq.queue_slot_empty[i] == NOT_EMPTY) - if (strcmp(mq.msg[i].name, name) == 0) { + if (strncmp(mq.msg[i].name, name, NAME_SIZE) == 0) { mq.msg[i].num_users++; return (mqd_t) i; } @@ -91,6 +91,7 @@ int mq_open(const char *name, int oflag) mq.queue_slot_empty[i] = NOT_EMPTY; mq.num_queues++; mq.msg[i].num_users++; + memset(mq.msg[i].name, '\0', NAME_SIZE); strncpy(mq.msg[i].name, name, strlen(name)); for (int j = 0; j < number_of_messages; j++) {