When the pointer 'from' changes, it's stored length needs to change as well. Notified by Frank Kardel <kardel@acm.org> in PR 879.
diff --git a/crypto/conf/conf_def.c b/crypto/conf/conf_def.c index 0451be0..ba2a883 100644 --- a/crypto/conf/conf_def.c +++ b/crypto/conf/conf_def.c
@@ -632,6 +632,11 @@ BUF_MEM_grow_clean(buf,(strlen(p)+buf->length-(e-from))); while (*p) buf->data[to++]= *(p++); + + /* Since we change the pointer 'from', we also have + to change the perceived length of the string it + points at. /RL */ + len -= e-from; from=e; } else