changeset 14236:b7f17fdded6f

[gaim-migrate @ 16918] Const-correctness to eliminate some warnings. committer: Tailor Script <tailor@pidgin.im>
author Mark Huetsch <markhuetsch>
date Sun, 20 Aug 2006 21:37:45 +0000
parents a54ff7cafc2a
children 7cf90e0b6180
files libgaim/protocols/qq/crypt.c libgaim/protocols/qq/crypt.h libgaim/protocols/qq/utils.c libgaim/protocols/qq/utils.h
diffstat 4 files changed, 66 insertions(+), 48 deletions(-) [+]
line wrap: on
line diff
--- a/libgaim/protocols/qq/crypt.c	Sun Aug 20 20:14:12 2006 +0000
+++ b/libgaim/protocols/qq/crypt.c	Sun Aug 20 21:37:45 2006 +0000
@@ -49,10 +49,9 @@
  * encryption 
  *******************************************************************/
 
-/* TODO: convert these data types to proper glib ones */
-static void qq_encipher(unsigned long *const v, const unsigned long *const k, unsigned long *const w)
+static void qq_encipher(guint32 *const v, const guint32 *const k, guint32 *const w)
 {
-	register unsigned long y = ntohl(v[0]), 
+	register guint32 y = ntohl(v[0]), 
 		 z = ntohl(v[1]), 
 		 a = ntohl(k[0]), 
 		 b = ntohl(k[1]), 
@@ -72,13 +71,14 @@
 	w[1] = htonl(z);
 }
 
-static int rand(void) {	/* it can be the real random seed function */
+static gint rand(void) {	/* it can be the real random seed function */
 	return 0xdead;
 }			/* override with number, convenient for debug */
 
-/* we encrypt every eight byte block */
-static void encrypt_every_8_byte(unsigned char *plain, unsigned char *plain_pre_8, unsigned char **crypted, 
-		unsigned char **crypted_pre_8, unsigned char *key, int *count, int *pos_in_byte, int *is_header) 
+/* we encrypt every eight byte chunk */
+static void encrypt_every_8_byte(guint8 *plain, guint8 *plain_pre_8, guint8 **crypted, 
+		guint8 **crypted_pre_8, const guint8 *const key, gint *count, 
+		gint *pos_in_byte, gint *is_header) 
 {
 	/* prepare plain text */
 	for (*pos_in_byte = 0; *pos_in_byte < 8; (*pos_in_byte)++) {
@@ -89,7 +89,7 @@
 		}
 	}
 	/* encrypt it */
-	qq_encipher((unsigned long *) plain, (unsigned long *) key, (unsigned long *) *crypted);
+	qq_encipher((guint32 *) plain, (guint32 *) key, (guint32 *) *crypted);
 
 	for (*pos_in_byte = 0; *pos_in_byte < 8; (*pos_in_byte)++) {
 		(*crypted)[*pos_in_byte] ^= plain_pre_8[*pos_in_byte];
@@ -104,15 +104,16 @@
 }					/* encrypt_every_8_byte */
 
 
-static void qq_encrypt(unsigned char *instr, int instrlen, unsigned char *key, 
-		unsigned char *outstr, int *outstrlen_prt)
+static void qq_encrypt(const guint8 *const instr, gint instrlen, 
+		const guint8 *const key, 
+		guint8 *outstr, gint *outstrlen_prt)
 {
-	unsigned char plain[8],		/* plain text buffer */
+	guint8 plain[8],		/* plain text buffer */
 		plain_pre_8[8],		/* plain text buffer, previous 8 bytes */
 		*crypted,		/* crypted text */
-		*crypted_pre_8,		/* crypted test, previous 8 bytes */
-		*inp;			/* current position in instr */
-	int pos_in_byte = 1,		/* loop in the byte */
+		*crypted_pre_8;		/* crypted test, previous 8 bytes */
+	const guint8 *inp;		/* current position in instr */
+	gint pos_in_byte = 1,		/* loop in the byte */
 		is_header = 1,		/* header is one byte */
 		count = 0,		/* number of bytes being crypted */
 		padding = 0;		/* number of padding stuff */
@@ -135,7 +136,8 @@
 			padding++;
 		}
 		if (pos_in_byte == 8) {
-			encrypt_every_8_byte(plain, plain_pre_8, &crypted, &crypted_pre_8, key, &count, &pos_in_byte, &is_header);
+			encrypt_every_8_byte(plain, plain_pre_8, &crypted, &crypted_pre_8, 
+					key, &count, &pos_in_byte, &is_header);
 		}
 	}
 
