Michael S. Tsirkin wrote:
Quoting Yevgeny Kliteynik <[EMAIL PROTECTED]>:
Subject: [PATCH] osm: source and destination strings overlap when using 
sprintf()

Hi Hal,

Fixing a problematic usage of sprintf() in osm_helper.c:

When using sprintf(), source and destination strings should
not overlap, otherwise the function behavior is undefined.

Please apply to ofed_1_2 and to master.

Thanks.

-- Yevgeny

Signed-off-by: Yevgeny Kliteynik <[EMAIL PROTECTED]>
---
osm/opensm/osm_helper.c | 47 ++++++++++++++++++++++++++++++++++-------------
1 files changed, 34 insertions(+), 13 deletions(-)

.... skip ...
        
    for (i = 0; i < 32; i++)
-      sprintf( buf_line2,"%s 0x%01X |",
-               buf_line2, p_vla_tbl->vl_entry[i].weight);
+    {
+      sprintf( tmp_buf_line," 0x%01X |",
+               p_vla_tbl->vl_entry[i].weight);
+      strcat( buf_line2, tmp_buf_line );
+    }
    osm_log( p_log, log_level,
             "VlArb dump:\n"
             "\t\t\tport_guid...........0x%016" PRIx64 "\n"

These tmp-bufs are quite ugly, and bloat the code up.
Since you seem to do a strcat which does an anyway, how about, for example:

-      sprintf( buf_line1,"%s 0x%01x |",
-               buf_line1, p_vla_tbl->vl_entry[i].vl);
+      sprintf( buf_line1 + strlen(buf_line1)," 0x%01x |",
+               p_vla_tbl->vl_entry[i].vl);

and so on in all the other places?

Agree.
I'll send a new patch later.

-- Yevgeny


_______________________________________________
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