Handle last lines that aren't properly terminated.
authorRichard Levitte <levitte@openssl.org>
Thu, 14 Nov 2002 06:49:45 +0000 (06:49 +0000)
committerRichard Levitte <levitte@openssl.org>
Thu, 14 Nov 2002 06:49:45 +0000 (06:49 +0000)
PR: 308

CHANGES
crypto/conf/conf_def.c

diff --git a/CHANGES b/CHANGES
index 0adfcaa9707a3be7fc2656693c8f07bfb8b1487c..cabad0f066bd91993d6a9c97630165e800d100a8 100644 (file)
--- 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.
index d43c9de3f5f0726dce53b22cbd804045f36ae2b4..adc28eebff130e08baa32a410554c6562828192c 100644 (file)
@@ -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
                        {