diff options
-rw-r--r-- | cryptodev_main.c | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/cryptodev_main.c b/cryptodev_main.c index f7a6d86..fa70b98 100644 --- a/cryptodev_main.c +++ b/cryptodev_main.c @@ -461,7 +461,9 @@ static int alg_bind(struct socket *sock, struct sockaddr *myaddr, struct alg_sock *ask; int res; - if (myaddr->sa_family != AF_ALG || sockaddr_len < sizeof(*addr)) + if (myaddr->sa_family != AF_ALG) + return -EAFNOSUPPORT; + if (sockaddr_len < sizeof(*addr)) return -EINVAL; addr = (struct sockaddr_alg *)myaddr; if (memchr(addr->salg_type, '\0', sizeof(addr->salg_type)) == NULL) @@ -473,7 +475,7 @@ static int alg_bind(struct socket *sock, struct sockaddr *myaddr, // FIXME: locking if (ask->addr.salg_type[0] != 0) - return -EINVAL; // FIXME: better error code for "already bound"? + return -EINVAL; // FIXME if (strncmp(addr->salg_type, "hash", sizeof(addr->salg_type)) != 0) @@ -529,6 +531,9 @@ static int alg_listen(struct socket *sock, int len) ask = alg_sk(sock->sk); DUMP_ASK(ask); + if (ask->addr.salg_type[0] == 0) + return -EDESTADDRREQ; + if (ask->num_slaves != 0) return -EINVAL; @@ -591,7 +596,7 @@ static int alg_sendmsg(struct kiocb *iocb, struct socket *sock, // FIXME: locking if (ask->addr.salg_type[0] == 0) - return -EINVAL; // FIXME: better error code for "not bound"? + return -ENOTCONN; return do_data_sendmsg(iocb, ask, 0, m, total_len); } @@ -607,7 +612,7 @@ static int alg_recvmsg(struct kiocb *iocb, struct socket *sock, // FIXME: locking if (ask->addr.salg_type[0] == 0) - return -EINVAL; // FIXME: better error code for "not bound"? + return -ENOTCONN; return do_data_recvmsg(iocb, ask, 0, m, total_len, flags); } |