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

Yevgeny Kliteynik kliteyn at dev.mellanox.co.il
Tue Apr 24 15:08:29 PDT 2007


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?

-- 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