I found another bug.  It has to do with parseurl().  What happened is that
if there is an error, parseurl() will call freeurl(url) then return(1).  
However, two places in indexer.c will then call freeurl(url) again after
getting a 1 return from parseurl().

According to man page, free() of a pointer that was previously freed is
"undefined behavior".  Well, on Linux RH 6.1, glibc 2.1.2, it core dumped.

Here's the patch:

*** indexer.c   Mon Dec  6 00:06:14 1999
--- indexer.c.new       Mon Dec  6 23:06:32 1999
***************
*** 1083,1089 ****
                if (parseurl(&curURL, cururl)) {
                DeleteUrl(url_id);
                udm_log(WARNING, "Invalid URL: %s ... deleted", cururl);
-               freeurl(&curURL);
                continue;
                }
                if ((i = FindServer(cururl)) < 0) {
--- 1083,1088 ----
***************
*** 1171,1177 ****
                                if (parseurl(&realURL, str1)) {
                                udm_log(UDM_LOG_ERROR, "Error in aliased
URL: '%
s'",
                                str1);
-                               freeurl(&curURL);
                                continue;
                                }
                                break;
--- 1170,1175 ----


Tin Le

______________
If you want to unsubscribe send "unsubscribe udmsearch"
to [EMAIL PROTECTED]

Reply via email to