Mercurial > pidgin.yaz
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); |