fix: 队列相关的API实现中,参数的校验不完全,导致程序异常
Signed-off-by: Lyb <1576988680@qq.com>
This commit is contained in:
parent
ca6801dce8
commit
eef7c80a72
|
@ -317,6 +317,11 @@ int mq_close(mqd_t personal)
|
||||||
struct mqpersonal *privateMqPersonal = NULL;
|
struct mqpersonal *privateMqPersonal = NULL;
|
||||||
struct mqpersonal *tmp = NULL;
|
struct mqpersonal *tmp = NULL;
|
||||||
|
|
||||||
|
if ((personal == (mqd_t)NULL) || (personal == (mqd_t)-1)) {
|
||||||
|
errno = EBADF;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
(VOID)pthread_mutex_lock(&g_mqueueMutex);
|
(VOID)pthread_mutex_lock(&g_mqueueMutex);
|
||||||
privateMqPersonal = (struct mqpersonal *)personal;
|
privateMqPersonal = (struct mqpersonal *)personal;
|
||||||
if (privateMqPersonal->mq_status != MQ_USE_MAGIC) {
|
if (privateMqPersonal->mq_status != MQ_USE_MAGIC) {
|
||||||
|
@ -430,11 +435,23 @@ int mq_getsetattr(mqd_t mqd, const struct mq_attr *new, struct mq_attr *old)
|
||||||
|
|
||||||
int mq_getattr(mqd_t mqd, struct mq_attr *attr)
|
int mq_getattr(mqd_t mqd, struct mq_attr *attr)
|
||||||
{
|
{
|
||||||
|
if ((mqd == (mqd_t)NULL) || (mqd == (mqd_t)-1)) {
|
||||||
|
errno = EBADF;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
return mq_getsetattr(mqd, 0, attr);
|
return mq_getsetattr(mqd, 0, attr);
|
||||||
}
|
}
|
||||||
|
|
||||||
int mq_setattr(mqd_t mqd, const struct mq_attr *new, struct mq_attr *old)
|
int mq_setattr(mqd_t mqd, const struct mq_attr *new, struct mq_attr *old)
|
||||||
{
|
{
|
||||||
|
if ((mqd == (mqd_t)NULL) || (mqd == (mqd_t)-1)) {
|
||||||
|
errno = EBADF;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
if (new == NULL) {
|
||||||
|
errno = EINVAL;
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
return mq_getsetattr(mqd, new, old);
|
return mq_getsetattr(mqd, new, old);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -491,7 +508,10 @@ STATIC INT32 ConvertTimeout(long flags, const struct timespec *absTimeout, UINT6
|
||||||
|
|
||||||
STATIC INLINE BOOL MqParamCheck(mqd_t personal, const char *msg, size_t msgLen)
|
STATIC INLINE BOOL MqParamCheck(mqd_t personal, const char *msg, size_t msgLen)
|
||||||
{
|
{
|
||||||
(void)personal;
|
if ((personal == (mqd_t)NULL) || (personal == (mqd_t)-1)) {
|
||||||
|
errno = EBADF;
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
if ((msg == NULL) || (msgLen == 0)) {
|
if ((msg == NULL) || (msgLen == 0)) {
|
||||||
errno = EINVAL;
|
errno = EINVAL;
|
||||||
return FALSE;
|
return FALSE;
|
||||||
|
|
Loading…
Reference in New Issue