On Tue, 2005-08-09 at 12:25 +0100, Peter Robinson wrote:
> The second problem (when trying to compile it not through my rpm build
> system) was due I think to FC4 using gcc 4 which is stricter when it
> comes to some things. Output below.
<snip output>
The daap code doesn't compile with warnings about signedness of
characters (which --enable-more-warnings turns on), and I found this out
about an hour ago. I've attached a patch that will make it compile - I
think it should work fine, but it might break some code that depends on
the signedness of various strings (I haven't had a chance to test it
properly yet).
Cheers,
James "Doc" Livingston
--
"Hmmm... Perhaps Magic just consists of hacking the prayer firewall. How
many Hail Marys do we need for a buffer overflow attack?"
-- Bob Dowling
--- rhythmbox--daap-orig/daapsharing/rb-daap-structure.c 2005-08-09 20:21:02.000000000 +1000
+++ rhythmbox/daapsharing/rb-daap-structure.c 2005-08-09 20:43:31.000000000 +1000
@@ -256,7 +256,7 @@
RBDAAPType rb_daap_type;
guint32 size = GINT32_TO_BE (item->size);
- g_byte_array_append (array, rb_daap_content_code_string (item->content_code), 4);
+ g_byte_array_append (array, (guchar*) rb_daap_content_code_string (item->content_code), 4);
g_byte_array_append (array, (const guint8 *)&size, 4);
rb_daap_type = rb_daap_content_code_rb_daap_type (item->content_code);
@@ -264,7 +264,7 @@
switch (rb_daap_type) {
case RB_DAAP_TYPE_BYTE:
case RB_DAAP_TYPE_SIGNED_INT: {
- gchar c = g_value_get_char (&(item->content));
+ guchar c = g_value_get_char (&(item->content));
g_byte_array_append (array, &c, 1);
--- rhythmbox--daap-orig/sources/rb-daap-connection.c 2005-08-09 20:21:03.000000000 +1000
+++ rhythmbox/sources/rb-daap-connection.c 2005-08-09 20:41:52.000000000 +1000
@@ -300,13 +300,13 @@
static int staticHashDone = 0;
-static char staticHash_42[256*65] = {0};
-static char staticHash_45[256*65] = {0};
+static unsigned char staticHash_42[256*65] = {0};
+static unsigned char staticHash_45[256*65] = {0};
-static const char hexchars[] = "0123456789ABCDEF";
-static const char appleCopyright[] = "Copyright 2003 Apple Computer, Inc.";
+static const unsigned char hexchars[] = "0123456789ABCDEF";
+static const unsigned char appleCopyright[] = "Copyright 2003 Apple Computer, Inc.";
-static void DigestToString(const unsigned char *digest, char *string)
+static void DigestToString(const unsigned char *digest, unsigned char *string)
{
int i;
for (i = 0; i < 16; i++)
@@ -322,13 +322,13 @@
MD5_CTX ctx;
unsigned char *p = staticHash_42;
int i;
- char buf[16];
+ unsigned char buf[16];
for (i = 0; i < 256; i++)
{
OpenDaap_MD5Init(&ctx, 0);
-#define MD5_STRUPDATE(str) OpenDaap_MD5Update(&ctx, str, strlen(str))
+#define MD5_STRUPDATE(str) OpenDaap_MD5Update(&ctx, (const unsigned char*)str, strlen(str))
if ((i & 0x80) != 0)
MD5_STRUPDATE("Accept-Language");
@@ -382,13 +382,13 @@
MD5_CTX ctx;
unsigned char *p = staticHash_45;
int i;
- char buf[16];
+ unsigned char buf[16];
for (i = 0; i < 256; i++)
{
OpenDaap_MD5Init(&ctx, 1);
-#define MD5_STRUPDATE(str) OpenDaap_MD5Update(&ctx, str, strlen(str))
+#define MD5_STRUPDATE(str) OpenDaap_MD5Update(&ctx, (const unsigned char*)str, strlen(str))
if ((i & 0x40) != 0)
MD5_STRUPDATE("eqwsdxcqwesdc");
@@ -439,15 +439,15 @@
}
static void rb_daap_hash_generate (short version_major,
- const guchar *url,
+ const gchar *url,
guchar hash_select,
- guchar *out,
+ gchar *out,
gint request_id)
{
- char buf[16];
+ unsigned char buf[16];
MD5_CTX ctx;
- char *hashTable = (version_major == 3) ?
+ unsigned char *hashTable = (version_major == 3) ?
staticHash_45 : staticHash_42;
if (!staticHashDone)
@@ -459,8 +459,8 @@
OpenDaap_MD5Init (&ctx, (version_major == 3) ? 1 : 0);
- OpenDaap_MD5Update (&ctx, url, strlen(url));
- OpenDaap_MD5Update (&ctx, appleCopyright, strlen (appleCopyright));
+ OpenDaap_MD5Update (&ctx, (const guchar*)url, strlen((const char*)url));
+ OpenDaap_MD5Update (&ctx, appleCopyright, strlen ((const char*)appleCopyright));
OpenDaap_MD5Update (&ctx, &hashTable[hash_select * 65], 32);
@@ -468,11 +468,11 @@
{
char scribble[20];
sprintf (scribble, "%u", request_id);
- OpenDaap_MD5Update (&ctx, scribble, strlen (scribble));
+ OpenDaap_MD5Update (&ctx, (const unsigned char*)scribble, strlen (scribble));
}
OpenDaap_MD5Final (&ctx, buf);
- DigestToString (buf, out);
+ DigestToString (buf, (guchar*)out);
return;
}
--- rhythmbox--daap-orig/sources/rb-daap-source.c 2005-08-09 20:21:03.000000000 +1000
+++ rhythmbox/sources/rb-daap-source.c 2005-08-09 21:03:28.000000000 +1000
@@ -276,7 +276,7 @@
NULL);
if (result != GNOME_VFS_OK) {
- g_warning ("Could not start listening for DAAP hosts");
+ g_warning ("Could not start listening for DAAP hosts, code %u", result);
return;
}
Attachment:
signature.asc
Description: This is a digitally signed message part