]> Shamusworld >> Repos - rln/blobdiff - rln.c
Fix to test to see if include paths actually exist.
[rln] / rln.c
diff --git a/rln.c b/rln.c
index a117a86b27fc2e75fa0e4beb1ddf22230e4f57a3..23b2fea77f8df642a65f53f03cb118a47c32f0c8 100644 (file)
--- a/rln.c
+++ b/rln.c
@@ -2448,7 +2448,8 @@ int LoadArchive(char * fname, int fd)
                }
 
                // Check to see if a long filename was requested
-               if (objName[0] == 0x20)
+               // N.B.: " " is for GNU archives, and "/" is for BSD archives
+               if ((objName[0] == 0x20) || (objName[0] == '/'))
                {
                        uint32_t fnSize = atoi(objName + 1);
 
@@ -3114,6 +3115,21 @@ int main(int argc, char * argv[])
                ExitLinker();
        }
 
+       // Check to see if include paths actually exist
+       if (strlen(libdir) > 0)
+       {
+               DIR * test = opendir(libdir);
+
+               if (test == NULL)
+               {
+                       printf("Invalid include path: %s\n", libdir);
+                       errflag = 1;
+                       ExitLinker();
+               }
+
+               closedir(test);
+       }
+
        if (!zflag && !vflag)
        {
                ShowVersion();                          // Display version information