From owner-freebsd-ports-bugs@FreeBSD.ORG Sun Jul 22 23:30:04 2007 Return-Path: Delivered-To: freebsd-ports-bugs@hub.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 0AA5316A41F for ; Sun, 22 Jul 2007 23:30:04 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (freefall.freebsd.org [IPv6:2001:4f8:fff6::28]) by mx1.freebsd.org (Postfix) with ESMTP id D5BCC13C45E for ; Sun, 22 Jul 2007 23:30:03 +0000 (UTC) (envelope-from gnats@FreeBSD.org) Received: from freefall.freebsd.org (gnats@localhost [127.0.0.1]) by freefall.freebsd.org (8.14.1/8.14.1) with ESMTP id l6MNU3k8084953 for ; Sun, 22 Jul 2007 23:30:03 GMT (envelope-from gnats@freefall.freebsd.org) Received: (from gnats@localhost) by freefall.freebsd.org (8.14.1/8.14.1/Submit) id l6MNU31d084952; Sun, 22 Jul 2007 23:30:03 GMT (envelope-from gnats) Resent-Date: Sun, 22 Jul 2007 23:30:03 GMT Resent-Message-Id: <200707222330.l6MNU31d084952@freefall.freebsd.org> Resent-From: FreeBSD-gnats-submit@FreeBSD.org (GNATS Filer) Resent-To: freebsd-ports-bugs@FreeBSD.org Resent-Reply-To: FreeBSD-gnats-submit@FreeBSD.org, Dmitrij Tejblum Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 4FB0E16A419 for ; Sun, 22 Jul 2007 23:24:00 +0000 (UTC) (envelope-from dima@tejblum.pp.ru) Received: from arc.yandex.ru (arc.yandex.ru [213.180.193.125]) by mx1.freebsd.org (Postfix) with ESMTP id BE96013C45B for ; Sun, 22 Jul 2007 23:23:59 +0000 (UTC) (envelope-from dima@tejblum.pp.ru) Received: from arc.yandex.ru (localhost [127.0.0.1]) by arc.yandex.ru (8.12.6/8.12.6) with ESMTP id l6MN03N6070412 for ; Mon, 23 Jul 2007 03:00:03 +0400 (MSD) (envelope-from dima@tejblum.pp.ru) Received: (from uucp@localhost) by arc.yandex.ru (8.12.6/8.12.6/Submit) with UUCP id l6MN03mJ070411 for FreeBSD-gnats-submit@freebsd.org; Mon, 23 Jul 2007 03:00:03 +0400 (MSD) Received: from tejblum.pp.ru (localhost [127.0.0.1]) by tejblum.pp.ru (8.14.1/8.13.8) with ESMTP id l6MMtOwr028792 for ; Mon, 23 Jul 2007 02:55:24 +0400 (MSD) (envelope-from dima@tejblum.pp.ru) Received: (from dima@localhost) by tejblum.pp.ru (8.14.1/8.13.8/Submit) id l6MMtNOm028791; Mon, 23 Jul 2007 02:55:23 +0400 (MSD) (envelope-from dima) Message-Id: <200707222255.l6MMtNOm028791@tejblum.pp.ru> Date: Mon, 23 Jul 2007 02:55:23 +0400 (MSD) From: Dmitrij Tejblum To: FreeBSD-gnats-submit@FreeBSD.org X-Send-Pr-Version: 3.113 Cc: Subject: ports/114819: [patch] x11-toolkits/swt-devel crashes in realpath when invoke FileDialog X-BeenThere: freebsd-ports-bugs@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list Reply-To: Dmitrij Tejblum List-Id: Ports bug reports List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sun, 22 Jul 2007 23:30:04 -0000 >Number: 114819 >Category: ports >Synopsis: [patch] x11-toolkits/swt-devel crashes in realpath when invoke FileDialog >Confidential: no >Severity: serious >Priority: low >Responsible: freebsd-ports-bugs >State: open >Quarter: >Keywords: >Date-Required: >Class: sw-bug >Submitter-Id: current-users >Arrival-Date: Sun Jul 22 23:30:02 GMT 2007 >Closed-Date: >Last-Modified: >Originator: Dmitrij Tejblum >Release: FreeBSD 6.2-STABLE i386 >Organization: >Environment: >Description: When an java application using SWT toolkit (from the swt-devel port) open FileDialog, JVM crashes in the realpath() function. It's because SWT rely on a linux extension not present in FreeBSD. >How-To-Repeat: >Fix: Put following patch to the files directory (and bump PORTEPOCH): --- ./os.c 2007-07-22 11:53:22.000000000 +0400 +++ ./os.c 2007-07-22 11:57:56.000000000 +0400 @@ -17397,11 +17397,16 @@ jint rc = 0; OS_NATIVE_ENTER(env, that, realpath_FUNC); if (arg0) if ((lparg0 = (*env)->GetByteArrayElements(env, arg0, NULL)) == NULL) goto fail; - if (arg1) if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail; + if (arg1) { + if ((lparg1 = (*env)->GetByteArrayElements(env, arg1, NULL)) == NULL) goto fail; + } else + lparg1 = malloc(PATH_MAX); rc = (jint)realpath((const char *)lparg0, (char *)lparg1); fail: if (arg1 && lparg1) (*env)->ReleaseByteArrayElements(env, arg1, lparg1, 0); if (arg0 && lparg0) (*env)->ReleaseByteArrayElements(env, arg0, lparg0, 0); + if (!arg1 && lparg1 && rc == 0) + free(lparg1); OS_NATIVE_EXIT(env, that, realpath_FUNC); return rc; } >Release-Note: >Audit-Trail: >Unformatted: