(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)
|
||||
__attribute__((format (printf, 5, 0)))
|
||||
{
|
||||
char *msg;
|
||||
const char *actual;
|
||||
|
||||
char *msg = NULL;
|
||||
const char *actual = NULL;
|
||||
char buf[64];
|
||||
time_t t;
|
||||
time_t t = 0;
|
||||
int i;
|
||||
|
||||
vasprintf(&msg, fmt, ap);
|
||||
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++)
|
||||
for(i = 0; fac && i < fac->len; i++)
|
||||
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);
|
||||
*reply = msg;
|
||||
}
|
||||
if(reply == NULL)
|
||||
free(msg);
|
||||
else
|
||||
*reply = msg;
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -411,12 +420,7 @@ krb5_vlog(krb5_context context,
|
||||
va_list ap)
|
||||
__attribute__((format (printf, 4, 0)))
|
||||
{
|
||||
char *msg;
|
||||
krb5_error_code ret;
|
||||
|
||||
ret = krb5_vlog_msg(context, fac, &msg, level, fmt, ap);
|
||||
free(msg);
|
||||
return ret;
|
||||
return krb5_vlog_msg(context, fac, NULL, level, fmt, ap);
|
||||
}
|
||||
|
||||
krb5_error_code
|
||||
|
Reference in New Issue
Block a user