From patchwork Fri Apr 15 22:19:22 2011 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ira Weiny X-Patchwork-Id: 711721 X-Patchwork-Delegate: alexne@voltaire.com Received: from vger.kernel.org (vger.kernel.org [209.132.180.67]) by demeter1.kernel.org (8.14.4/8.14.3) with ESMTP id p3FME748009615 for ; Fri, 15 Apr 2011 22:14:07 GMT Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1757441Ab1DOWNx (ORCPT ); Fri, 15 Apr 2011 18:13:53 -0400 Received: from nspiron-3.llnl.gov ([128.115.41.83]:54342 "EHLO smtp.llnl.gov" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1757159Ab1DOWNw (ORCPT ); Fri, 15 Apr 2011 18:13:52 -0400 X-Attachments: None Received: from eris.llnl.gov (HELO trebuchet.chaos) ([134.9.2.84]) by smtp.llnl.gov with SMTP; 15 Apr 2011 15:13:52 -0700 Date: Fri, 15 Apr 2011 15:19:22 -0700 From: Ira Weiny To: "linux-rdma@vger.kernel.org" Cc: Alex Netes Subject: [PATCH] opensm: fix strtoull error handling Message-Id: <20110415151922.cd760149.weiny2@llnl.gov> X-Mailer: Sylpheed 3.0.3 (GTK+ 2.10.4; x86_64-unknown-linux-gnu) Mime-Version: 1.0 Sender: linux-rdma-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-rdma@vger.kernel.org X-Greylist: IP, sender and recipient auto-whitelisted, not delayed by milter-greylist-4.2.6 (demeter1.kernel.org [140.211.167.41]); Fri, 15 Apr 2011 22:14:07 +0000 (UTC) Subject: [PATCH] opensm: fix strtoull error handling The man page states that errno _may_ be returned when the string can not be converted. Check that the entire string was consumed otherwise assume this is not a guid. Signed-off-by: Ira Weiny --- opensm/osm_perfmgr.c | 5 +++-- 1 files changed, 3 insertions(+), 2 deletions(-) diff --git a/opensm/osm_perfmgr.c b/opensm/osm_perfmgr.c index 3e1575a..1cbbb71 100644 --- a/opensm/osm_perfmgr.c +++ b/opensm/osm_perfmgr.c @@ -1419,8 +1419,9 @@ void osm_perfmgr_dump_counters(osm_perfmgr_t * pm, perfmgr_db_dump_t dump_type) *******************************************************************/ void osm_perfmgr_print_counters(osm_perfmgr_t * pm, char *nodename, FILE * fp) { - uint64_t guid = strtoull(nodename, NULL, 0); - if (guid == 0 && errno) + char *end = NULL; + uint64_t guid = strtoull(nodename, &end, 0); + if (nodename + strlen(nodename) != end) perfmgr_db_print_by_name(pm->db, nodename, fp); else perfmgr_db_print_by_guid(pm->db, guid, fp);