Index: ../ircu2.10.06/CAMBIOS =================================================================== RCS file: /cvsroot/ircd/CAMBIOS,v retrieving revision 1.24 retrieving revision 1.25 diff -c -r1.24 -r1.25 *** ../ircu2.10.06/CAMBIOS 1999/11/11 13:21:57 1.24 --- ../ircu2.10.06/CAMBIOS 1999/11/11 13:51:02 1.25 *************** *** 1,3 **** --- 1,10 ---- + * 1999/11/11 savage@apostols.org (patch.db51) FIX + ----------------------------------------------------------------------- + Cambiados todos los 'unsigned long' de s_bdd.c a 'unsigned int', pues + en realidad solo necesitamos u_int32_t, y usando 'unsigned long' tenwmos + problemas en arquitecturas de 64 bits. Los mismos cambios en las + funciones que llamaban a tea() en s_user.c + * 1999/11/11 savage@apostols.org (patch.vip4) FIX ----------------------------------------------------------------------- Segun lo decidido, se cambia el algoritmo de criptación de direcciones Index: ../ircu2.10.06/include/s_bdd.h =================================================================== RCS file: /cvsroot/ircd/include/s_bdd.h,v retrieving revision 1.7 retrieving revision 1.8 diff -c -r1.7 -r1.8 *** ../ircu2.10.06/include/s_bdd.h 1999/10/27 12:38:36 1.7 --- ../ircu2.10.06/include/s_bdd.h 1999/11/11 13:51:02 1.8 *************** *** 25,31 **** #ifdef DB_ESNET struct DB_nick { char nick[8 * ((NICKLEN + 8) / 8)]; /* El +8 es para que siempre sea multiplo entero de 8 */ ! unsigned long clave[2]; struct DB_nick *siguiente; }; #endif /* DB_ESNET */ --- 25,31 ---- #ifdef DB_ESNET struct DB_nick { char nick[8 * ((NICKLEN + 8) / 8)]; /* El +8 es para que siempre sea multiplo entero de 8 */ ! unsigned int clave[2]; struct DB_nick *siguiente; }; #endif /* DB_ESNET */ *************** *** 50,56 **** struct tabla_en_memoria { char *posicion; ! unsigned long len; char *puntero_r; char *puntero_w; }; --- 50,56 ---- struct tabla_en_memoria { char *posicion; ! unsigned int len; char *puntero_r; char *puntero_w; }; *************** *** 64,70 **** #endif /* DB_ESNET || DB_HISPANO */ #ifdef DB_ESNET ! extern unsigned long db_num_serie_local; extern void reload_db(void); extern void initdb(void); struct DB_nick *find_db_nick(char *nick); --- 64,70 ---- #endif /* DB_ESNET || DB_HISPANO */ #ifdef DB_ESNET ! extern unsigned int db_num_serie_local; extern void reload_db(void); extern void initdb(void); struct DB_nick *find_db_nick(char *nick); *************** *** 73,83 **** #if defined(DB_ESNET) || defined(DB_HISPANO) extern int tabla_residente[DBH_MAX_TABLA]; ! extern unsigned long tabla_cuantos[DBH_MAX_TABLA]; extern struct dbh_reg *tabla_datos[DBH_MAX_TABLA][DBH_HASH_SIZE]; ! extern unsigned long tabla_serie[DBH_MAX_TABLA]; ! extern void tea(unsigned long v[], unsigned long k[], unsigned long x[]); extern struct dbh_reg *dbh_buscar_registro(char tabla, char *clave); int dbh_es_miembro(char tabla, char *clave, char *subcadena); #endif --- 73,83 ---- #if defined(DB_ESNET) || defined(DB_HISPANO) extern int tabla_residente[DBH_MAX_TABLA]; ! extern unsigned int tabla_cuantos[DBH_MAX_TABLA]; extern struct dbh_reg *tabla_datos[DBH_MAX_TABLA][DBH_HASH_SIZE]; ! extern unsigned int tabla_serie[DBH_MAX_TABLA]; ! extern void tea(unsigned int v[], unsigned int k[], unsigned int x[]); extern struct dbh_reg *dbh_buscar_registro(char tabla, char *clave); int dbh_es_miembro(char tabla, char *clave, char *subcadena); #endif Index: ../ircu2.10.06/ircd/s_bdd.c =================================================================== RCS file: /cvsroot/ircd/ircd/s_bdd.c,v retrieving revision 1.14 retrieving revision 1.15 diff -c -r1.14 -r1.15 *** ../ircu2.10.06/ircd/s_bdd.c 1999/11/02 20:52:04 1.14 --- ../ircu2.10.06/ircd/s_bdd.c 1999/11/11 13:51:02 1.15 *************** *** 58,69 **** * Las tablas con los registros, serie, version ... */ int tabla_residente[DBH_MAX_TABLA]; ! unsigned long tabla_cuantos[DBH_MAX_TABLA]; struct dbh_reg *tabla_datos[DBH_MAX_TABLA][DBH_HASH_SIZE]; ! unsigned long tabla_version[DBH_MAX_TABLA]; ! unsigned long tabla_serie[DBH_MAX_TABLA]; ! unsigned long tabla_hash_hi[DBH_MAX_TABLA]; ! unsigned long tabla_hash_lo[DBH_MAX_TABLA]; #endif /* DB_ESNET || DB_HISPANO */ --- 58,69 ---- * Las tablas con los registros, serie, version ... */ int tabla_residente[DBH_MAX_TABLA]; ! unsigned int tabla_cuantos[DBH_MAX_TABLA]; struct dbh_reg *tabla_datos[DBH_MAX_TABLA][DBH_HASH_SIZE]; ! unsigned int tabla_version[DBH_MAX_TABLA]; ! unsigned int tabla_serie[DBH_MAX_TABLA]; ! unsigned int tabla_hash_hi[DBH_MAX_TABLA]; ! unsigned int tabla_hash_lo[DBH_MAX_TABLA]; #endif /* DB_ESNET || DB_HISPANO */ *************** *** 75,85 **** * Se cifra v[0]^x[0], v[1]^x[1], para poder hacer CBC facilmente. * */ ! void tea(unsigned long v[], unsigned long k[], unsigned long x[]) { ! unsigned long y = v[0] ^ x[0], z = v[1] ^ x[1], sum = 0, delta = 0x9E3779B9; ! unsigned long a = k[0], b = k[1], n = 32; ! unsigned long c = 0, d = 0; while (n-- > 0) { --- 75,85 ---- * Se cifra v[0]^x[0], v[1]^x[1], para poder hacer CBC facilmente. * */ ! void tea(unsigned int v[], unsigned int k[], unsigned int x[]) { ! unsigned int y = v[0] ^ x[0], z = v[1] ^ x[1], sum = 0, delta = 0x9E3779B9; ! unsigned int a = k[0], b = k[1], n = 32; ! unsigned int c = 0, d = 0; while (n-- > 0) { *************** *** 94,102 **** void actualiza_hash(char *registro, char que_bdd) { ! unsigned long buffer[129 * sizeof(unsigned long)]; ! unsigned long *p = buffer; ! unsigned long x[2], v[2], k[2]; char *p2; /* --- 94,102 ---- void actualiza_hash(char *registro, char que_bdd) { ! unsigned int buffer[129 * sizeof(unsigned int)]; ! unsigned int *p = buffer; ! unsigned int x[2], v[2], k[2]; char *p2; /* *************** *** 395,404 **** /* ** Seek por bidivision */ ! int seek_db(struct tabla_en_memoria *mapeo, char *buf, unsigned long registro) { char *p, *p2, *plo, *phi; ! unsigned long v; /* ** Este caso especial es lo bastante --- 395,404 ---- /* ** Seek por bidivision */ ! int seek_db(struct tabla_en_memoria *mapeo, char *buf, unsigned int registro) { char *p, *p2, *plo, *phi; ! unsigned int v; /* ** Este caso especial es lo bastante *************** *** 450,456 **** * Se mueve hasta un registro de la base de datos * */ ! int abrir_db(unsigned long registro, char *buf, char que_bdd, struct tabla_en_memoria *mapeo) { int handle; --- 450,456 ---- * Se mueve hasta un registro de la base de datos * */ ! int abrir_db(unsigned int registro, char *buf, char que_bdd, struct tabla_en_memoria *mapeo) { int handle; *************** *** 525,531 **** /* ** lee_hash */ ! void lee_hash(char que_bdd, unsigned long *hi, unsigned long *lo) { char path[1024]; char c; --- 525,531 ---- /* ** lee_hash */ ! void lee_hash(char que_bdd, unsigned int *hi, unsigned int *lo) { char path[1024]; char c; *************** *** 605,611 **** char *lectura, *escritura, *p; char *clave, *valor; char c; ! unsigned long len, len2; struct stat estado; struct dbh_reg *reg; --- 605,611 ---- char *lectura, *escritura, *p; char *clave, *valor; char c; ! unsigned int len, len2; struct stat estado; struct dbh_reg *reg; *************** *** 801,807 **** */ void initdb2(char que_bdd) { ! unsigned long hi, lo; char buf[1024]; char path[1024]; int db_file; --- 801,807 ---- */ void initdb2(char que_bdd) { ! unsigned int hi, lo; char buf[1024]; char path[1024]; int db_file; *************** *** 966,972 **** */ int m_db(aClient *cptr, aClient *sptr, int parc, char *parv[]) { ! unsigned long db; aClient *acptr; Dlink *lp; char db_buf[1024], db_buf2[1024]; --- 966,972 ---- */ int m_db(aClient *cptr, aClient *sptr, int parc, char *parv[]) { ! unsigned int db; aClient *acptr; Dlink *lp; char db_buf[1024], db_buf2[1024]; *************** *** 975,981 **** int es_hub = 0; char *p, *p2, *p3, *p4; char que_bdd = ESNET_NICKDB; ! unsigned long mascara_bdd; int cont; struct tabla_en_memoria mapeo; if (!IsServer(sptr) || parc < 5) --- 975,981 ---- int es_hub = 0; char *p, *p2, *p3, *p4; char que_bdd = ESNET_NICKDB; ! unsigned int mascara_bdd; int cont; struct tabla_en_memoria mapeo; if (!IsServer(sptr) || parc < 5) *************** *** 995,1001 **** else que_bdd = ESNET_NICKDB; } ! mascara_bdd = ((unsigned long)1) << (que_bdd - ESNET_BDD); switch (*parv[3]) { case 'B': --- 995,1001 ---- else que_bdd = ESNET_NICKDB; } ! mascara_bdd = ((unsigned int)1) << (que_bdd - ESNET_BDD); switch (*parv[3]) { case 'B': *************** *** 1196,1202 **** return 0; } ! mascara_bdd = ((unsigned long)1) << (que_bdd - ESNET_BDD); if (db <= tabla_serie[que_bdd]) return 0; if (!es_hub) --- 1196,1202 ---- return 0; } ! mascara_bdd = ((unsigned int)1) << (que_bdd - ESNET_BDD); if (db <= tabla_serie[que_bdd]) return 0; if (!es_hub) Index: ../ircu2.10.06/ircd/s_debug.c =================================================================== RCS file: /cvsroot/ircd/ircd/s_debug.c,v retrieving revision 1.75 retrieving revision 1.76 diff -c -r1.75 -r1.76 *** ../ircu2.10.06/ircd/s_debug.c 1999/11/11 13:21:57 1.75 --- ../ircu2.10.06/ircd/s_debug.c 1999/11/11 13:51:02 1.76 *************** *** 191,197 **** '-', #endif #endif ! 'D','B','5','0', #ifdef DB_ESNET '+', #else --- 191,197 ---- '-', #endif #endif ! 'D','B','5','1', #ifdef DB_ESNET '+', #else Index: ../ircu2.10.06/ircd/s_user.c =================================================================== RCS file: /cvsroot/ircd/ircd/s_user.c,v retrieving revision 1.30 retrieving revision 1.31 diff -c -r1.30 -r1.31 *** ../ircu2.10.06/ircd/s_user.c 1999/11/11 13:21:57 1.30 --- ../ircu2.10.06/ircd/s_user.c 1999/11/11 13:51:02 1.31 *************** *** 1104,1116 **** * el usuario es local y no esta haciendo nick flood. */ if ((reg || regt) && (now >= cptr->nextnick)) ! { /* El nick indicado esta registrado */ ! unsigned long v[2], k[2], x[2]; int cont = (NICKLEN + 8) / 8; char tmpnick[8 * ((NICKLEN + 8) / 8) + 1]; char tmppass[12 + 1]; ! unsigned long *p = (unsigned long *)tmpnick; ! unsigned long numpass[2]; int legal = 1; char *nombre; char tmp; --- 1104,1117 ---- * el usuario es local y no esta haciendo nick flood. */ if ((reg || regt) && (now >= cptr->nextnick)) ! { ! /* El nick indicado esta registrado */ ! unsigned int v[2], k[2], x[2]; int cont = (NICKLEN + 8) / 8; char tmpnick[8 * ((NICKLEN + 8) / 8) + 1]; char tmppass[12 + 1]; ! unsigned int *p = (unsigned int *)tmpnick; /* int == 32bits */ ! unsigned int numpass[2]; int legal = 1; char *nombre; char tmp; *************** *** 1156,1163 **** while (cont--) { ! v[0] = ntohl(*p++); ! v[1] = ntohl(*p++); tea(v, k, x); } --- 1157,1164 ---- while (cont--) { ! v[0] = ntohl(*p++); /* 32 bits */ ! v[1] = ntohl(*p++); /* 32 bits */ tea(v, k, x); } *************** *** 3432,3438 **** void make_virtualhost(aClient *acptr) { struct dbh_reg *reg; ! unsigned long v[2], k[2], x[2]; int cont = (NICKLEN + 8) / 8, ts = 0; char clave[12 + 1]; --- 3433,3439 ---- void make_virtualhost(aClient *acptr) { struct dbh_reg *reg; ! unsigned int v[2], k[2], x[2]; int cont = (NICKLEN + 8) / 8, ts = 0; char clave[12 + 1];