Initialize digest_type to SUDO_DIGEST_INVALID, not -1 and make it unsigned.
This makes the digest type consistently unsigned instead of a mix of signed (for the -1 value in the tokenizer) and unsigned.
This commit is contained in:
@@ -29,7 +29,7 @@
|
|||||||
#include "parse.h"
|
#include "parse.h"
|
||||||
|
|
||||||
const char *
|
const char *
|
||||||
digest_type_to_name(int digest_type)
|
digest_type_to_name(unsigned int digest_type)
|
||||||
{
|
{
|
||||||
const char *digest_name;
|
const char *digest_name;
|
||||||
debug_decl(digest_type_to_name, SUDOERS_DEBUG_UTIL);
|
debug_decl(digest_type_to_name, SUDOERS_DEBUG_UTIL);
|
||||||
|
@@ -34,7 +34,8 @@
|
|||||||
#include "sudo_digest.h"
|
#include "sudo_digest.h"
|
||||||
|
|
||||||
unsigned char *
|
unsigned char *
|
||||||
sudo_filedigest(int fd, const char *file, int digest_type, size_t *digest_len)
|
sudo_filedigest(int fd, const char *file, unsigned int digest_type,
|
||||||
|
size_t *digest_len)
|
||||||
{
|
{
|
||||||
unsigned char *file_digest = NULL;
|
unsigned char *file_digest = NULL;
|
||||||
unsigned char buf[32 * 1024];
|
unsigned char buf[32 * 1024];
|
||||||
@@ -46,7 +47,7 @@ sudo_filedigest(int fd, const char *file, int digest_type, size_t *digest_len)
|
|||||||
|
|
||||||
*digest_len = sudo_digest_getlen(digest_type);
|
*digest_len = sudo_digest_getlen(digest_type);
|
||||||
if (*digest_len == (size_t)-1) {
|
if (*digest_len == (size_t)-1) {
|
||||||
sudo_warnx(U_("unsupported digest type %d for %s"), digest_type, file);
|
sudo_warnx(U_("unsupported digest type %u for %s"), digest_type, file);
|
||||||
goto bad;
|
goto bad;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -164,7 +164,7 @@ static bool add_userspec(struct member *, struct privilege *);
|
|||||||
static struct defaults *new_default(char *, char *, short);
|
static struct defaults *new_default(char *, char *, short);
|
||||||
static struct member *new_member(char *, int);
|
static struct member *new_member(char *, int);
|
||||||
static struct sudo_command *new_command(char *, char *);
|
static struct sudo_command *new_command(char *, char *);
|
||||||
static struct command_digest *new_digest(int, char *);
|
static struct command_digest *new_digest(unsigned int, char *);
|
||||||
static void alias_error(const char *name, int errnum);
|
static void alias_error(const char *name, int errnum);
|
||||||
|
|
||||||
#line 165 "gram.c"
|
#line 165 "gram.c"
|
||||||
@@ -3548,7 +3548,7 @@ new_command(char *cmnd, char *args)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static struct command_digest *
|
static struct command_digest *
|
||||||
new_digest(int digest_type, char *digest_str)
|
new_digest(unsigned int digest_type, char *digest_str)
|
||||||
{
|
{
|
||||||
struct command_digest *digest;
|
struct command_digest *digest;
|
||||||
debug_decl(new_digest, SUDOERS_DEBUG_PARSER);
|
debug_decl(new_digest, SUDOERS_DEBUG_PARSER);
|
||||||
|
@@ -81,7 +81,7 @@ static bool add_userspec(struct member *, struct privilege *);
|
|||||||
static struct defaults *new_default(char *, char *, short);
|
static struct defaults *new_default(char *, char *, short);
|
||||||
static struct member *new_member(char *, int);
|
static struct member *new_member(char *, int);
|
||||||
static struct sudo_command *new_command(char *, char *);
|
static struct sudo_command *new_command(char *, char *);
|
||||||
static struct command_digest *new_digest(int, char *);
|
static struct command_digest *new_digest(unsigned int, char *);
|
||||||
static void alias_error(const char *name, int errnum);
|
static void alias_error(const char *name, int errnum);
|
||||||
%}
|
%}
|
||||||
|
|
||||||
@@ -1365,7 +1365,7 @@ new_command(char *cmnd, char *args)
|
|||||||
}
|
}
|
||||||
|
|
||||||
static struct command_digest *
|
static struct command_digest *
|
||||||
new_digest(int digest_type, char *digest_str)
|
new_digest(unsigned int digest_type, char *digest_str)
|
||||||
{
|
{
|
||||||
struct command_digest *digest;
|
struct command_digest *digest;
|
||||||
debug_decl(new_digest, SUDOERS_DEBUG_PARSER);
|
debug_decl(new_digest, SUDOERS_DEBUG_PARSER);
|
||||||
|
@@ -466,10 +466,10 @@ int parse_timeout(const char *timestr);
|
|||||||
time_t parse_gentime(const char *expstr);
|
time_t parse_gentime(const char *expstr);
|
||||||
|
|
||||||
/* filedigest.c */
|
/* filedigest.c */
|
||||||
unsigned char *sudo_filedigest(int fd, const char *file, int digest_type, size_t *digest_len);
|
unsigned char *sudo_filedigest(int fd, const char *file, unsigned int digest_type, size_t *digest_len);
|
||||||
|
|
||||||
/* digestname.c */
|
/* digestname.c */
|
||||||
const char *digest_type_to_name(int digest_type);
|
const char *digest_type_to_name(unsigned int digest_type);
|
||||||
|
|
||||||
/* parse.c */
|
/* parse.c */
|
||||||
struct sudo_nss_list;
|
struct sudo_nss_list;
|
||||||
|
@@ -46,7 +46,8 @@ static const char *test_strings[NUM_TESTS] = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
static unsigned char *
|
static unsigned char *
|
||||||
check_digest(int digest_type, const char *buf, size_t buflen, size_t *digest_len)
|
check_digest(unsigned int digest_type, const char *buf, size_t buflen,
|
||||||
|
size_t *digest_len)
|
||||||
{
|
{
|
||||||
char tfile[] = "digest.XXXXXX";
|
char tfile[] = "digest.XXXXXX";
|
||||||
unsigned char *digest = NULL;
|
unsigned char *digest = NULL;
|
||||||
@@ -86,7 +87,7 @@ main(int argc, char *argv[])
|
|||||||
unsigned char *digest;
|
unsigned char *digest;
|
||||||
unsigned int i, j;
|
unsigned int i, j;
|
||||||
size_t digest_len;
|
size_t digest_len;
|
||||||
int digest_type;
|
unsigned int digest_type;
|
||||||
|
|
||||||
initprogname(argc > 0 ? argv[0] : "check_digest");
|
initprogname(argc > 0 ? argv[0] : "check_digest");
|
||||||
|
|
||||||
|
@@ -3095,7 +3095,7 @@ struct sudolinebuf sudolinebuf; /* sudoers line being parsed. */
|
|||||||
|
|
||||||
static bool continued, sawspace;
|
static bool continued, sawspace;
|
||||||
static int prev_state;
|
static int prev_state;
|
||||||
static int digest_type = -1;
|
static unsigned int digest_type = SUDO_DIGEST_INVALID;
|
||||||
|
|
||||||
static bool pop_include(void);
|
static bool pop_include(void);
|
||||||
static yy_size_t sudoers_input(char *buf, yy_size_t max_size);
|
static yy_size_t sudoers_input(char *buf, yy_size_t max_size);
|
||||||
@@ -5654,7 +5654,7 @@ init_lexer(void)
|
|||||||
keepopen = false;
|
keepopen = false;
|
||||||
sawspace = false;
|
sawspace = false;
|
||||||
continued = false;
|
continued = false;
|
||||||
digest_type = -1;
|
digest_type = SUDO_DIGEST_INVALID;
|
||||||
prev_state = INITIAL;
|
prev_state = INITIAL;
|
||||||
BEGIN INITIAL;
|
BEGIN INITIAL;
|
||||||
|
|
||||||
|
@@ -61,7 +61,7 @@ struct sudolinebuf sudolinebuf; /* sudoers line being parsed. */
|
|||||||
|
|
||||||
static bool continued, sawspace;
|
static bool continued, sawspace;
|
||||||
static int prev_state;
|
static int prev_state;
|
||||||
static int digest_type = -1;
|
static unsigned int digest_type = SUDO_DIGEST_INVALID;
|
||||||
|
|
||||||
static bool pop_include(void);
|
static bool pop_include(void);
|
||||||
static yy_size_t sudoers_input(char *buf, yy_size_t max_size);
|
static yy_size_t sudoers_input(char *buf, yy_size_t max_size);
|
||||||
@@ -1107,7 +1107,7 @@ init_lexer(void)
|
|||||||
keepopen = false;
|
keepopen = false;
|
||||||
sawspace = false;
|
sawspace = false;
|
||||||
continued = false;
|
continued = false;
|
||||||
digest_type = -1;
|
digest_type = SUDO_DIGEST_INVALID;
|
||||||
prev_state = INITIAL;
|
prev_state = INITIAL;
|
||||||
BEGIN INITIAL;
|
BEGIN INITIAL;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user