snprintf() can return the value larger than provided buffer size - check
is needed.

Signed-off-by: Sasha Khapyorsky <[EMAIL PROTECTED]>
---
 infiniband-diags/src/ibroute.c   |    6 +++++-
 infiniband-diags/src/ibsysstat.c |    2 ++
 2 files changed, 7 insertions(+), 1 deletions(-)

diff --git a/infiniband-diags/src/ibroute.c b/infiniband-diags/src/ibroute.c
index 3a6907b..9f32b39 100644
--- a/infiniband-diags/src/ibroute.c
+++ b/infiniband-diags/src/ibroute.c
@@ -108,7 +108,11 @@ dump_mlid(char *str, int strlen, int mlid, int nports,
                        mask = ntohs(mft[i][mlid%IB_MLIDS_IN_BLOCK]);
                        if (mask)
                                nonzero++;
-                       n += snprintf(str + n, strlen -n, "%04hx", mask);
+                       n += snprintf(str + n, strlen - n, "%04hx", mask);
+                       if (n >= strlen) {
+                               n = strlen;
+                               break;
+                       }
                }
                if (!nonzero && !dump_all) {
                        str[0] = 0;
diff --git a/infiniband-diags/src/ibsysstat.c b/infiniband-diags/src/ibsysstat.c
index 8e00baf..2418c9e 100644
--- a/infiniband-diags/src/ibsysstat.c
+++ b/infiniband-diags/src/ibsysstat.c
@@ -100,6 +100,8 @@ mk_reply(int attr, void *data, int sz)
                for (i = 0; i < host_ncpu && sz > 0; i++) {
                        n = snprintf(s, sz, "cpu %d: model %s MHZ %s\n",
                                     i, cpus[i].model, cpus[i].mhz);
+                       if (n >= sz)
+                               break;
                        sz -= n;
                        s += n;
                }
-- 
1.5.5.1.178.g1f811

_______________________________________________
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