diff --git a/libgeminiclient.c b/libgeminiclient.c index d9c4e71..4297b94 100644 --- a/libgeminiclient.c +++ b/libgeminiclient.c @@ -337,10 +337,15 @@ gemini_read(struct gemini *g, void *b, size_t bs) break; } if (g->metalen > 0 && - g->meta[g->metalen - 1] == '\r') + g->meta[g->metalen - 1] == '\r') { g->metalen--; - else if (g->flags & GEMINI_STRICT) - goto errinval; + } else if (g->flags & GEMINI_STRICT) { + if (g->metalen == GEMINI_META_MAX) + goto errinval; + g->meta[g->metalen++] = '\n'; + i = j + 1; + break; + } if (g->metalen > GEMINI_META_MAX) goto errinval; g->meta[g->metalen] = '\0';