@@ -146,7 +148,8 @@
 			instrlen--;
 		}
 		if (pos_in_byte == 8) {
-			encrypt_every_8_byte(plain, plain_pre_8, &crypted, &crypted_pre_8, key, &count, &pos_in_byte, &is_header);
+			encrypt_every_8_byte(plain, plain_pre_8, &crypted, &crypted_pre_8, 
+					key, &count, &pos_in_byte, &is_header);
 		}
 	}
 
@@ -157,7 +160,8 @@
 			padding++;
 		}
 		if (pos_in_byte == 8) {
-			encrypt_every_8_byte(plain, plain_pre_8, &crypted, &crypted_pre_8, key, &count, &pos_in_byte, &is_header);
+			encrypt_every_8_byte(plain, plain_pre_8, &crypted, &crypted_pre_8, 
+					key, &count, &pos_in_byte, &is_header);
 		}
 	}
 
@@ -169,9 +173,9 @@
  * decryption 
  ********************************************************************/
 
-static void qq_decipher(unsigned long *const v, const unsigned long *const k, unsigned long *const w)
+static void qq_decipher(guint32 *const v, const guint32 *const k, guint32 *const w)
 {
-	register unsigned long y = ntohl(v[0]), 
+	register guint32 y = ntohl(v[0]), 
 		z = ntohl(v[1]), 
 		a = ntohl(k[0]), 
 		b = ntohl(k[1]), 
@@ -192,15 +196,16 @@
 	w[1] = htonl(z);
 }
 
-static int decrypt_every_8_byte(unsigned char **crypt_buff, const int instrlen, const unsigned char * const key, 
-	int *context_start, unsigned char *decrypted, int *pos_in_byte)
+static gint decrypt_every_8_byte(const guint8 **crypt_buff, const gint instrlen, 
+		const guint8 *const key, gint *context_start, 
+		guint8 *decrypted, gint *pos_in_byte)
 {
 	for (*pos_in_byte = 0; *pos_in_byte < 8; (*pos_in_byte)++) {
 		if (*context_start + *pos_in_byte >= instrlen)
 			return 1;
 		decrypted[*pos_in_byte] ^= (*crypt_buff)[*pos_in_byte];
 	}
-	qq_decipher((unsigned long *) decrypted, (unsigned long *) key, (unsigned long *) decrypted);
+	qq_decipher((guint32 *) decrypted, (guint32 *) key, (guint32 *) decrypted);
 
 	*context_start += 8;
 	*crypt_buff += 8;
@@ -210,25 +215,29 @@
 }
 
 /* return 0 if failed, 1 otherwise */
-static int qq_decrypt(unsigned char *instr, int instrlen, unsigned char *key, 
-		unsigned char *outstr, int *outstrlen_ptr)
+static gint qq_decrypt(const guint8 *const instr, gint instrlen, 
+		const guint8 *const key,
+		guint8 *outstr, gint *outstrlen_ptr)
 {
-	unsigned char decrypted[8], m[8], *crypt_buff, *crypt_buff_pre_8, *outp;
-	int count, context_start, pos_in_byte, padding;
+	guint8 decrypted[8], m[8], *outp;
+	const guint8 *crypt_buff, *crypt_buff_pre_8;
+	gint count, context_start, pos_in_byte, padding;
 
 	/* at least 16 bytes and %8 == 0 */
 	if ((instrlen % 8) || (instrlen < 16)) { 
 		gaim_debug(GAIM_DEBUG_ERROR, "QQ", 
-			"Packet len is either too short or not a multiple of 8 bytes, read %d bytes\n", instrlen);
+			"Packet len is either too short or not a multiple of 8 bytes, read %d bytes\n", 
+			instrlen);
 		return 0;
 	}
 	/* get information from header */
