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));