From: Richard Levitte Date: Thu, 14 Nov 2002 06:49:45 +0000 (+0000) Subject: Handle last lines that aren't properly terminated. X-Git-Tag: OpenSSL_0_9_6h~46 X-Git-Url: https://git.librecmc.org/?a=commitdiff_plain;h=8df1de4e89acfe9d2f5893ae6be7611a3f5b544c;p=oweals%2Fopenssl.git Handle last lines that aren't properly terminated. PR: 308 --- diff --git a/CHANGES b/CHANGES index 0adfcaa970..cabad0f066 100644 --- a/CHANGES +++ b/CHANGES @@ -4,6 +4,10 @@ Changes between 0.9.6g and 0.9.6h [xx XXX xxxx] + *) Change the default configuration reader to deal with last line not + being properly terminated. + [Richard Levitte] + *) Change X509_NAME_cmp() so it applies the special rules on handling DN values that are of type PrintableString, as well as RDNs of type emailAddress where the value has the type ia5String. diff --git a/crypto/conf/conf_def.c b/crypto/conf/conf_def.c index d43c9de3f5..adc28eebff 100644 --- a/crypto/conf/conf_def.c +++ b/crypto/conf/conf_def.c @@ -224,9 +224,9 @@ static int def_load(CONF *conf, BIO *in, long *line) section_sk=(STACK_OF(CONF_VALUE) *)sv->value; bufnum=0; + again=0; for (;;) { - again=0; if (!BUF_MEM_grow(buff,bufnum+BUFSIZE)) { CONFerr(CONF_F_CONF_LOAD_BIO,ERR_R_BUF_LIB); @@ -237,7 +237,8 @@ static int def_load(CONF *conf, BIO *in, long *line) BIO_gets(in, p, BUFSIZE-1); p[BUFSIZE-1]='\0'; ii=i=strlen(p); - if (i == 0) break; + if (i == 0 && !again) break; + again=0; while (i > 0) { if ((p[i-1] != '\r') && (p[i-1] != '\n')) @@ -247,7 +248,7 @@ static int def_load(CONF *conf, BIO *in, long *line) } /* we removed some trailing stuff so there is a new * line on the end. */ - if (i == ii) + if (ii && i == ii) again=1; /* long line */ else {