[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