[ofa-general] [PATCH] osm: ignore line with invalid guid in guid2lid file

Hal Rosenstock halr at voltaire.com
Tue Apr 24 15:13:28 PDT 2007


On Tue, 2007-04-24 at 18:08, Yevgeny Kliteynik wrote:
> Hal Rosenstock wrote:
> > On Wed, 2007-04-18 at 02:05, Yevgeny Kliteynik wrote:
> >> Sasha Khapyorsky wrote:
> >>> On 17:43 Tue 17 Apr     , Yevgeny Kliteynik wrote:
> >>>> Hi Hal,
> >>>>
> >>>> When parsing guid2lid file, invalid guid string
> >>>> ended up unpacked as guid 0x0. Ignoring line with
> >>>> invalid guid string.
> >>>>
> >>>> This bug doesn't look too important - don't think
> >>>> that it should go to ofed_1_2. Anyway, your call.
> >>> It looks like a safe change for me.
> >>>
> >>> BTW any reason to use strtouq() instead of more popular (IMHO) strtoul()
> >>> or strtoull()?
> >> No particular reason.
> >> It specifically says that the function "convert string to an unsigned 
> >> 64-bit integer" instead of unsigned long or unsigned long long, but
> >> on the other hand it doesn't matter, because uint64_t is a typedef anyway.
> >> If you have special sentiments about strtoul/strtoull - feel free to change it.
> > 
> > Is strtouq supported in Windows ?
> 
> Good point.
> I didn't see strtouq mentioned in MSDN - it has __strtoui64 that does the same job.
> I don't have the Windows machine to try and compile strtouq right now, but I think
> that we should stick to strtoul as Sasha has suggested - I found it in the MSDN, so
> it would work for sure.
> 
> Hal,
> Can you change it as you apply the patch, or do you want me to issue a new one?

I've already applied it so the best thing would be an incremental patch
from using strtouq to strtoul or strtoull.

Thanks.

-- Hal


> -- Yevgeny
>  
> > -- Hal
> > 
> >> -- Yevgeny
> >>
> >>
> >>> Sasha
> >>>
> >>>> -- Yevgeny
> >>>>
> >>>> Signed-off-by: Yevgeny Kliteynik <kliteyn at dev.mellanox.co.il>
> >>>> ---
> >>>> osm/opensm/osm_db_files.c |   15 ++++++++++++---
> >>>> 1 files changed, 12 insertions(+), 3 deletions(-)
> >>>>
> >>>> diff --git a/osm/opensm/osm_db_files.c b/osm/opensm/osm_db_files.c
> >>>> index dbadd68..23eaa0b 100644
> >>>> --- a/osm/opensm/osm_db_files.c
> >>>> +++ b/osm/opensm/osm_db_files.c
> >>>> @@ -294,6 +294,7 @@ osm_db_restore(
> >>>>   char                *p_first_word, *p_rest_of_line, *p_last;
> >>>>   char                *p_key = NULL;
> >>>>   char                *p_prev_val, *p_accum_val = NULL;
> >>>> +  char                *endptr = NULL;
> >>>>   unsigned int         line_num;
> >>>>
> >>>>   OSM_LOG_ENTER( p_log, osm_db_restore );
> >>>> @@ -415,12 +416,20 @@ osm_db_restore(
> >>>>           p_prev_val = NULL;
> >>>>         }
> >>>>
> >>>> -        /* store our key and value */
> >>>> -        st_insert(p_domain_imp->p_hash,
> >>>> -                  (st_data_t)p_key, (st_data_t)p_accum_val);
> >>>>         osm_log( p_log, OSM_LOG_DEBUG,
> >>>>                  "osm_db_restore: "
> >>>>                  "Got key:%s value:%s\n", p_key, p_accum_val);
> >>>> +
> >>>> +        /* check that the key is a number */
> >>>> +        if (!strtouq(p_key,&endptr,0) && *endptr != '\0')
> >>>> +          osm_log( p_log, OSM_LOG_ERROR,
> >>>> +                   "osm_db_restore: ERR 610B: "
> >>>> +                   "Key:%s is invalid\n",
> >>>> +                   p_key);
> >>>> +        else
> >>>> +          /* store our key and value */
> >>>> +          st_insert(p_domain_imp->p_hash,
> >>>> +                    (st_data_t)p_key, (st_data_t)p_accum_val);
> >>>>       }
> >>>>       else
> >>>>       {
> >>>> -- 
> >>>> 1.4.4.1.GIT
> >>>>
> >>>>
> >>>> _______________________________________________
> >>>> general mailing list
> >>>> general at lists.openfabrics.org
> >>>> http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general
> >>>>
> >>>> To unsubscribe, please visit 
> >>>> http://openib.org/mailman/listinfo/openib-general
> > 
> > 
> 




More information about the general mailing list