Version the symbols for sudo_debug.c now that the API is stable.

This commit is contained in:
Todd C. Miller
2014-10-27 05:26:08 -06:00
parent d5fdd1ea07
commit adfdad9ae0
4 changed files with 90 additions and 67 deletions

View File

@@ -2147,7 +2147,7 @@ AC_INCLUDES_DEFAULT
[AC_MSG_RESULT([no]) [AC_MSG_RESULT([no])
AC_DEFINE([NO_VARIADIC_MACROS], [1], [Define if your C preprocessor does not support variadic macros.]) AC_DEFINE([NO_VARIADIC_MACROS], [1], [Define if your C preprocessor does not support variadic macros.])
AC_MSG_WARN([Your C preprocessor doesn't support variadic macros, debugging support will be limited]) AC_MSG_WARN([Your C preprocessor doesn't support variadic macros, debugging support will be limited])
SUDO_APPEND_COMPAT_EXP(sudo_debug_printf_nvm) SUDO_APPEND_COMPAT_EXP(sudo_debug_printf_nvm_v1)
]) ])
dnl dnl

View File

@@ -229,27 +229,50 @@ struct sudo_conf_debug_file_list;
#define sudo_debug_write(fd, str, len, errnum) \ #define sudo_debug_write(fd, str, len, errnum) \
sudo_debug_write2(fd, NULL, NULL, 0, (str), (len), (errnum)) sudo_debug_write2(fd, NULL, NULL, 0, (str), (len), (errnum))
__dso_public int sudo_debug_deregister(int instance_id); __dso_public int sudo_debug_deregister_v1(int instance_id);
__dso_public void sudo_debug_enter(const char *func, const char *file, int line, int subsys); __dso_public void sudo_debug_enter_v1(const char *func, const char *file, int line, int subsys);
__dso_public void sudo_debug_execve2(int level, const char *path, char *const argv[], char *const envp[]); __dso_public void sudo_debug_execve2_v1(int level, const char *path, char *const argv[], char *const envp[]);
__dso_public void sudo_debug_exit(const char *func, const char *file, int line, int subsys); __dso_public void sudo_debug_exit_v1(const char *func, const char *file, int line, int subsys);
__dso_public void sudo_debug_exit_bool(const char *func, const char *file, int line, int subsys, int rval); __dso_public void sudo_debug_exit_bool_v1(const char *func, const char *file, int line, int subsys, int rval);
__dso_public void sudo_debug_exit_int(const char *func, const char *file, int line, int subsys, int rval); __dso_public void sudo_debug_exit_int_v1(const char *func, const char *file, int line, int subsys, int rval);
__dso_public void sudo_debug_exit_long(const char *func, const char *file, int line, int subsys, long rval); __dso_public void sudo_debug_exit_long_v1(const char *func, const char *file, int line, int subsys, long rval);
__dso_public void sudo_debug_exit_ptr(const char *func, const char *file, int line, int subsys, const void *rval); __dso_public void sudo_debug_exit_ptr_v1(const char *func, const char *file, int line, int subsys, const void *rval);
__dso_public void sudo_debug_exit_size_t(const char *func, const char *file, int line, int subsys, size_t rval); __dso_public void sudo_debug_exit_size_t_v1(const char *func, const char *file, int line, int subsys, size_t rval);
__dso_public void sudo_debug_exit_str(const char *func, const char *file, int line, int subsys, const char *rval); __dso_public void sudo_debug_exit_str_v1(const char *func, const char *file, int line, int subsys, const char *rval);
__dso_public void sudo_debug_exit_str_masked(const char *func, const char *file, int line, int subsys, const char *rval); __dso_public void sudo_debug_exit_str_masked_v1(const char *func, const char *file, int line, int subsys, const char *rval);
__dso_public pid_t sudo_debug_fork(void); __dso_public pid_t sudo_debug_fork_v1(void);
__dso_public int sudo_debug_get_default_instance(void); __dso_public int sudo_debug_get_default_instance_v1(void);
__dso_public int sudo_debug_get_fds(unsigned char **fds); __dso_public int sudo_debug_get_fds_v1(unsigned char **fds);
__dso_public int sudo_debug_get_instance(const char *program); __dso_public int sudo_debug_get_instance_v1(const char *program);
__dso_public void sudo_debug_printf2(const char *func, const char *file, int line, int level, const char *fmt, ...) __printf0like(5, 6); __dso_public void sudo_debug_printf2_v1(const char *func, const char *file, int line, int level, const char *fmt, ...) __printf0like(5, 6);
__dso_public void sudo_debug_printf_nvm(int pri, const char *fmt, ...) __printf0like(2, 3); __dso_public void sudo_debug_printf_nvm_v1(int pri, const char *fmt, ...) __printf0like(2, 3);
__dso_public int sudo_debug_register(const char *program, const char *const subsystems[], unsigned int ids[], struct sudo_conf_debug_file_list *debug_files); __dso_public int sudo_debug_register_v1(const char *program, const char *const subsystems[], unsigned int ids[], struct sudo_conf_debug_file_list *debug_files);
__dso_public int sudo_debug_set_default_instance(int inst); __dso_public int sudo_debug_set_default_instance_v1(int inst);
__dso_public void sudo_debug_update_fd(int ofd, int nfd); __dso_public void sudo_debug_update_fd_v1(int ofd, int nfd);
__dso_public void sudo_debug_vprintf2(const char *func, const char *file, int line, int level, const char *fmt, va_list ap) __printf0like(5, 0); __dso_public void sudo_debug_vprintf2_v1(const char *func, const char *file, int line, int level, const char *fmt, va_list ap) __printf0like(5, 0);
__dso_public void sudo_debug_write2(int fd, const char *func, const char *file, int line, const char *str, int len, int errnum); __dso_public void sudo_debug_write2_v1(int fd, const char *func, const char *file, int line, const char *str, int len, int errnum);
#define sudo_debug_deregister(_a) sudo_debug_deregister_v1((_a))
#define sudo_debug_enter(_a, _b, _c, _d) sudo_debug_enter_v1((_a), (_b), (_c), (_d))
#define sudo_debug_execve2(_a, _b, _c, _d) sudo_debug_execve2_v1((_a), (_b), (_c), (_d))
#define sudo_debug_exit(_a, _b, _c, _d) sudo_debug_exit_v1((_a), (_b), (_c), (_d))
#define sudo_debug_exit_bool(_a, _b, _c, _d, _e) sudo_debug_exit_bool_v1((_a), (_b), (_c), (_d), (_e))
#define sudo_debug_exit_int(_a, _b, _c, _d, _e) sudo_debug_exit_int_v1((_a), (_b), (_c), (_d), (_e))
#define sudo_debug_exit_long(_a, _b, _c, _d, _e) sudo_debug_exit_long_v1((_a), (_b), (_c), (_d), (_e))
#define sudo_debug_exit_ptr(_a, _b, _c, _d, _e) sudo_debug_exit_ptr_v1((_a), (_b), (_c), (_d), (_e))
#define sudo_debug_exit_size_t(_a, _b, _c, _d, _e) sudo_debug_exit_size_t_v1((_a), (_b), (_c), (_d), (_e))
#define sudo_debug_exit_str(_a, _b, _c, _d, _e) sudo_debug_exit_str_v1((_a), (_b), (_c), (_d), (_e))
#define sudo_debug_exit_str_masked(_a, _b, _c, _d, _e) sudo_debug_exit_str_masked_v1((_a), (_b), (_c), (_d), (_e))
#define sudo_debug_fork() sudo_debug_fork_v1()
#define sudo_debug_get_default_instance() sudo_debug_get_default_instance_v1()
#define sudo_debug_get_fds(_a) sudo_debug_get_fds_v1((_a))
#define sudo_debug_get_instance(_a) sudo_debug_get_instance_v1((_a))
#define sudo_debug_printf2 sudo_debug_printf2_v1
#define sudo_debug_printf_nvm sudo_debug_printf_nvm_v1
#define sudo_debug_register(_a, _b, _c, _d) sudo_debug_register_v1((_a), (_b), (_c), (_d))
#define sudo_debug_set_default_instance(_a) sudo_debug_set_default_instance_v1((_a))
#define sudo_debug_update_fd(_a, _b) sudo_debug_update_fd_v1((_a), (_b))
#define sudo_debug_vprintf2(_a, _b, _c, _d, _e, _f) sudo_debug_vprintf2_v1((_a), (_b), (_c), (_d), (_e), (_f))
#define sudo_debug_write2(_a, _b, _c, _d, _e, _f, _g) sudo_debug_write2_v1((_a), (_b), (_c), (_d), (_e), (_f), (_g))
#endif /* _SUDO_DEBUG_H */ #endif /* _SUDO_DEBUG_H */

