return 0;
}
-/* Returns current time as string. */
+/* Returns time as string. If the the `timeval' is non-zero that
+ value is returned as string. If it is zero the current time of the
+ local machine is returned. */
-char *silc_get_time()
+const char *silc_get_time(SilcUInt32 timeval)
{
time_t curtime;
char *return_time;
- curtime = time(NULL);
+ if (!timeval)
+ curtime = time(NULL);
+ else
+ curtime = (time_t)timeval;
return_time = ctime(&curtime);
return_time[strlen(return_time) - 1] = '\0';
- return return_time;
+ return (const char *)return_time;
}
/* Converts string to capital characters. */
if (mode & SILC_CHANNEL_MODE_SILENCE_OPERS)
strncat(string, "M", 1);
- if (mode & SILC_CHANNEL_MODE_CIPHER)
- strncat(string, cipher, strlen(cipher));
+ if (mode & SILC_CHANNEL_MODE_CIPHER) {
+ if (strlen(cipher) + strlen(string) < sizeof(string))
+ strncat(string, cipher, strlen(cipher));
+ }
- if (mode & SILC_CHANNEL_MODE_HMAC)
- strncat(string, hmac, strlen(hmac));
+ if (mode & SILC_CHANNEL_MODE_HMAC) {
+ if (strlen(hmac) + strlen(string) < sizeof(string))
+ strncat(string, hmac, strlen(hmac));
+ }
/* Rest of mode is ignored */
char *silc_client_chumode(SilcUInt32 mode)
{
- char string[4];
+ char string[64];
if (!mode)
return NULL;
char *silc_client_chumode_char(SilcUInt32 mode)
{
- char string[4];
+ char string[64];
if (!mode)
return NULL;