if (logfile == NULL)
return GNUNET_OK;
fn = GNUNET_STRINGS_filename_expand (logfile);
+ if (NULL == fn)
+ return GNUNET_SYSERR;
dirwarn = (GNUNET_OK != GNUNET_DISK_directory_create_for_file (fn));
altlog = FOPEN (fn, "a");
if (altlog == NULL)
time (&timetmp);
memset (date, 0, DATE_STR_SIZE);
tmptr = localtime (&timetmp);
- strftime (date, DATE_STR_SIZE, "%b %d %H:%M:%S", tmptr);
+ if (NULL != tmptr)
+ strftime (date, DATE_STR_SIZE, "%b %d %H:%M:%S", tmptr);
+ else
+ strcpy (date, "localtime error");
if ((0 != (kind & GNUNET_ERROR_TYPE_BULK)) &&
(last_bulk_time.value != 0) &&
(0 == strncmp (buf, last_bulk, sizeof (last_bulk))))
switch (addr->sa_family)
{
case AF_INET:
+ if (addrlen != sizeof (struct sockaddr_in))
+ return "<invalid v4 address>";
v4 = (const struct sockaddr_in *) addr;
inet_ntop (AF_INET, &v4->sin_addr, buf, INET_ADDRSTRLEN);
if (0 == ntohs (v4->sin_port))
return buf;
strcat (buf, ":");
- sprintf (b2, "%u", ntohs (v4->sin_port));
+ GNUNET_snprintf (b2, sizeof(b2), "%u", ntohs (v4->sin_port));
strcat (buf, b2);
return buf;
case AF_INET6:
+ if (addrlen != sizeof (struct sockaddr_in6))
+ return "<invalid v4 address>";
v6 = (const struct sockaddr_in6 *) addr;
buf[0] = '[';
inet_ntop (AF_INET6, &v6->sin6_addr, &buf[1], INET6_ADDRSTRLEN);
if (0 == ntohs (v6->sin6_port))
return &buf[1];
strcat (buf, "]:");
- sprintf (b2, "%u", ntohs (v6->sin6_port));
+ GNUNET_snprintf (b2, sizeof(b2), "%u", ntohs (v6->sin6_port));
strcat (buf, b2);
return buf;
case AF_UNIX:
+ if (addrlen <= sizeof (sa_family_t))
+ return "<invalid UNIX address>";
un = (const struct sockaddr_un*) addr;
off = 0;
if (un->sun_path[0] == '\0') off++;