X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=sbr%2Fgetthreadid.c;h=abac78d74f2471c56c3049f7e30f460ee621e907;hb=HEAD;hp=99a7d67beb4db420331d7082c5c1a5d54bfbbcac;hpb=3ec7019fb0a1c08f1c866f0a84fa75fe5b498596;p=mmh diff --git a/sbr/getthreadid.c b/sbr/getthreadid.c index 99a7d67..abac78d 100644 --- a/sbr/getthreadid.c +++ b/sbr/getthreadid.c @@ -14,15 +14,17 @@ getthreadid(const char *path) enum state state = FLD2; FILE *file = fopen(path, "r"); - while (state == FLD2 && !msgid && !referens) { + while (state == FLD2 && !(msgid && referens)) { switch (state = m_getfld2(state, &f, file)) { case FLD2: if (strncasecmp("message-id", f.name, f.namelen)==0) { msgid = f.value; f.value = NULL; + f.alloclen = 0; } else if (strncasecmp("references", f.name, f.namelen)==0) { referens = f.value; f.value = NULL; + f.alloclen = 0; } break; default: @@ -47,10 +49,16 @@ threadid(char *msgid, char *referens) char *cp; threadfrom = referens ? referens : msgid; + if (!threadfrom) { + return NULL; + } start = strchr(threadfrom, '<'); + if (!start) { + return NULL; + } end = strchr(start, '>'); - if (!(*start) || !(*end)) { + if (!end) { return NULL; } *end = '\0';