This is the mail archive of the java-patches@gcc.gnu.org mailing list for the Java project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Fwd: Patch SharedLibLoader new exception and library path termination]


Here it is with a ChangeLog

Did not null terminate library path name, causing library to not be found.
Added UnsatisfiedLinkError if dlopen returned null.

Index: libjava/ChangeLog
===================================================================
RCS file: /cvsroot/gcc/gcc/libjava/ChangeLog,v
retrieving revision 1.2017
diff -c -3 -p -r1.2017 ChangeLog
*** libjava/ChangeLog 8 Jul 2003 04:49:16 -0000 1.2017
--- libjava/ChangeLog 8 Jul 2003 14:44:00 -0000
***************
*** 1,3 ****
--- 1,7 ----
+ 2003-07-08 Steve Pribyl <steve@netfuel.com.>
+ * gnu/gcj/runtime/natSharedLibLoader.cc: Added UnsatisfiedLinkError to SharedLibLoader if dlopen returned null
+ * gnu.gcj.runtime.SharedLibLoader: Corrected unterminated string in library name when calling dlopen
+
2003-07-07 Adam Megacz <adam@xwt.org>


* posix.cc: added #include<stdio.h>
Index: libjava/gnu/gcj/runtime/SharedLibLoader.java
===================================================================
RCS file: /cvsroot/gcc/gcc/libjava/gnu/gcj/runtime/SharedLibLoader.java,v
retrieving revision 1.1
diff -c -3 -p -r1.1 SharedLibLoader.java
*** libjava/gnu/gcj/runtime/SharedLibLoader.java 29 Sep 2001 19:16:26 -0000 1.1
--- libjava/gnu/gcj/runtime/SharedLibLoader.java 8 Jul 2003 14:44:00 -0000
*************** public class SharedLibLoader extends Cla
*** 45,56 ****
init(libname, 0);
}


!   void init(String libname, int flags)
!   {
!     init(libname.getBytes(), flags);
!   }
!
!   native void init(byte[] libname, int flags);

    public Class loadClass(String name)
      throws ClassNotFoundException
--- 45,51 ----
      init(libname, 0);
    }

! native void init(String libname, int flags);

public Class loadClass(String name)
throws ClassNotFoundException
Index: libjava/gnu/gcj/runtime/natSharedLibLoader.cc
===================================================================
RCS file: /cvsroot/gcc/gcc/libjava/gnu/gcj/runtime/natSharedLibLoader.cc,v
retrieving revision 1.2
diff -c -3 -p -r1.2 natSharedLibLoader.cc
*** libjava/gnu/gcj/runtime/natSharedLibLoader.cc 24 Oct 2001 07:00:19 -0000 1.2
--- libjava/gnu/gcj/runtime/natSharedLibLoader.cc 8 Jul 2003 14:44:00 -0000
*************** details. */
*** 14,19 ****
--- 14,20 ----
#include <gnu/gcj/runtime/SharedLibLoader.h>
#include <java/io/IOException.h>
#include <java/lang/UnsupportedOperationException.h>
+ #include <java/lang/UnsatisfiedLinkError.h>


  #ifdef HAVE_DLOPEN
  #include <dlfcn.h>
*************** struct SharedLibDummy
*** 45,54 ****
  #endif

  void
! gnu::gcj::runtime::SharedLibLoader::init(jbyteArray libname, jint flags)
  {
  #ifdef HAVE_DLOPEN
!   char *lname = (char*) elements(libname);
    if (flags==0)
      flags = RTLD_LAZY;
    JvSynchronize dummy1(&java::lang::Class::class$);
--- 46,59 ----
  #endif

void
! gnu::gcj::runtime::SharedLibLoader::init(jstring libname, jint flags)
{
#ifdef HAVE_DLOPEN
! jint len = _Jv_GetStringUTFLength (libname);
! char lname[len + 1];
! JvGetStringUTFRegion (libname, 0, libname->length(), lname);
! lname[len] = '\0';
!
if (flags==0)
flags = RTLD_LAZY;
JvSynchronize dummy1(&java::lang::Class::class$);
*************** gnu::gcj::runtime::SharedLibLoader::init
*** 59,68 ****
if (h == NULL)
{
const char *msg = dlerror();
}
handler = (gnu::gcj::RawData*) h;
#else
! const char *msg = "ShareedLibLoader is not supported on this platform";
throw new java::lang::UnsupportedOperationException(JvNewStringLatin1(msg));
#endif
}
--- 64,77 ----
if (h == NULL)
{
const char *msg = dlerror();
+ jstring str = JvNewStringLatin1 (lname);
+ str = str->concat (JvNewStringLatin1 (": "));
+ str = str->concat (JvNewStringLatin1 (msg));
+ throw new java::lang::UnsatisfiedLinkError (str);
}
handler = (gnu::gcj::RawData*) h;
#else
! const char *msg = "SharedLibLoader is not supported on this platform";
throw new java::lang::UnsupportedOperationException(JvNewStringLatin1(msg));
#endif
}



-- Steve Pribyl Steve AT NetFuel dot com Computer Infrastructure Practitioner


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]