diff options
author | Christian Grothoff <christian@grothoff.org> | 2011-10-11 11:18:45 +0000 |
---|---|---|
committer | Christian Grothoff <christian@grothoff.org> | 2011-10-11 11:18:45 +0000 |
commit | 618488e70f1d726cd6fc40c86ca627a4d7610d3a (patch) | |
tree | c5ac5ad0a9fd598e6aa66759c4e290f3ddb265b0 /src/util | |
parent | b9be46016b86767ba9fc22609a705bd7dd0b89e8 (diff) | |
download | gnunet-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.c | 87 |
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 | ||