lkml.org 
[lkml]   [2022]   [Aug]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.15 506/779] RDMA/rtrs: Do not allow sessname to contain special symbols / and .
    Date
    From: Md Haris Iqbal <haris.iqbal@ionos.com>

    [ Upstream commit dea7bb3ad3e08f96815330f88a62c24d7a9dacae ]

    Allowing these characters in sessname can lead to unexpected results,
    particularly because / is used as a separator between files in a path, and
    . points to the current directory.

    Link: https://lore.kernel.org/r/20210922125333.351454-7-haris.iqbal@ionos.com
    Signed-off-by: Md Haris Iqbal <haris.iqbal@ionos.com>
    Reviewed-by: Gioh Kim <gi-oh.kim@ionos.com>
    Reviewed-by: Aleksei Marov <aleksei.marov@ionos.com>
    Signed-off-by: Jason Gunthorpe <jgg@nvidia.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/infiniband/ulp/rtrs/rtrs-clt.c | 6 ++++++
    drivers/infiniband/ulp/rtrs/rtrs-srv.c | 5 +++++
    2 files changed, 11 insertions(+)

    diff --git a/drivers/infiniband/ulp/rtrs/rtrs-clt.c b/drivers/infiniband/ulp/rtrs/rtrs-clt.c
    index a23438bacf12..be96701cf281 100644
    --- a/drivers/infiniband/ulp/rtrs/rtrs-clt.c
    +++ b/drivers/infiniband/ulp/rtrs/rtrs-clt.c
    @@ -2790,6 +2790,12 @@ struct rtrs_clt *rtrs_clt_open(struct rtrs_clt_ops *ops,
    struct rtrs_clt *clt;
    int err, i;

    + if (strchr(sessname, '/') || strchr(sessname, '.')) {
    + pr_err("sessname cannot contain / and .\n");
    + err = -EINVAL;
    + goto out;
    + }
    +
    clt = alloc_clt(sessname, paths_num, port, pdu_sz, ops->priv,
    ops->link_ev,
    reconnect_delay_sec,
    diff --git a/drivers/infiniband/ulp/rtrs/rtrs-srv.c b/drivers/infiniband/ulp/rtrs/rtrs-srv.c
    index 078a1cbac90c..7df71f8cf149 100644
    --- a/drivers/infiniband/ulp/rtrs/rtrs-srv.c
    +++ b/drivers/infiniband/ulp/rtrs/rtrs-srv.c
    @@ -803,6 +803,11 @@ static int process_info_req(struct rtrs_srv_con *con,
    return err;
    }

    + if (strchr(msg->sessname, '/') || strchr(msg->sessname, '.')) {
    + rtrs_err(s, "sessname cannot contain / and .\n");
    + return -EINVAL;
    + }
    +
    if (exist_sessname(sess->srv->ctx,
    msg->sessname, &sess->srv->paths_uuid)) {
    rtrs_err(s, "sessname is duplicated: %s\n", msg->sessname);
    --
    2.35.1


    \
     
     \ /
      Last update: 2022-08-15 21:23    [W:4.793 / U:0.040 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site