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