Move _sudo_printf from src/conversation.c to common/sudo_printf.c.
Add sudo_printf function pointer that is initialized to _sudo_printf() instead of requiring a sudo_conv function pointer everywhere. The plugin will reset sudo_printf to point to the version passed in via the plugin open function. Now plugin_error.c can just call sudo_printf in all cases. The sudoers binaries no longer need their own version of sudo_printf.
This commit is contained in:
@@ -120,8 +120,6 @@ static int sudo_debug_mode;
|
||||
static char sudo_debug_pidstr[(((sizeof(int) * 8) + 2) / 3) + 3];
|
||||
static size_t sudo_debug_pidlen;
|
||||
|
||||
extern sudo_conv_t sudo_conv;
|
||||
|
||||
/*
|
||||
* Parse settings string from sudo.conf and open debugfile.
|
||||
* Returns 1 on success, 0 if cannot open debugfile.
|
||||
@@ -285,36 +283,21 @@ static void
|
||||
sudo_debug_write_conv(const char *func, const char *file, int lineno,
|
||||
const char *str, int len, int errno_val)
|
||||
{
|
||||
struct sudo_conv_message msg;
|
||||
struct sudo_conv_reply repl;
|
||||
char *buf = NULL;
|
||||
/* Remove the newline at the end if appending extra info. */
|
||||
if (str[len - 1] == '\n')
|
||||
len--;
|
||||
|
||||
/* Call conversation function */
|
||||
if (sudo_conv != NULL) {
|
||||
/* Remove the newline at the end if appending extra info. */
|
||||
if (str[len - 1] == '\n')
|
||||
len--;
|
||||
|
||||
if (func != NULL && file != NULL && lineno != 0) {
|
||||
if (errno_val) {
|
||||
easprintf(&buf, "%.*s: %s @ %s() %s:%d", len, str,
|
||||
strerror(errno_val), func, file, lineno);
|
||||
} else {
|
||||
easprintf(&buf, "%.*s @ %s() %s:%d", len, str,
|
||||
func, file, lineno);
|
||||
}
|
||||
str = buf;
|
||||
} else if (errno_val) {
|
||||
easprintf(&buf, "%.*s: %s", len, str, strerror(errno_val));
|
||||
str = buf;
|
||||
if (func != NULL && file != NULL && lineno != 0) {
|
||||
if (errno_val) {
|
||||
sudo_printf(SUDO_CONV_DEBUG_MSG, "%.*s: %s @ %s() %s:%d",
|
||||
len, str, strerror(errno_val), func, file, lineno);
|
||||
} else {
|
||||
sudo_printf(SUDO_CONV_DEBUG_MSG, "%.*s @ %s() %s:%d",
|
||||
len, str, func, file, lineno);
|
||||
}
|
||||
memset(&msg, 0, sizeof(msg));
|
||||
memset(&repl, 0, sizeof(repl));
|
||||
msg.msg_type = SUDO_CONV_DEBUG_MSG;
|
||||
msg.msg = str;
|
||||
sudo_conv(1, &msg, &repl);
|
||||
if (buf != NULL)
|
||||
efree(buf);
|
||||
} else if (errno_val) {
|
||||
sudo_printf(SUDO_CONV_DEBUG_MSG, "%.*s: %s",
|
||||
len, str, strerror(errno_val));
|
||||
}
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user