Have started_with_special_privs() assert out if get_credential_info() was not

previously called.  This prevents the function from always returning TRUE in
programs that hadn't called get_credential_info().

Call get_credential_info() in the programs that should have been.

svn path=/trunk/; revision=24648
This commit is contained in:
Jeff Morriss 2008-03-16 00:32:12 +00:00
parent 6367e7c054
commit d951728e6b
3 changed files with 30 additions and 7 deletions

View File

@ -212,7 +212,8 @@ process_cap_file(wtap *wth, const char *filename)
return 0; return 0;
} }
static void usage(gboolean is_error) static void
usage(gboolean is_error)
{ {
FILE *output; FILE *output;
@ -271,7 +272,8 @@ failure_message(const char *msg_format, va_list ap)
} }
int main(int argc, char *argv[]) int
main(int argc, char *argv[])
{ {
wtap *wth; wtap *wth;
int err; int err;
@ -282,7 +284,14 @@ int main(int argc, char *argv[])
int status = 0; int status = 0;
#ifdef HAVE_PLUGINS #ifdef HAVE_PLUGINS
char* init_progfile_dir_error; char* init_progfile_dir_error;
#endif
/*
* Get credential information for later use.
*/
get_credential_info();
#ifdef HAVE_PLUGINS
/* Register wiretap plugins */ /* Register wiretap plugins */
if ((init_progfile_dir_error = init_progfile_dir(argv[0]))) { if ((init_progfile_dir_error = init_progfile_dir(argv[0]))) {

View File

@ -297,7 +297,8 @@ is_duplicate(guint8* fd, guint32 len) {
return FALSE; return FALSE;
} }
static void usage(void) static void
usage(void)
{ {
fprintf(stderr, "Editcap %s" fprintf(stderr, "Editcap %s"
#ifdef SVNVERSION #ifdef SVNVERSION
@ -342,7 +343,8 @@ static void usage(void)
fprintf(stderr, "\n"); fprintf(stderr, "\n");
} }
static void list_capture_types(void) { static void
list_capture_types(void) {
int i; int i;
fprintf(stderr, "editcap: The available capture file types for \"F\":\n"); fprintf(stderr, "editcap: The available capture file types for \"F\":\n");
@ -353,7 +355,8 @@ static void list_capture_types(void) {
} }
} }
static void list_encap_types(void) { static void
list_encap_types(void) {
int i; int i;
const char *string; const char *string;
@ -374,8 +377,8 @@ failure_message(const char *msg_format, va_list ap)
fprintf(stderr, "\n"); fprintf(stderr, "\n");
} }
int main(int argc, char *argv[]) int
main(int argc, char *argv[])
{ {
wtap *wth; wtap *wth;
int i, j, err; int i, j, err;
@ -400,7 +403,14 @@ int main(int argc, char *argv[])
gboolean check_ts; gboolean check_ts;
#ifdef HAVE_PLUGINS #ifdef HAVE_PLUGINS
char* init_progfile_dir_error; char* init_progfile_dir_error;
#endif
/*
* Get credential information for later use.
*/
get_credential_info();
#ifdef HAVE_PLUGINS
/* Register wiretap plugins */ /* Register wiretap plugins */
if ((init_progfile_dir_error = init_progfile_dir(argv[0]))) { if ((init_progfile_dir_error = init_progfile_dir(argv[0]))) {
g_warning("capinfos: init_progfile_dir(): %s", init_progfile_dir_error); g_warning("capinfos: init_progfile_dir(): %s", init_progfile_dir_error);

View File

@ -151,6 +151,7 @@ npf_sys_is_running() {
static uid_t ruid, euid; static uid_t ruid, euid;
static gid_t rgid, egid; static gid_t rgid, egid;
static gboolean get_credential_info_called = FALSE;
/* /*
* Called when the program starts, to save whatever credential information * Called when the program starts, to save whatever credential information
@ -164,6 +165,8 @@ get_credential_info(void)
euid = geteuid(); euid = geteuid();
rgid = getgid(); rgid = getgid();
egid = getegid(); egid = getegid();
get_credential_info_called = TRUE;
} }
/* /*
@ -173,6 +176,7 @@ get_credential_info(void)
gboolean gboolean
started_with_special_privs(void) started_with_special_privs(void)
{ {
g_assert(get_credential_info_called);
#ifdef HAVE_ISSETUGID #ifdef HAVE_ISSETUGID
return issetugid(); return issetugid();
#else #else