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);