(krb5_vlog_msg): delay message formating till we know we need it
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@11399 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -382,24 +382,33 @@ krb5_vlog_msg(krb5_context context,
|
|||||||
va_list ap)
|
va_list ap)
|
||||||
__attribute__((format (printf, 5, 0)))
|
__attribute__((format (printf, 5, 0)))
|
||||||
{
|
{
|
||||||
char *msg;
|
|
||||||
const char *actual;
|
char *msg = NULL;
|
||||||
|
const char *actual = NULL;
|
||||||
char buf[64];
|
char buf[64];
|
||||||
time_t t;
|
time_t t = 0;
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
vasprintf(&msg, fmt, ap);
|
for(i = 0; fac && i < fac->len; i++)
|
||||||
if (msg != NULL)
|
|
||||||
actual = msg;
|
|
||||||
else
|
|
||||||
actual = fmt;
|
|
||||||
t = time(NULL);
|
|
||||||
krb5_format_time(context, t, buf, sizeof(buf), TRUE);
|
|
||||||
for(i = 0; i < fac->len; i++)
|
|
||||||
if(fac->val[i].min <= level &&
|
if(fac->val[i].min <= level &&
|
||||||
(fac->val[i].max < 0 || fac->val[i].max >= level))
|
(fac->val[i].max < 0 || fac->val[i].max >= level)) {
|
||||||
|
if(t == 0) {
|
||||||
|
t = time(NULL);
|
||||||
|
krb5_format_time(context, t, buf, sizeof(buf), TRUE);
|
||||||
|
}
|
||||||
|
if(actual == NULL) {
|
||||||
|
vasprintf(&msg, fmt, ap);
|
||||||
|
if(msg == NULL)
|
||||||
|
actual = fmt;
|
||||||
|
else
|
||||||
|
actual = msg;
|
||||||
|
}
|
||||||
(*fac->val[i].log)(buf, actual, fac->val[i].data);
|
(*fac->val[i].log)(buf, actual, fac->val[i].data);
|
||||||
*reply = msg;
|
}
|
||||||
|
if(reply == NULL)
|
||||||
|
free(msg);
|
||||||
|
else
|
||||||
|
*reply = msg;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -411,12 +420,7 @@ krb5_vlog(krb5_context context,
|
|||||||
va_list ap)
|
va_list ap)
|
||||||
__attribute__((format (printf, 4, 0)))
|
__attribute__((format (printf, 4, 0)))
|
||||||
{
|
{
|
||||||
char *msg;
|
return krb5_vlog_msg(context, fac, NULL, level, fmt, ap);
|
||||||
krb5_error_code ret;
|
|
||||||
|
|
||||||
ret = krb5_vlog_msg(context, fac, &msg, level, fmt, ap);
|
|
||||||
free(msg);
|
|
||||||
return ret;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
krb5_error_code
|
krb5_error_code
|
||||||
|
Reference in New Issue
Block a user