Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Use strtol instead of sscanf+sprintf for parsing and error checking.
authorArnaud Giersch <arnaud.giersch@iut-bm.univ-fcomte.fr>
Wed, 6 Jul 2011 11:55:21 +0000 (13:55 +0200)
committerArnaud Giersch <arnaud.giersch@iut-bm.univ-fcomte.fr>
Mon, 18 Jul 2011 13:00:17 +0000 (15:00 +0200)
src/xbt/backtrace_linux.c

index 1892aa1..e57e486 100644 (file)
@@ -185,10 +185,8 @@ void xbt_ex_setup_backtrace(xbt_ex_t * e)
       maps_name = bprintf("/proc/%d/maps", (int) getpid());
       maps = fopen(maps_name, "r");
 
-      sscanf(addrs[i], "%lx", &addr);
-      sprintf(maps_buff, "%#lx", addr);
-
-      if (strcmp(addrs[i], maps_buff)) {
+      addr = strtol(addrs[i], &p, 16);
+      if (*p != '\0') {
         XBT_CRITICAL("Cannot parse backtrace address '%s' (addr=%#lx)",
                   addrs[i], addr);
       }