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 <[EMAIL PROTECTED]>
---
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
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general




_______________________________________________
general mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to