pidgin/ljfisher-ssl-client-auth

Parents da742b7e1303
Children dbf62554913d
log_reader: strchr(), and some simplifying to make clang happier

Clang's static analyzer thought 'line' might result in a null deref
in the trillian log reader, if there was an empty "(Link: )" section
(temp would be NULL), except that couldn't ever happen, because the data
was *always* \n-terminated, so 'c' is alway non-NULL.
--- a/libpurple/plugins/log_reader.c Wed Jul 20 16:51:55 2011 +0000
+++ b/libpurple/plugins/log_reader.c Thu Jul 21 05:36:54 2011 +0000
@@ -1454,11 +1454,10 @@
const char *footer = NULL;
GString *temp = NULL;
- if ((c = strstr(c, "\n")))
- {
- *c = '\0';
- c++;
- }
+ /* The data is always terminated with a newline (see above) */
+ c = strchr(c, '\n');
+ *c = '\0';
+ c++;
/* Convert links.
*
@@ -1482,14 +1481,14 @@
char *end_paren;
char *space;
- if (!(end_paren = strstr(link, ")")))
+ if (!(end_paren = strchr(link, ')')))
{
/* Something is not as we expect. Bail out. */
break;
}
if (!temp)
- temp = g_string_sized_new(c ? (c - 1 - line) : strlen(line));
+ temp = g_string_sized_new(strlen(line));
g_string_append_len(temp, line, (tmp - line));
@@ -1504,7 +1503,7 @@
/* The \r is a bit of a hack to keep there from being a \r in
* the link text, which may not matter. */
- if ((space = strstr(end_paren, " ")) || (space = strstr(end_paren, "\r")))
+ if ((space = strchr(end_paren, ' ')) || (space = strchr(end_paren, '\r')))
{
g_string_append_len(temp, end_paren + 1, space - end_paren - 1);
@@ -1539,7 +1538,7 @@
if (*line == '[') {
const char *timestamp;
- if ((timestamp = strstr(line, "]"))) {
+ if ((timestamp = strchr(line, ']'))) {
line++;
/* TODO: Parse the timestamp and convert it to Purple's format. */
g_string_append(formatted, "<font size=\"2\">(");
@@ -1658,7 +1657,7 @@
}
}
} else {
- const char *line2 = strstr(line, ":");
+ const char *line2 = strchr(line, ':');
if (line2) {
const char *acct_name;
line2++;
@@ -1828,11 +1827,11 @@
new_line = c;
/* find EOL */
- c = strstr(c, "\n");
+ c = strchr(c, '\n');
c++;
/* Find the last '(' character. */
- if ((tmp = strstr(c, "\n")) != NULL) {
+ if ((tmp = strchr(c, '\n')) != NULL) {
while (*tmp && *tmp != '(') --tmp;
c = tmp;
} else {
@@ -1904,7 +1903,7 @@
if (*c) {
/* find EOF */
- c = strstr(c, "\n");
+ c = strchr(c, '\n');
c++;
}
}
@@ -1983,13 +1982,13 @@
is_in_message = purple_str_has_prefix(line, QIP_LOG_IN_MESSAGE_ESC);
/* find EOL */
- c = strstr(c, "\n");
+ c = strchr(c, '\n');
/* XXX: Do we need buddy_name when we have buddy->alias? */
buddy_name = ++c;
/* Find the last '(' character. */
- if ((tmp = strstr(c, "\n")) != NULL) {
+ if ((tmp = strchr(c, '\n')) != NULL) {
while (*tmp && *tmp != '(') --tmp;
c = tmp;
} else {
@@ -2042,12 +2041,12 @@
}
/* find EOF */
- c = strstr(c, "\n");
+ c = strchr(c, '\n');
line = ++c;
}
}
} else {
- if ((c = strstr(c, "\n")))
+ if ((c = strchr(c, '\n')))
*c = '\0';
if (line[0] != '\n' && line[0] != '\r') {
@@ -2186,7 +2185,7 @@
" length = (%d)\n",
sn, data->path, data->offset, data->length);
}
- c = strstr(c, "\n");
+ c = strchr(c, '\n');
c++;
}
@@ -2342,7 +2341,7 @@
char *end;
char *old_tag;
char *tag;
- end = strstr(start, "\n");
+ end = strchr(start, '\n');
if (!end)
break;
*end = '\0';