View File

@@ -225,7 +225,7 @@ sudo_debug_new_output(struct sudo_debug_instance *instance,
* Returns instance index on success or -1 if cannot open debugfile. * Returns instance index on success or -1 if cannot open debugfile.
*/ */
int int
sudo_debug_register(const char *program, const char *const subsystems[], sudo_debug_register_v1(const char *program, const char *const subsystems[],
unsigned int ids[], struct sudo_conf_debug_file_list *debug_files) unsigned int ids[], struct sudo_conf_debug_file_list *debug_files)
{ {
struct sudo_debug_instance *instance = NULL; struct sudo_debug_instance *instance = NULL;
@@ -330,7 +330,7 @@ sudo_debug_register(const char *program, const char *const subsystems[],
* and free up any associated data structures. * and free up any associated data structures.
*/ */
int int
sudo_debug_deregister(int instance_id) sudo_debug_deregister_v1(int instance_id)
{ {
struct sudo_debug_instance *instance; struct sudo_debug_instance *instance;
struct sudo_debug_output *output, *next; struct sudo_debug_output *output, *next;
@@ -368,7 +368,7 @@ sudo_debug_deregister(int instance_id)
} }
int int
sudo_debug_get_instance(const char *program) sudo_debug_get_instance_v1(const char *program)
{ {
int idx; int idx;
@@ -382,7 +382,7 @@ sudo_debug_get_instance(const char *program)
} }
int int
sudo_debug_set_output_fd(int level, int ofd, int nfd) sudo_debug_set_output_fd_v1(int level, int ofd, int nfd)
{ {
struct sudo_debug_instance *instance; struct sudo_debug_instance *instance;
struct sudo_debug_output *output; struct sudo_debug_output *output;
@@ -404,7 +404,7 @@ sudo_debug_set_output_fd(int level, int ofd, int nfd)
} }
pid_t pid_t
sudo_debug_fork(void) sudo_debug_fork_v1(void)
{ {
pid_t pid; pid_t pid;
@@ -418,7 +418,7 @@ sudo_debug_fork(void)
} }
void void
sudo_debug_enter(const char *func, const char *file, int line, sudo_debug_enter_v1(const char *func, const char *file, int line,
int subsys) int subsys)
{ {
sudo_debug_printf2(NULL, NULL, 0, subsys | SUDO_DEBUG_TRACE, sudo_debug_printf2(NULL, NULL, 0, subsys | SUDO_DEBUG_TRACE,
@@ -426,7 +426,7 @@ sudo_debug_enter(const char *func, const char *file, int line,
} }
void void
sudo_debug_exit(const char *func, const char *file, int line, sudo_debug_exit_v1(const char *func, const char *file, int line,
int subsys) int subsys)
{ {
sudo_debug_printf2(NULL, NULL, 0, subsys | SUDO_DEBUG_TRACE, sudo_debug_printf2(NULL, NULL, 0, subsys | SUDO_DEBUG_TRACE,
@@ -434,7 +434,7 @@ sudo_debug_exit(const char *func, const char *file, int line,
} }
void void
sudo_debug_exit_int(const char *func, const char *file, int line, sudo_debug_exit_int_v1(const char *func, const char *file, int line,
int subsys, int rval) int subsys, int rval)
{ {
sudo_debug_printf2(NULL, NULL, 0, subsys | SUDO_DEBUG_TRACE, sudo_debug_printf2(NULL, NULL, 0, subsys | SUDO_DEBUG_TRACE,
@@ -442,7 +442,7 @@ sudo_debug_exit_int(const char *func, const char *file, int line,
} }
void void
sudo_debug_exit_long(const char *func, const char *file, int line, sudo_debug_exit_long_v1(const char *func, const char *file, int line,
int subsys, long rval) int subsys, long rval)
{ {
sudo_debug_printf2(NULL, NULL, 0, subsys | SUDO_DEBUG_TRACE, sudo_debug_printf2(NULL, NULL, 0, subsys | SUDO_DEBUG_TRACE,
@@ -450,7 +450,7 @@ sudo_debug_exit_long(const char *func, const char *file, int line,
} }
void void
sudo_debug_exit_size_t(const char *func, const char *file, int line, sudo_debug_exit_size_t_v1(const char *func, const char *file, int line,
int subsys, size_t rval) int subsys, size_t rval)
{ {
/* XXX - should use %zu but our snprintf.c doesn't support it */ /* XXX - should use %zu but our snprintf.c doesn't support it */
@@ -460,7 +460,7 @@ sudo_debug_exit_size_t(const char *func, const char *file, int line,
/* We use int, not bool, here for functions that return -1 on error. */ /* We use int, not bool, here for functions that return -1 on error. */
void void
sudo_debug_exit_bool(const char *func, const char *file, int line, sudo_debug_exit_bool_v1(const char *func, const char *file, int line,
int subsys, int rval) int subsys, int rval)
{ {
if (rval == true || rval == false) { if (rval == true || rval == false) {
@@ -473,7 +473,7 @@ sudo_debug_exit_bool(const char *func, const char *file, int line,
} }
void void
sudo_debug_exit_str(const char *func, const char *file, int line, sudo_debug_exit_str_v1(const char *func, const char *file, int line,
int subsys, const char *rval) int subsys, const char *rval)
{ {
sudo_debug_printf2(NULL, NULL, 0, subsys | SUDO_DEBUG_TRACE, sudo_debug_printf2(NULL, NULL, 0, subsys | SUDO_DEBUG_TRACE,
@@ -481,7 +481,7 @@ sudo_debug_exit_str(const char *func, const char *file, int line,
} }
void void
sudo_debug_exit_str_masked(const char *func, const char *file, int line, sudo_debug_exit_str_masked_v1(const char *func, const char *file, int line,
int subsys, const char *rval) int subsys, const char *rval)
{ {
static const char stars[] = "********************************************************************************"; static const char stars[] = "********************************************************************************";
@@ -492,7 +492,7 @@ sudo_debug_exit_str_masked(const char *func, const char *file, int line,
} }
void void
sudo_debug_exit_ptr(const char *func, const char *file, int line, sudo_debug_exit_ptr_v1(const char *func, const char *file, int line,
int subsys, const void *rval) int subsys, const void *rval)
{ {
sudo_debug_printf2(NULL, NULL, 0, subsys | SUDO_DEBUG_TRACE, sudo_debug_printf2(NULL, NULL, 0, subsys | SUDO_DEBUG_TRACE,
@@ -500,7 +500,7 @@ sudo_debug_exit_ptr(const char *func, const char *file, int line,
} }
void void
sudo_debug_write2(int fd, const char *func, const char *file, int lineno, sudo_debug_write2_v1(int fd, const char *func, const char *file, int lineno,
const char *str, int len, int errnum) const char *str, int len, int errnum)
{ {
char *timestr, numbuf[(((sizeof(int) * 8) + 2) / 3) + 2]; char *timestr, numbuf[(((sizeof(int) * 8) + 2) / 3) + 2];
@@ -577,7 +577,7 @@ sudo_debug_write2(int fd, const char *func, const char *file, int lineno,
} }
void void
sudo_debug_vprintf2(const char *func, const char *file, int lineno, int level, sudo_debug_vprintf2_v1(const char *func, const char *file, int lineno, int level,
const char *fmt, va_list ap) const char *fmt, va_list ap)
{ {
int buflen, idx, pri, saved_errno = errno; int buflen, idx, pri, saved_errno = errno;
@@ -643,7 +643,7 @@ out:
#ifdef NO_VARIADIC_MACROS #ifdef NO_VARIADIC_MACROS
void void
sudo_debug_printf_nvm(int pri, const char *fmt, ...) sudo_debug_printf_nvm_v1(int pri, const char *fmt, ...)
{ {
va_list ap; va_list ap;
@@ -654,7 +654,7 @@ sudo_debug_printf_nvm(int pri, const char *fmt, ...)
#endif /* NO_VARIADIC_MACROS */ #endif /* NO_VARIADIC_MACROS */
void void
sudo_debug_printf2(const char *func, const char *file, int lineno, int level, sudo_debug_printf2_v1(const char *func, const char *file, int lineno, int level,
const char *fmt, ...) const char *fmt, ...)
{ {
va_list ap; va_list ap;
@@ -667,7 +667,7 @@ sudo_debug_printf2(const char *func, const char *file, int lineno, int level,
#define EXEC_PREFIX "exec " #define EXEC_PREFIX "exec "
void void
sudo_debug_execve2(int level, const char *path, char *const argv[], char *const envp[]) sudo_debug_execve2_v1(int level, const char *path, char *const argv[], char *const envp[])
{ {
int buflen, idx, pri, saved_errno = errno; int buflen, idx, pri, saved_errno = errno;
unsigned int subsys; unsigned int subsys;
@@ -782,7 +782,7 @@ out:
* if no default instance is set. * if no default instance is set.
*/ */
int int
sudo_debug_get_default_instance(void) sudo_debug_get_default_instance_v1(void)
{ {
return SUDO_DEBUG_MKINSTANCE(sudo_debug_default_instance); return SUDO_DEBUG_MKINSTANCE(sudo_debug_default_instance);
} }
@@ -793,7 +793,7 @@ sudo_debug_get_default_instance(void)
* of this is the only instance. * of this is the only instance.
*/ */
int int
sudo_debug_set_default_instance(int inst) sudo_debug_set_default_instance_v1(int inst)
{ {
const int idx = SUDO_DEBUG_INSTANCE(inst); const int idx = SUDO_DEBUG_INSTANCE(inst);
const int old_idx = sudo_debug_default_instance; const int old_idx = sudo_debug_default_instance;
@@ -808,7 +808,7 @@ sudo_debug_set_default_instance(int inst)
* Also updates sudo_debug_fds. * Also updates sudo_debug_fds.
*/ */
void void
sudo_debug_update_fd(int ofd, int nfd) sudo_debug_update_fd_v1(int ofd, int nfd)
{ {
int idx; int idx;
@@ -838,7 +838,7 @@ sudo_debug_update_fd(int ofd, int nfd)
* Fills in fds with the value of sudo_debug_fds. * Fills in fds with the value of sudo_debug_fds.
*/ */
int int
sudo_debug_get_fds(unsigned char **fds) sudo_debug_get_fds_v1(unsigned char **fds)
{ {
*fds = sudo_debug_fds; *fds = sudo_debug_fds;
return sudo_debug_max_fd; return sudo_debug_max_fd;

View File

@@ -11,27 +11,27 @@ sudo_conf_plugins_v1
sudo_conf_probe_interfaces_v1 sudo_conf_probe_interfaces_v1
sudo_conf_read_v1 sudo_conf_read_v1
sudo_conf_sesh_path_v1 sudo_conf_sesh_path_v1
sudo_debug_deregister sudo_debug_deregister_v1
sudo_debug_enter sudo_debug_enter_v1
sudo_debug_execve2 sudo_debug_execve2_v1
sudo_debug_exit sudo_debug_exit_v1
sudo_debug_exit_bool sudo_debug_exit_bool_v1
sudo_debug_exit_int sudo_debug_exit_int_v1
sudo_debug_exit_long sudo_debug_exit_long_v1
sudo_debug_exit_ptr sudo_debug_exit_ptr_v1
sudo_debug_exit_size_t sudo_debug_exit_size_t_v1
sudo_debug_exit_str sudo_debug_exit_str_v1
sudo_debug_exit_str_masked sudo_debug_exit_str_masked_v1
sudo_debug_fork sudo_debug_fork_v1
sudo_debug_get_default_instance sudo_debug_get_default_instance_v1
sudo_debug_get_fds sudo_debug_get_fds_v1
sudo_debug_get_instance sudo_debug_get_instance_v1
sudo_debug_printf2 sudo_debug_printf2_v1
sudo_debug_register sudo_debug_register_v1
sudo_debug_set_default_instance sudo_debug_set_default_instance_v1
sudo_debug_update_fd sudo_debug_update_fd_v1
sudo_debug_vprintf2 sudo_debug_vprintf2_v1
sudo_debug_write2 sudo_debug_write2_v1
sudo_dso_findsym_v1 sudo_dso_findsym_v1
sudo_dso_load_v1 sudo_dso_load_v1
sudo_dso_preload_table_v1 sudo_dso_preload_table_v1