--- a/src/protocols/msn/utils.c Fri Jul 29 20:31:39 2005 -0400
+++ b/src/protocols/msn/utils.c Sun Jul 31 11:21:02 2005 -0400
@@ -221,22 +221,24 @@
if (!g_ascii_strncasecmp(c, "mailto:", 7))
- while (g_ascii_strncasecmp(c, "\">", 2))
+ while ((*c != '\0') && g_ascii_strncasecmp(c, "\">", 2))
/* ignore descriptive string */
- while (g_ascii_strncasecmp(c, "</a>", 4))
+ while ((*c != '\0') && g_ascii_strncasecmp(c, "</a>", 4))
else if (!g_ascii_strncasecmp(c + 1, "font", 4))
- while (!g_ascii_strncasecmp(c, " ", 1))
+ while ((*c != '\0') && !g_ascii_strncasecmp(c, " ", 1)) if (!g_ascii_strncasecmp(c, "color=\"#", 7))
@@ -273,18 +275,19 @@
/* Drop all unrecognized/misparsed font tags */
- while (g_ascii_strncasecmp(c, "\">", 2))
+ while ((*c != '\0') && g_ascii_strncasecmp(c, "\">", 2))
- while (g_ascii_strncasecmp(c, ">", 1))
+ while ((*c != '\0') && (*c != '>'))
--- a/src/protocols/zephyr/zephyr.c Fri Jul 29 20:31:39 2005 -0400
+++ b/src/protocols/zephyr/zephyr.c Sun Jul 31 11:21:02 2005 -0400
@@ -379,58 +379,64 @@
} else if (!g_ascii_strncasecmp(message + cnt + 1, "a href=\"mailto:", 15)) {
- while (g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) {
+ while ((message[cnt] != '\0') && g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) { ret[retcount] = message[cnt];
+ if (message[cnt] != '\0') /* ignore descriptive string */
- while (g_ascii_strncasecmp(message + cnt, "</a>", 4) != 0) {
+ while ((message[cnt] != '\0') && g_ascii_strncasecmp(message + cnt, "</a>", 4) != 0) {
+ if (message[cnt] != '\0') } else if (!g_ascii_strncasecmp(message + cnt + 1, "a href=\"", 8)) {
- while (g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) {
+ while ((message[cnt] != '\0') && g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) { ret[retcount] = message[cnt];
+ if (message[cnt] != '\0') /* ignore descriptive string */
- while (g_ascii_strncasecmp(message + cnt, "</a>", 4) != 0) {
+ while ((message[cnt] != '\0') && g_ascii_strncasecmp(message + cnt, "</a>", 4) != 0) {
+ if (message[cnt] != '\0') } else if (!g_ascii_strncasecmp(message + cnt + 1, "font", 4)) {
- while (!g_ascii_strncasecmp(message + cnt, " ", 1))
+ while ((message[cnt] != '\0') && (message[cnt] != ' ')) - if (!g_ascii_strncasecmp(message + cnt, "color=\"", 7)) {
+ if ((message[cnt] != '\0') && !g_ascii_strncasecmp(message + cnt, "color=\"", 7)) { strncpy(ret + retcount, "@color(", 7);
- while (g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) {
+ while ((message[cnt] != '\0') && g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) { ret[retcount] = message[cnt];
+ if (message[cnt] != '\0') } else if (!g_ascii_strncasecmp(message + cnt, "face=\"", 6)) {
strncpy(ret + retcount, "@font(", 6);
- while (g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) {
+ while ((message[cnt] != '\0') && g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) { ret[retcount] = message[cnt];
+ if (message[cnt] != '\0') } else if (!g_ascii_strncasecmp(message + cnt, "size=\"", 6)) {
if ((message[cnt] == '1') || (message[cnt] == '2')) {
@@ -449,10 +455,11 @@
/* Drop all unrecognized/misparsed font tags */
- while (g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) {
+ while ((message[cnt] != '\0') && g_ascii_strncasecmp(message + cnt, "\">", 2) != 0) {
+ if (message[cnt] != '\0') } else if (!g_ascii_strncasecmp(message + cnt + 1, "/i>", 3)
|| !g_ascii_strncasecmp(message + cnt + 1, "/b>", 3)) {
@@ -465,7 +472,7 @@
/* Catch all for all unrecognized/misparsed <foo> tage */
- while (g_ascii_strncasecmp(message + cnt, ">", 1) != 0) {
+ while ((message[cnt] != '\0') && (message[cnt] != '>')) { ret[retcount] = message[cnt];
--- a/src/util.c Fri Jul 29 20:31:39 2005 -0400
+++ b/src/util.c Sun Jul 31 11:21:02 2005 -0400
@@ -1614,7 +1614,9 @@
/* iterate backwards grabbing the local part of an email address */
if (badchar(*t) || (g >= 127) || (*t == '(') ||
- ((*t == ';') && (t > (text+2)) && !g_ascii_strncasecmp(t - 3, "<", 4))) {
+ ((*t == ';') && ((t > (text+2) && (!g_ascii_strncasecmp(t - 3, "<", 4) || + !g_ascii_strncasecmp(t - 3, ">", 4))) || + (t > (text+4) && (!g_ascii_strncasecmp(t - 5, """, 6)))))) { /* local part will already be part of ret, strip it out */
ret = g_string_truncate(ret, ret->len - (c - t));
ret = g_string_append_unichar(ret, g);