Mercurial > pidgin
comparison src/protocols/msn/msg.c @ 5315:b1c430fbf9d5
[gaim-migrate @ 5687]
Message bodies without a trailing newline will now be parsed for key: value
pairs without segfaults and buffer overruns.
committer: Tailor Script <tailor@pidgin.im>
| author | Christian Hammond <chipx86@chipx86.com> |
|---|---|
| date | Tue, 06 May 2003 08:53:52 +0000 |
| parents | f4912a833ff6 |
| children | c6efac0e28ff |
comparison
equal
deleted
inserted
replaced
| 5314:1f901484599d | 5315:b1c430fbf9d5 |
|---|---|
| 23 #include "msg.h" | 23 #include "msg.h" |
| 24 | 24 |
| 25 #define GET_NEXT(tmp) \ | 25 #define GET_NEXT(tmp) \ |
| 26 while (*(tmp) && *(tmp) != ' ' && *(tmp) != '\r') \ | 26 while (*(tmp) && *(tmp) != ' ' && *(tmp) != '\r') \ |
| 27 (tmp)++; \ | 27 (tmp)++; \ |
| 28 *(tmp)++ = '\0'; \ | 28 if (*(tmp) != '\0') *(tmp)++ = '\0'; \ |
| 29 if (*(tmp) == '\n') *(tmp)++; \ | 29 if (*(tmp) == '\n') *(tmp)++; \ |
| 30 while (*(tmp) && *(tmp) == ' ') \ | 30 while (*(tmp) && *(tmp) == ' ') \ |
| 31 (tmp)++ | 31 (tmp)++ |
| 32 | 32 |
| 33 #define GET_NEXT_LINE(tmp) \ | 33 #define GET_NEXT_LINE(tmp) \ |
| 34 while (*(tmp) && *(tmp) != '\r') \ | 34 while (*(tmp) && *(tmp) != '\r') \ |
| 35 (tmp)++; \ | 35 (tmp)++; \ |
| 36 *(tmp)++ = '\0'; \ | 36 if (*(tmp) != '\0') *(tmp)++ = '\0'; \ |
| 37 if (*(tmp) == '\n') *(tmp)++ | 37 if (*(tmp) == '\n') *(tmp)++ |
| 38 | 38 |
| 39 /* | 39 /* |
| 40 * "MIME-Version: 1.0\r\n" == 19 | 40 * "MIME-Version: 1.0\r\n" == 19 |
| 41 * "Content-Type: " == 14 | 41 * "Content-Type: " == 14 |
| 499 | 499 |
| 500 s = body = g_strdup(msn_message_get_body(msg)); | 500 s = body = g_strdup(msn_message_get_body(msg)); |
| 501 | 501 |
| 502 table = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); | 502 table = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); |
| 503 | 503 |
| 504 while (*s != '\r') { | 504 while (*s != '\r' && *s != '\0') { |
| 505 char *key, *value; | 505 char *key, *value; |
| 506 | 506 |
| 507 key = s; | 507 key = s; |
| 508 | 508 |
| 509 GET_NEXT(s); | 509 GET_NEXT(s); |
