[re-adding the list]
[please don't top-post on technical lists]

On 02/22/2011 02:14 PM, Markus Gothe wrote:
> The issue is with PIMd-NG (http://pimd-ng.sf.net).
...

I'm not sure if you emailed me privately because of sensitive content in
your email, but hopefully I've trimmed enough of your content to avoid
risking any public exposure of a security issue, if that was your intent
behind mailing just me instead of the list.

> 
> For some reason FreeBSD chose 'unsigned long' for the request part instead of 
> the 'signed int'-POSIX variant argument to ioctl().

We know.  And the configure test should be detecting that, as well as
letting rpl_ioctl work around that.

Maybe the real problem is that we need to ensure that our replacement
does not do sign extension.  Does this patch fix your issue?

diff --git i/lib/ioctl.c w/lib/ioctl.c
index 72f9f37..3ed4327 100644
--- i/lib/ioctl.c
+++ w/lib/ioctl.c
@@ -37,7 +37,11 @@ rpl_ioctl (int fd, int request, ... /* {void *,char
*} arg */)
   buf = va_arg (args, void *);
   va_end (args);

-  return ioctl (fd, request, buf);
+  /* Generally, this replacement function is in effect when the system
+     ioctl expects unsigned long int.  If request has the most
+     significant bit set, then we need to make sure that
+     sign-extension does not come into play.  */
+  return ioctl (fd, (unsigned long) request, buf);
 }

 #else /* mingw */



-- 
Eric Blake   ebl...@redhat.com    +1-801-349-2682
Libvirt virtualization library http://libvirt.org

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to