Re: [PATCH] opensm/osm_slvl_map_rcv.c: verify port number values received from network

Hal Rosenstock
2009-12-30T16:09:47Z

On Tue, Dec 29, 2009 at 10:07 AM, Sasha Khapyorsky <sashak-smomgflXvOZWk0Htik3J/w@public.gmane.org> wrote:
>
> Verify that port number values received from network are in range and
> valid for access. Report error otherwise.

Won't this spam the OpenSM log ?

> Signed-off-by: Sasha Khapyorsky <sashak-smomgflXvOZWk0Htik3J/w@public.gmane.org>
> ---
>  opensm/opensm/osm_slvl_map_rcv.c |    9 +++++++++
>  1 files changed, 9 insertions(+), 0 deletions(-)
>
> diff --git a/opensm/opensm/osm_slvl_map_rcv.c b/opensm/opensm/osm_slvl_map_rcv.c
> index b35d867..6229db9 100644
> --- a/opensm/opensm/osm_slvl_map_rcv.c
> +++ b/opensm/opensm/osm_slvl_map_rcv.c
> @@ -104,8 +104,17 @@ void osm_slvl_rcv_process(IN void *context, IN void *p_data)
>
>        /* in case of a non switch node the attr modifier should be ignored */
>        if (osm_node_get_type(p_node) == IB_NODE_TYPE_SWITCH) {
> +               unsigned num_ports = osm_node_get_num_physp(p_node) - 1;
>                out_port_num = cl_ntoh32(p_smp->attr_mod) & 0xff;
>                in_port_num = (cl_ntoh32(p_smp->attr_mod) >> 8) & 0xff;
> +               if (in_port_num > num_ports || out_port_num > num_ports) {
> +                       OSM_LOG(sm->p_log, OSM_LOG_ERROR, "ERR 2C07"
> +                               "Invalid attribute modifier 0x%x reveived in"

^^^^^^^^

typo

-- Hal

> +                               " response from switch 0x%" PRIx64 "\n",
> +                               cl_ntoh32(p_smp->attr_mod),
> +                               cl_ntoh64(node_guid));
> +                       goto Exit;
> +               }
>                p_physp = osm_node_get_physp_ptr(p_node, out_port_num);
>        } else {
>                p_physp = p_port->p_physp;
> --
> 1.6.6.rc4
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
> the body of a message to majordomo-u79uwXL29TY76Z2rM5mHXA@public.gmane.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html