ports/116757: ushare is broken for amd64
Josh Carroll
josh.carroll at gmail.com
Sun Sep 30 05:20:02 UTC 2007
>Number: 116757
>Category: ports
>Synopsis: ushare is broken for amd64
>Confidential: no
>Severity: critical
>Priority: medium
>Responsible: freebsd-ports-bugs
>State: open
>Quarter:
>Keywords:
>Date-Required:
>Class: sw-bug
>Submitter-Id: current-users
>Arrival-Date: Sun Sep 30 05:20:01 GMT 2007
>Closed-Date:
>Last-Modified:
>Originator: Josh Carroll
>Release: 6.2-RELEASE-p7 amd64
>Organization:
n/a
>Environment:
FreeBSD pflog.net 6.2-RELEASE-p7 FreeBSD 6.2-RELEASE-p7 #0: Sat Sep 29 14:50:41 EDT 2007 root at pflog.net:/usr/obj/usr/src/sys/PFLOG64 amd64
>Description:
The ushare port has a bug in the code that prevents it from working properly on an amd64 installation of 6.2-RELEASE.
When ushare is run, it fails with:
pflog# /usr/local/etc/rc.d/ushare start
Starting ushare.
sysctl: No such file or directory
I tracked this down to the sysctl calls in ushare.c, which are passing &len with len defined as an int. In fact, the compiler generates warnings for these:
ushare.c: In function `create_udn':
ushare.c:413: warning: passing arg 4 of `sysctl' from incompatible pointer type
ushare.c:420: warning: passing arg 4 of `sysctl' from incompatible pointer type
len should be of type size_t, not int. Defining len as size_t fixes the problem.
Thanks,
Josh
>How-To-Repeat:
cd /usr/ports/net/ushare
make && make install
/usr/local/etc/rc.d/ushare forcestart
>Fix:
Attached is a patch which changes the type of len from int to size_t in the create_udn function.
Patch attached with submission follows:
--- src/ushare.c.old Sun Sep 30 01:03:37 2007
+++ src/ushare.c Sun Sep 30 01:03:57 2007
@@ -386,7 +386,8 @@
unsigned char *ptr;
#if (defined(BSD) || defined(__FreeBSD__))
- int mib[6], len;
+ int mib[6];
+ size_t len;
struct if_msghdr *ifm;
struct sockaddr_dl *sdl;
#else /* Linux */
>Release-Note:
>Audit-Trail:
>Unformatted:
More information about the freebsd-ports-bugs
mailing list