View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0002298 | unreal | ircd | public | 2005-01-22 00:55 | 2005-02-03 19:53 |
Reporter | Stealth | Assigned To | syzop | ||
Priority | normal | Severity | minor | Reproducibility | have not tried |
Status | resolved | Resolution | fixed | ||
Product Version | 3.2.2 | ||||
Summary | 0002298: Win32 Cloaking Modules | ||||
Description | It seems cloaking modules on Windows are still sensitive to SSL and non-SSL, even though they are not supposed to be... When I ran Dependancy Walker on it, the MD5_* stuff came up as "unknown procedures" or somthing. I will attach some of the DW output if needed. | ||||
Tags | No tags attached. | ||||
3rd party modules | |||||
|
Could well be. If OpenSSL is not available, our internal routines are used (solar designers md5 implementation, src/md5.c). If OpenSSL is available, the OpenSSL routines are used. These are binary incompatible, so it could well be that mixing it like in this case will lead to crashes. |
|
Could it be possible to have the module detect OpenSSL, and based on that result depends on what the module calls? Such as: (SSL) Module: Is there OpenSSL? IRCd: Yes. Module calls OpenSSL routines... (Non-SSL) Module: Is there OpenSSL? IRCd: No. Module calls other MD5 routines... Perhaps this way it might be a little more compatible. If that can't be done, maybe the non-OpenSSL MD5 stuff can have the same names as the OpenSSL functions, then whatever is specified in makefile.win32 depends on what functions will be compiled into Unreal. |
|
Actually they have the same name, it's just the datastructures that are different ;). And since datastructures get created at compile time (talking about MD5_CTX) this is a problem (so even if you resolve any function name lookup problems you still have this problem). One possible solution to this is abstracting stuff and also just use something like MD5() that just returns a string and does not require the use of structs by the caller... Since we pretty much always do MD5_Init, MD5_Update, MD5_Final.. this shouldn't be a problem... OpenSSL has this function: unsigned char *MD5(const unsigned char *d, unsigned long n, unsigned char *md); It's just not provided by our other implementation (md5.c). If we would place some function in the core source, like: DoMD5(const unsigned char *d, unsigned long n, unsigned char *md) { #ifdef SSL return MD5(d, n, md); #else MD5_CTX... md5_init.. md5_update.. md5_final...return... #endif } And then modules/whatever could just use DoMD5()... then it should be solved. |
|
Done in .253 |
Date Modified | Username | Field | Change |
---|---|---|---|
2005-01-22 00:55 | Stealth | New Issue | |
2005-01-22 01:01 | syzop | Note Added: 0008882 | |
2005-01-22 01:11 | Stealth | Note Added: 0008883 | |
2005-01-22 11:38 | syzop | Note Added: 0008885 | |
2005-02-03 19:53 | syzop | Status | new => resolved |
2005-02-03 19:53 | syzop | Resolution | open => fixed |
2005-02-03 19:53 | syzop | Assigned To | => syzop |
2005-02-03 19:53 | syzop | Note Added: 0009013 |