summaryrefslogtreecommitdiffstats
path: root/net-im/gaim
diff options
context:
space:
mode:
authormarcus <marcus@FreeBSD.org>2002-11-23 23:56:10 +0000
committermarcus <marcus@FreeBSD.org>2002-11-23 23:56:10 +0000
commit1835e5aaa6e522026ceb33e3353896a65ebba5c2 (patch)
treede2f028478b3965fd281c13a647f7d9004fa8441 /net-im/gaim
parent343180327ec3be87e1290a44f48d697b571d4991 (diff)
downloadFreeBSD-ports-1835e5aaa6e522026ceb33e3353896a65ebba5c2.zip
FreeBSD-ports-1835e5aaa6e522026ceb33e3353896a65ebba5c2.tar.gz
Fix a segfault in the Yahoo protocol that can occur when a user receives
new email. Reported by: Kenneth W Cochran <kwc@TheWorld.com> Obtained from: gaim CVS
Diffstat (limited to 'net-im/gaim')
-rw-r--r--net-im/gaim/Makefile1
-rw-r--r--net-im/gaim/files/patch-src_protocols_yahoo_yahoo.c49
2 files changed, 50 insertions, 0 deletions
diff --git a/net-im/gaim/Makefile b/net-im/gaim/Makefile
index ad90915..2f440eb 100644
--- a/net-im/gaim/Makefile
+++ b/net-im/gaim/Makefile
@@ -7,6 +7,7 @@
PORTNAME= gaim
PORTVERSION= 0.59.6
+PORTREVISION= 1
CATEGORIES?= net
MASTER_SITES= ${MASTER_SITE_SOURCEFORGE}
MASTER_SITE_SUBDIR= ${PORTNAME}
diff --git a/net-im/gaim/files/patch-src_protocols_yahoo_yahoo.c b/net-im/gaim/files/patch-src_protocols_yahoo_yahoo.c
new file mode 100644
index 0000000..f538f5c
--- /dev/null
+++ b/net-im/gaim/files/patch-src_protocols_yahoo_yahoo.c
@@ -0,0 +1,49 @@
+This patch fixes a segfault that can occur when a Yahoo user receives new
+mail. This patch is from gaim CVS, and will be integrated in the next
+release.
+
+--- src/protocols/yahoo/yahoo.c 2002/11/12 00:50:21 1.43.2.7
++++ src/protocols/yahoo/yahoo.c 2002/11/23 18:50:47 1.43.2.8
+@@ -259,19 +259,20 @@
+ pair->key = strtol(key, NULL, 10);
+ accept = x; /* if x is 0 there was no key, so don't accept it */
+
+- if (accept)
++ if (len - pos + 1 <= 0) {
++ /* Truncated. Garbage or something. */
++ accept = 0;
++ }
++
++ if (accept) {
+ value = g_malloc(len - pos + 1);
+- x = 0;
+- while (pos + 1 < len) {
+- if (data[pos] == 0xc0 && data[pos + 1] == 0x80)
+- break;
+- if (accept)
++ x = 0;
++ while (pos + 1 < len) {
++ if (data[pos] == 0xc0 && data[pos + 1] == 0x80)
++ break;
+ value[x++] = data[pos++];
+- }
+- if (accept)
++ }
+ value[x] = 0;
+- pos += 2;
+- if (accept) {
+ pair->value = g_strdup(value);
+ g_free(value);
+ pkt->hash = g_slist_append(pkt->hash, pair);
+@@ -279,6 +280,11 @@
+ } else {
+ g_free(pair);
+ }
++ pos += 2;
++
++ /* Skip over garbage we've noticed in the mail notifications */
++ if (data[0] == '9' && data[pos] == 0x01)
++ pos++;
+ }
+ }
+
OpenPOWER on IntegriCloud