-	qq_decipher((unsigned long *) instr, (unsigned long *) key, (unsigned long *) decrypted);
+	qq_decipher((guint32 *) instr, (guint32 *) key, (guint32 *) decrypted);
 	pos_in_byte = decrypted[0] & 0x7;
 	count = instrlen - pos_in_byte - 10;	/* this is the plaintext length */
 	/* return if outstr buffer is not large enough or error plaintext length */
 	if (*outstrlen_ptr < count || count < 0) {
-		gaim_debug(GAIM_DEBUG_ERROR, "QQ", "Buffer len %d is less than real len %d", *outstrlen_ptr, count);
+		gaim_debug(GAIM_DEBUG_ERROR, "QQ", "Buffer len %d is less than real len %d", 
+			*outstrlen_ptr, count);
 		return 0;
 	}
 
@@ -248,7 +257,8 @@
 		}
 		if (pos_in_byte == 8) {
 			crypt_buff_pre_8 = instr;
-			if (!decrypt_every_8_byte(&crypt_buff, instrlen, key, &context_start, decrypted, &pos_in_byte)) {
+			if (!decrypt_every_8_byte(&crypt_buff, instrlen, key, 
+						&context_start, decrypted, &pos_in_byte)) {
 				gaim_debug(GAIM_DEBUG_ERROR, "QQ", "decrypt every 8 bytes error A");
 				return 0;
 			}
@@ -265,7 +275,8 @@
 		}
 		if (pos_in_byte == 8) {
 			crypt_buff_pre_8 = crypt_buff - 8;
-			if (!decrypt_every_8_byte(&crypt_buff, instrlen, key, &context_start, decrypted, &pos_in_byte)) {
+			if (!decrypt_every_8_byte(&crypt_buff, instrlen, key, 
+						&context_start, decrypted, &pos_in_byte)) {
 				gaim_debug(GAIM_DEBUG_ERROR, "QQ", "decrypt every 8 bytes error B");
 				return 0;
 			}
@@ -280,7 +291,8 @@
 		}
 		if (pos_in_byte == 8) {
 			crypt_buff_pre_8 = crypt_buff;
-			if (!decrypt_every_8_byte(&crypt_buff, instrlen, key, &context_start, decrypted, &pos_in_byte)) {
+			if (!decrypt_every_8_byte(&crypt_buff, instrlen, key, 
+						&context_start, decrypted, &pos_in_byte)) {
 				gaim_debug(GAIM_DEBUG_ERROR, "QQ", "decrypt every 8 bytes error C");
 				return 0;
 			}
@@ -289,10 +301,11 @@
 	return 1;
 }
 
-/* This is the Public Function */
 /* return 1 is succeed, otherwise return 0 */
-int qq_crypt(unsigned char flag,
-	     unsigned char *instr, int instrlen, unsigned char *key, unsigned char *outstr, int *outstrlen_ptr)
+gint qq_crypt(gint flag,
+		const guint8 *const instr, gint instrlen, 
+		const guint8 *const key, 
+		guint8 *outstr, gint *outstrlen_ptr)
 {
 	if (flag == DECRYPT)
 		return qq_decrypt(instr, instrlen, key, outstr, outstrlen_ptr);
--- a/libgaim/protocols/qq/crypt.h	Sun Aug 20 20:14:12 2006 +0000
+++ b/libgaim/protocols/qq/crypt.h	Sun Aug 20 21:37:45 2006 +0000
@@ -23,10 +23,14 @@
 #ifndef _QQ_CRYPT_H_
 #define _QQ_CRYPT_H_
 
+#include <glib.h>
+
 #define DECRYPT 0x00
 #define ENCRYPT 0x01
 
-int qq_crypt(unsigned char flag,
-	     unsigned char *instr, int instrlen, unsigned char *key, unsigned char *outstr, int *outstrlen_ptr);
+gint qq_crypt(gint flag,
+	     const guint8 *const instr, gint instrlen, 
+	     const guint8 *const key, 
+	     guint8 *outstr, gint *outstrlen_ptr);
 
 #endif
--- a/libgaim/protocols/qq/utils.c	Sun Aug 20 20:14:12 2006 +0000
+++ b/libgaim/protocols/qq/utils.c	Sun Aug 20 21:37:45 2006 +0000
@@ -125,7 +125,8 @@
 
 guint8 *str_ip_gen(gchar *str) {
 	guint8 *ip = g_new(guint8, 4);
-	int a, b, c, d;
+	gint a, b, c, d;
+
 	sscanf(str, "%d.%d.%d.%d", &a, &b, &c, &d);
 	ip[0] = a;
 	ip[1] = b;
@@ -149,7 +150,7 @@
 }
 
 /* convert GAIM name to original QQ UID */
-guint32 gaim_name_to_uid(const gchar *name)
+guint32 gaim_name_to_uid(const gchar *const name)
 {
 	gchar *p;
 
@@ -160,7 +161,7 @@
 }
 
 /* try to dump the data as GBK */
-void try_dump_as_gbk(guint8 *data, gint len)
+void try_dump_as_gbk(const guint8 *const data, gint len)
 {
 	gint i;
 	guint8 *incoming;
@@ -186,7 +187,7 @@
 }
 
 /* strips whitespace */
-static gchar *strstrip(const gchar *buffer)
+static gchar *strstrip(const gchar *const buffer)
 {
 	GString *stripped;
 	gchar *ret;
@@ -206,10 +207,9 @@
         return ret;
 }
 
-/* Dumps an ASCII hex string to a string of bytes. The return should be freed later.
- * Returns NULL if a string with an odd number of nibbles is passed in or if buffer 
- * isn't a valid hex string */
-guint8 *hex_str_to_bytes(const gchar *buffer, gint *out_len)
+/* Attempts to dump an ASCII hex string to a string of bytes. 
+ * The return should be freed later. */
+guint8 *hex_str_to_bytes(const gchar *const buffer, gint *out_len)
 {
 	gchar *hex_str, *hex_buffer, *cursor, tmp;
 	guint8 *bytes, nibble1, nibble2;
@@ -259,8 +259,9 @@
 	return g_memdup(bytes, *out_len);
 }
 
-/* Dumps a chunk of raw data into an ASCII hex string. The return should be freed later. */
-gchar *hex_dump_to_str(const guint8 *buffer, gint bytes)
+/* Dumps a chunk of raw data into an ASCII hex string. 
+ * The return should be freed later. */
+gchar *hex_dump_to_str(const guint8 *const buffer, gint bytes)
 {
 	GString *str;
 	gchar *ret;
--- a/libgaim/protocols/qq/utils.h	Sun Aug 20 20:14:12 2006 +0000
+++ b/libgaim/protocols/qq/utils.h	Sun Aug 20 21:37:45 2006 +0000
@@ -41,7 +41,7 @@
 
 gchar *get_icon_name(gint set, gint suffix);
 
-void try_dump_as_gbk(guint8 *data, gint len);
+void try_dump_as_gbk(const guint8 *const data, gint len);
 
 guint8 *hex_str_to_bytes(const gchar *buf, gint *out_len);
 gchar *hex_dump_to_str(const guint8 *buf, gint buf_len);