Hello!

This patch for 3.2.x fixes indexer crashes when 
ServerTable is used.

Regards.
Index: sql.c
===================================================================
RCS file: /usr/src/CVS/mnogosearch32/src/sql.c,v
retrieving revision 1.110
diff -u -r1.110 sql.c
--- sql.c       2001/10/01 20:12:32     1.110
+++ sql.c       2001/10/05 14:51:19
@@ -2850,6 +2850,18 @@
 }
 /************* Servers ******************************************/
 
+static char * strdupnull(const char * src){
+       if(src){
+               if(*src){
+                       return(strdup(src));
+               }else{
+                       return NULL;
+               }
+       }else{
+               return NULL;
+       }
+}
+
 int UdmLoadServerTable(UDM_AGENT * Indexer, char * name, int flags){
        size_t rows,i;
        UDM_SERVER Server;
@@ -2875,13 +2887,13 @@
        for(i=0;i<rows;i++){
                UdmInitServer(&Server);
 
-               Server.url              =strdup(UDM_EMPTY2NULL(UdmSQLValue(res,i,1)));
+               Server.url              =strdupnull(UdmSQLValue(res,i,1));
                Server.period           =UDM_ATOI(UdmSQLValue(res,i,2));
-               Server.tag              =strdup(UDM_EMPTY2NULL(UdmSQLValue(res,i,3)));
-               Server.category         =strdup(UDM_EMPTY2NULL(UdmSQLValue(res,i,4)));
-               Server.charset          =strdup(UDM_EMPTY2NULL(UdmSQLValue(res,i,5)));
-               Server.lang             =strdup(UDM_NULL2EMPTY(UdmSQLValue(res,i,6)));
-               Server.basic_auth       =strdup(UDM_NULL2EMPTY(UdmSQLValue(res,i,7)));
+               Server.tag              =strdupnull(UdmSQLValue(res,i,3));
+               Server.category         =strdupnull(UdmSQLValue(res,i,4));
+               Server.charset          =strdupnull(UdmSQLValue(res,i,5));
+               Server.lang             =strdupnull(UdmSQLValue(res,i,6));
+               Server.basic_auth       =strdupnull(UdmSQLValue(res,i,7));
                
                if(Server.basic_auth){
                        char * basic_auth;
@@ -2891,9 +2903,9 @@
                        Server.basic_auth=basic_auth;
                }
 
-               Server.proxy            =strdup(UDM_EMPTY2NULL(UdmSQLValue(res,i,8)));
+               Server.proxy            =strdupnull(UdmSQLValue(res,i,8));
                Server.proxy_port       =UDM_ATOI(UdmSQLValue(res,i,9));
-               Server.proxy_basic_auth =strdup(UDM_EMPTY2NULL(UdmSQLValue(res,i,10)));
+               Server.proxy_basic_auth =strdupnull(UdmSQLValue(res,i,10));
                Server.maxhops          =UDM_ATOI(UdmSQLValue(res,i,11));
                Server.index            =UDM_ATOI(UdmSQLValue(res,i,12));
                Server.follow           =UDM_ATOI(UdmSQLValue(res,i,13));

Reply via email to