Change a comment so it corresponds to reality. Put back a character that
authorRichard Levitte <levitte@openssl.org>
Wed, 28 Sep 2005 18:02:41 +0000 (18:02 +0000)
committerRichard Levitte <levitte@openssl.org>
Wed, 28 Sep 2005 18:02:41 +0000 (18:02 +0000)
was previously replaced with a NUL for parsing purposes.  This seems to
fix a very weird parsing bug involving two variable references in the same
value.

crypto/conf/conf_def.c

index 996a0999ac04a3562a87c35a0db7c76c019cf609..8083a009d71a27c9b11fc4564b305f9a15b2872b 100644 (file)
@@ -613,13 +613,13 @@ static int str_copy(CONF *conf, char *section, char **pto, char *from)
                                e++;
                                }
                        /* So at this point we have
                                e++;
                                }
                        /* So at this point we have
-                        * ns which is the start of the name string which is
+                        * np which is the start of the name string which is
                         *   '\0' terminated. 
                         *   '\0' terminated. 
-                        * cs which is the start of the section string which is
+                        * cp which is the start of the section string which is
                         *   '\0' terminated.
                         * e is the 'next point after'.
                         *   '\0' terminated.
                         * e is the 'next point after'.
-                        * r and s are the chars replaced by the '\0'
-                        * rp and sp is where 'r' and 's' came from.
+                        * r and rr are the chars replaced by the '\0'
+                        * rp and rrp is where 'r' and 'rr' came from.
                         */
                        p=_CONF_get_string(conf,cp,np);
                        if (rrp != NULL) *rrp=rr;
                         */
                        p=_CONF_get_string(conf,cp,np);
                        if (rrp != NULL) *rrp=rr;
@@ -638,6 +638,11 @@ static int str_copy(CONF *conf, char *section, char **pto, char *from)
                           points at.  /RL */
                        len -= e-from;
                        from=e;
                           points at.  /RL */
                        len -= e-from;
                        from=e;
+
+                       /* In case there were no braces or parenthesis around
+                          the variable reference, we have to put back the
+                          character that was replaced with a '\0'.  /RL */
+                       *rp = r;
                        }
                else
                        buf->data[to++]= *(from++);
                        }
                else
                        buf->data[to++]= *(from++);