aboutsummaryrefslogtreecommitdiff
path: root/src/util
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2011-10-11 11:18:45 +0000
committerChristian Grothoff <christian@grothoff.org>2011-10-11 11:18:45 +0000
commit618488e70f1d726cd6fc40c86ca627a4d7610d3a (patch)
treec5ac5ad0a9fd598e6aa66759c4e290f3ddb265b0 /src/util
parentb9be46016b86767ba9fc22609a705bd7dd0b89e8 (diff)
downloadgnunet-618488e70f1d726cd6fc40c86ca627a4d7610d3a.tar.gz
gnunet-618488e70f1d726cd6fc40c86ca627a4d7610d3a.zip
check vspnrintf return value, stack-allocate log buffer
Diffstat (limited to 'src/util')
-rw-r--r--src/util/common_logging.c87
1 files changed, 43 insertions, 44 deletions
diff --git a/src/util/common_logging.c b/src/util/common_logging.c
index fd32036d0..e7818e0f4 100644
--- a/src/util/common_logging.c
+++ b/src/util/common_logging.c
@@ -719,58 +719,57 @@ mylog (enum GNUNET_ErrorType kind, const char *comp, const char *message,
719 struct timeval timeofday; 719 struct timeval timeofday;
720 struct tm *tmptr; 720 struct tm *tmptr;
721 size_t size; 721 size_t size;
722 char *buf;
723 va_list vacp; 722 va_list vacp;
724 723
725 va_copy (vacp, va); 724 va_copy (vacp, va);
726 size = VSNPRINTF (NULL, 0, message, vacp) + 1; 725 size = VSNPRINTF (NULL, 0, message, vacp) + 1;
726 GNUNET_assert (0 != size);
727 va_end (vacp); 727 va_end (vacp);
728 buf = malloc (size); 728 {
729 if (buf == NULL) 729 char buf[size];
730 return; /* oops */ 730
731 VSNPRINTF (buf, size, message, va); 731 VSNPRINTF (buf, size, message, va);
732 time (&timetmp); 732 time (&timetmp);
733 memset (date, 0, DATE_STR_SIZE); 733 memset (date, 0, DATE_STR_SIZE);
734 tmptr = localtime (&timetmp); 734 tmptr = localtime (&timetmp);
735 gettimeofday (&timeofday, NULL); 735 gettimeofday (&timeofday, NULL);
736 if (NULL != tmptr) 736 if (NULL != tmptr)
737 { 737 {
738#ifdef WINDOWS 738#ifdef WINDOWS
739 LARGE_INTEGER pc; 739 LARGE_INTEGER pc;
740 740
741 pc.QuadPart = 0; 741 pc.QuadPart = 0;
742 QueryPerformanceCounter (&pc); 742 QueryPerformanceCounter (&pc);
743 strftime (date2, DATE_STR_SIZE, "%b %d %H:%M:%S-%%020llu", tmptr); 743 strftime (date2, DATE_STR_SIZE, "%b %d %H:%M:%S-%%020llu", tmptr);
744 snprintf (date, sizeof (date), date2, 744 snprintf (date, sizeof (date), date2,
745 (long long) (pc.QuadPart / 745 (long long) (pc.QuadPart /
746 (performance_frequency.QuadPart / 1000))); 746 (performance_frequency.QuadPart / 1000)));
747#else 747#else
748 strftime (date2, DATE_STR_SIZE, "%b %d %H:%M:%S-%%06u", tmptr); 748 strftime (date2, DATE_STR_SIZE, "%b %d %H:%M:%S-%%06u", tmptr);
749 snprintf (date, sizeof (date), date2, timeofday.tv_usec); 749 snprintf (date, sizeof (date), date2, timeofday.tv_usec);
750#endif 750#endif
751 } 751 }
752 else 752 else
753 strcpy (date, "localtime error"); 753 strcpy (date, "localtime error");
754 if ((0 != (kind & GNUNET_ERROR_TYPE_BULK)) 754 if ((0 != (kind & GNUNET_ERROR_TYPE_BULK))
755 && (last_bulk_time.abs_value != 0) 755 && (last_bulk_time.abs_value != 0)
756 && (0 == strncmp (buf, last_bulk, sizeof (last_bulk)))) 756 && (0 == strncmp (buf, last_bulk, sizeof (last_bulk))))
757 { 757 {
758 last_bulk_repeat++; 758 last_bulk_repeat++;
759 if ((GNUNET_TIME_absolute_get_duration (last_bulk_time).rel_value > 759 if ((GNUNET_TIME_absolute_get_duration (last_bulk_time).rel_value >
760 BULK_DELAY_THRESHOLD) 760 BULK_DELAY_THRESHOLD)
761 || (last_bulk_repeat > BULK_REPEAT_THRESHOLD)) 761 || (last_bulk_repeat > BULK_REPEAT_THRESHOLD))
762 flush_bulk (date); 762 flush_bulk (date);
763 free (buf); 763 return;
764 return; 764 }
765 } 765 flush_bulk (date);
766 flush_bulk (date); 766 strncpy (last_bulk, buf, sizeof (last_bulk));
767 strncpy (last_bulk, buf, sizeof (last_bulk)); 767 last_bulk_repeat = 0;
768 last_bulk_repeat = 0; 768 last_bulk_kind = kind;
769 last_bulk_kind = kind; 769 last_bulk_time = GNUNET_TIME_absolute_get ();
770 last_bulk_time = GNUNET_TIME_absolute_get (); 770 strncpy (last_bulk_comp, comp, COMP_TRACK_SIZE);
771 strncpy (last_bulk_comp, comp, COMP_TRACK_SIZE); 771 output_message (kind, comp, date, buf);
772 output_message (kind, comp, date, buf); 772 }
773 free (buf);
774} 773}
775 774
776 775