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

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


Hal Rosenstock wrote:
> 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.

Right, I saw it after answering your prev. mail.
Anyway, I'll issue an incremental patch later.

Thanks.

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