Переглянути джерело

Check return of tor_snprintf

svn:r2616
Nick Mathewson 19 роки тому
батько
коміт
f8771625c6
1 змінених файлів з 6 додано та 5 видалено
  1. 6 5
      src/or/rephist.c

+ 6 - 5
src/or/rephist.c

@@ -237,6 +237,7 @@ void rep_hist_dump_stats(time_t now, int severity)
   double uptime;
   char buffer[2048];
   size_t len;
+  int r;
   unsigned long upt, downt;
   routerinfo_t *r;
 
@@ -279,14 +280,14 @@ void rep_hist_dump_stats(time_t now, int severity)
           name2 = "(unknown)";
 
         link_history = (link_history_t*) link_history_p;
-/* XXX009 tor_snprintf can return -1 for error also. need to detect. */
-        len += tor_snprintf(buffer+len, 2048-len, "%s(%ld/%ld); ", name2,
+        
+        r = tor_snprintf(buffer+len, 2048-len, "%s(%ld/%ld); ", name2,
                         link_history->n_extend_ok,
                         link_history->n_extend_ok+link_history->n_extend_fail);
-        if (len >= 2048) {
-          buffer[2047]='\0';
+        if (r<0)
           break;
-        }
+        else
+          len += r;
       }
       log(severity, "%s", buffer);
     }