{
DICT_VALUE *v;
char buf[1024];
- const char *a;
+ const char *a = NULL;
+ size_t len;
time_t t;
struct tm s_tm;
- out[0] = 0;
+ out[0] = '\0';
if (!vp) return 0;
switch (vp->type) {
case PW_TYPE_DATE:
t = vp->lvalue;
if (delimitst) {
- strftime(buf, sizeof(buf), "\"%b %e %Y %H:%M:%S %Z\"",
- localtime_r(&t, &s_tm));
+ len = strftime(buf, sizeof(buf), "\"%b %e %Y %H:%M:%S %Z\"",
+ localtime_r(&t, &s_tm));
} else {
- strftime(buf, sizeof(buf), "%b %e %Y %H:%M:%S %Z",
- localtime_r(&t, &s_tm));
+ len = strftime(buf, sizeof(buf), "%b %e %Y %H:%M:%S %Z",
+ localtime_r(&t, &s_tm));
}
- a = buf;
+ if (len > 0) a = buf;
break;
case PW_TYPE_IPADDR:
a = inet_ntop(AF_INET, &(vp->lvalue),
a = inet_ntop(AF_INET6, &addr, buf, sizeof(buf));
if (a) {
char *p = buf + strlen(buf);
-
sprintf(p, "/%u", (unsigned int) vp->vp_strvalue[1]);
}
}
break;
default:
- a = 0;
+ a = "UNKNOWN-TYPE";
break;
}
- strNcpy(out, a?a:"UNKNOWN-TYPE", outlen);
+
+ if (a != NULL) strlcpy(out, a, outlen);
return strlen(out);
}
static int find_next_reset(rlm_counter_t *data, time_t timeval)
{
- int ret=0;
- unsigned int num=1;
- char last = 0;
+ int ret = 0;
+ size_t len;
+ unsigned int num = 1;
+ char last = '\0';
struct tm *tm, s_tm;
char sCurrentTime[40], sNextTime[40];
tm = localtime_r(&timeval, &s_tm);
- strftime(sCurrentTime, sizeof(sCurrentTime),"%Y-%m-%d %H:%M:%S",tm);
+ len = strftime(sCurrentTime, sizeof(sCurrentTime), "%Y-%m-%d %H:%M:%S", tm);
+ if (len == 0) *sCurrentTime = '\0';
tm->tm_sec = tm->tm_min = 0;
if (data->reset == NULL)
return -1;
if (isdigit((int) data->reset[0])){
- unsigned int len=0;
-
len = strlen(data->reset);
if (len == 0)
return -1;
data->reset);
return -1;
}
- strftime(sNextTime, sizeof(sNextTime),"%Y-%m-%d %H:%M:%S",tm);
- DEBUG2("rlm_counter: Current Time: %d [%s], Next reset %d [%s]",
- (int)timeval,sCurrentTime,(int)data->reset_time,sNextTime);
+
+ len = strftime(sNextTime, sizeof(sNextTime), "%Y-%m-%d %H:%M:%S", tm);
+ if (len == 0) *sNextTime = '\0';
+ DEBUG2("rlm_counter: Current Time: %li [%s], Next reset %li [%s]",
+ timeval, sCurrentTime, data->reset_time, sNextTime);
return ret;
}
static int find_next_reset(rlm_sqlcounter_t *data, time_t timeval)
{
- int ret=0;
- unsigned int num=1;
- char last = 0;
+ int ret = 0;
+ size_t len;
+ unsigned int num = 1;
+ char last = '\0';
struct tm *tm, s_tm;
char sCurrentTime[40], sNextTime[40];
tm = localtime_r(&timeval, &s_tm);
- strftime(sCurrentTime, sizeof(sCurrentTime),"%Y-%m-%d %H:%M:%S",tm);
+ len = strftime(sCurrentTime, sizeof(sCurrentTime), "%Y-%m-%d %H:%M:%S", tm);
+ if (len == 0) *sCurrentTime = '\0';
tm->tm_sec = tm->tm_min = 0;
if (data->reset == NULL)
return -1;
if (isdigit((int) data->reset[0])){
- unsigned int len=0;
-
len = strlen(data->reset);
if (len == 0)
return -1;
data->reset);
return -1;
}
- strftime(sNextTime, sizeof(sNextTime),"%Y-%m-%d %H:%M:%S",tm);
- DEBUG2("rlm_sqlcounter: Current Time: %d [%s], Next reset %d [%s]",
- (int)timeval,sCurrentTime,(int)data->reset_time, sNextTime);
+
+ len = strftime(sNextTime, sizeof(sNextTime),"%Y-%m-%d %H:%M:%S",tm);
+ if (len == 0) *sNextTime = '\0';
+ DEBUG2("rlm_sqlcounter: Current Time: %li [%s], Next reset %li [%s]",
+ timeval, sCurrentTime, data->reset_time, sNextTime);
return ret;
}
static int find_prev_reset(rlm_sqlcounter_t *data, time_t timeval)
{
- int ret=0;
- unsigned int num=1;
- char last = 0;
+ int ret = 0;
+ size_t len;
+ unsigned int num = 1;
+ char last = '\0';
struct tm *tm, s_tm;
char sCurrentTime[40], sPrevTime[40];
tm = localtime_r(&timeval, &s_tm);
- strftime(sCurrentTime, sizeof(sCurrentTime),"%Y-%m-%d %H:%M:%S",tm);
+ len = strftime(sCurrentTime, sizeof(sCurrentTime), "%Y-%m-%d %H:%M:%S", tm);
+ if (len == 0) *sCurrentTime = '\0';
tm->tm_sec = tm->tm_min = 0;
if (data->reset == NULL)
return -1;
if (isdigit((int) data->reset[0])){
- unsigned int len=0;
-
len = strlen(data->reset);
if (len == 0)
return -1;
data->reset);
return -1;
}
- strftime(sPrevTime, sizeof(sPrevTime),"%Y-%m-%d %H:%M:%S",tm);
- DEBUG2("rlm_sqlcounter: Current Time: %d [%s], Prev reset %d [%s]",
- (int)timeval,sCurrentTime,(int)data->last_reset, sPrevTime);
+ len = strftime(sPrevTime, sizeof(sPrevTime), "%Y-%m-%d %H:%M:%S", tm);
+ if (len == 0) *sPrevTime = '\0';
+ DEBUG2("rlm_sqlcounter: Current Time: %li [%s], Prev reset %li [%s]",
+ timeval, sCurrentTime, data->last_reset, sPrevTime);
return ret;
}