View Issue Details

IDProjectCategoryView StatusLast Update
0002475unrealircdpublic2011-12-25 14:03
ReporteraquanightAssigned Tosyzop 
PrioritynormalSeverityminorReproducibilityalways
Status resolvedResolutionfixed 
PlatformX86OSWindowsOS VersionXP Pro SP2
Product Version3.2.3 
Target VersionFixed in Version3.2.8 
Summary0002475: [Win32] Absolute module path (C:\etc) in loadmodule gives "the specified module cannot be found."
DescriptionIn the conf:

loadmodule "C:\\Documents and Settings\\Thomas\\My Documents\\callerid.dll";

From the command prompt:

C:\Program Files\Unreal3.2>dir "C:\Documents and Settings\Thomas\My Documents\ca
llerid.dll"
 Volume in drive C has no label.
 Volume Serial Number is FC27-ADC1

 Directory of C:\Documents and Settings\Thomas\My Documents

04/11/2005 03:47 PM 18,944 callerid.dll
               1 File(s) 18,944 bytes
               0 Dir(s) 3,739,508,736 bytes free

The error:

* Loading IRCd configuration ..
* unrealircd.conf:34: loadmodule C:\Documents and Settings\Thomas\My Documents\callerid.dll: failed to load: The specified module could not be found.

[error] IRCd configuration failed to load


The module most certainly exists, and it should load since I just compiled it :P .

I took a spelunk with VS.NET and found this in modules.c, line 280:

    if(!strchr(path, '/'))
    {
        path = MyMalloc(strlen(path) + 3);
        strcpy(path, "./");
        strcat(path, path_);
    }

If I'm reading that right, it'll stick a ./ in front if there is no / in the name. On win32, it should be checking for \ characters (eg, && !strchr(path, '\\') ) as well :) . Otherwise, a perfectly valid absolute path like C:\whatever.dll suddenly becomes ./C:\whatever.dll (??!)... yeah...
Steps To Reproduce- Compile/Install a module on win32, and in unrealircd.conf, load it using the absolute path (eg, C:\Program Files\Unreal3.2\modules\whatever.dll).
TagsNo tags attached.
3rd party modulesquite a few (obviously), but I can't see how they could affect this :)

Activities

Bock

2006-11-17 16:21

reporter   ~0012685

- if(!strchr(path, '/'))
+ if(!strchr(path, '/') && !strchr(path, ':')) /* check for ':' - detect full path on windows platform*/
 

Or... I don't have idea like check windows absolutly paths. Maybe: second and third characters must be ":\" or smth like that.

stskeeps

2007-04-27 03:29

reporter   ~0013774

Still an issue?

Bock

2007-04-27 04:20

reporter   ~0013788

yep...

stskeeps

2007-06-12 15:33

reporter   ~0014348

Patched in .2437

syzop

2011-07-19 17:46

administrator   ~0016710

or actually, 'has fix' ;)

syzop

2011-12-25 14:03

administrator   ~0016830

Fixed in an earlier version.

Issue History

Date Modified Username Field Change
2005-04-11 18:22 aquanight New Issue
2005-04-11 18:22 aquanight 3rd party modules => quite a few (obviously), but I can't see how they could affect this :)
2006-11-17 16:21 Bock Note Added: 0012685
2007-04-27 03:29 stskeeps Status new => acknowledged
2007-04-27 03:29 stskeeps Note Added: 0013774
2007-04-27 04:20 Bock Note Added: 0013788
2007-06-12 15:33 stskeeps Status acknowledged => resolved
2007-06-12 15:33 stskeeps Fixed in Version => 3.3-alpha0
2007-06-12 15:33 stskeeps Resolution open => fixed
2007-06-12 15:33 stskeeps Assigned To => stskeeps
2007-06-12 15:33 stskeeps Note Added: 0014348
2011-07-19 17:46 syzop Note Added: 0016710
2011-07-19 17:46 syzop Assigned To stskeeps =>
2011-07-19 17:46 syzop Status resolved => has patch
2011-12-25 14:03 syzop Note Added: 0016830
2011-12-25 14:03 syzop Status has patch => resolved
2011-12-25 14:03 syzop Fixed in Version 3.3-alpha0 => 3.2.8
2011-12-25 14:03 syzop Assigned To => syzop