Fix up some type mismatch errors in the arcfour module

This commit is contained in:
Kevin Easton
2015-09-07 17:12:04 +10:00
parent 8cc9684c76
commit 642ab8829d
2 changed files with 6 additions and 5 deletions

View File

@@ -61,7 +61,7 @@ static unsigned int typenum = 0;
static char *init_box(char *ukey, arckey *key)
{
MD5_CTX md5context;
char buf[256];
unsigned char buf[256];
int fd;
fd = open("/dev/urandom", O_RDONLY);
@@ -83,9 +83,10 @@ static char *init_box(char *ukey, arckey *key)
return ukey;
}
static inline void arcfourInit(arckey *arc, char *userkey, unsigned short len)
static inline void arcfourInit(arckey *arc, void *userkey, unsigned short len)
{
register arcword *S = arc->state, x = 0, y = 0, pos = 0, tmp;
unsigned char *userkey_byte = userkey;
/* Seed the S-box linearly, then mix in the key while stiring briskly */
arc->i = arc->j = 0; /* Initialize i and j to 0 */
@@ -93,7 +94,7 @@ static inline void arcfourInit(arckey *arc, char *userkey, unsigned short len)
/* Note: Some of these optimizations REQUIRE arcword to be 8-bit unsigned */
do { /* Spread user key into real key */
y += S[x] + userkey[pos]; /* Keys, shaken, not stirred */
y += S[x] + userkey_byte[pos]; /* Keys, shaken, not stirred */
tmp = S[x]; S[x] = S[y]; S[y] = tmp; /* Swap S[i] and S[j] */
if (++pos >= len) pos = 0; /* Repeat user key to fill array */
} while(++x); /* ++x is faster than x++ */
@@ -203,7 +204,7 @@ static int start_dcc_crypt (int s, int type, unsigned long d_addr, int d_port)
if ((len = dgets(buf, s, 1, BIG_BUFFER_SIZE, NULL)) > 0) {
if (!my_strnicmp("SecureDCC", buf, 9)) {
tmpbox->inbox = (arckey *)new_malloc(sizeof(arckey));
arcfourInit(tmpbox->inbox, next_arg(buf, &buf), 16);
arcfourInit(tmpbox->inbox, next_arg(buf, NULL), 16);
}
}
return 0;

View File

@@ -5,7 +5,7 @@ typedef struct {
} arckey;
/* Prototypes */
static inline void arcfourInit(arckey *, char *, unsigned short);
static inline void arcfourInit(arckey *, void *, unsigned short);
static inline char *arcfourCrypt(arckey *, char *, int);
static int send_dcc_encrypt (int, int, char *, int);
static int get_dcc_encrypt (int, int, char *, int, int);