[Qemu-devel] [patch] use socklen_t with getsockopt()

2007-06-23 Thread Mike Frysinger
obvious fixup ... getsockopt() takes a socklen_t, not an int
-mike


signature.asc
Description: This is a digitally signed message part.
--- linux-user/syscall.c
+++ linux-user/syscall.c
@@ -642,7 +642,8 @@ static long do_setsockopt(int sockfd, in
 static long do_getsockopt(int sockfd, int level, int optname, 
   target_ulong optval, target_ulong optlen)
 {
-int len, lv, val, ret;
+int len, val, ret;
+socklen_t lv;
 
 switch(level) {
 case TARGET_SOL_SOCKET:
@@ -665,7 +666,7 @@ static long do_getsockopt(int sockfd, in
 len = tget32(optlen);
 if (len  0)
 return -EINVAL;
-lv = sizeof(int);
+lv = sizeof(val);
 ret = get_errno(getsockopt(sockfd, level, optname, val, lv));
 if (ret  0)
 return ret;
@@ -698,7 +699,7 @@ static long do_getsockopt(int sockfd, in
 len = tget32(optlen);
 if (len  0)
 return -EINVAL;
-lv = sizeof(int);
+lv = sizeof(val);
 ret = get_errno(getsockopt(sockfd, level, optname, val, lv));
 if (ret  0)
 return ret;


Re: [Qemu-devel] [patch] use socklen_t with getsockopt()

2007-04-10 Thread Jamie Lokier
Mike Frysinger wrote:
 On Thursday 05 April 2007, Jamie Lokier wrote:
  Sylvain Petreolle wrote:
   Was incorrect before too, since it was sizeof(int) in the first place ?
 
  The old type of val was int, so it made no different to the size.
  When val is of type socklen_t, it matters.
 
 val is still of type int which is fine ... socklen_t is for the variable 
 which 
 describes the length of val

Yes, thanks for pointing it out.

-- Jamie




Re: [Qemu-devel] [patch] use socklen_t with getsockopt()

2007-04-06 Thread Mike Frysinger
On Thursday 05 April 2007, Jamie Lokier wrote:
 Sylvain Petreolle wrote:
  Was incorrect before too, since it was sizeof(int) in the first place ?

 The old type of val was int, so it made no different to the size.
 When val is of type socklen_t, it matters.

val is still of type int which is fine ... socklen_t is for the variable which 
describes the length of val
-mike


pgpV7xFU8CXKi.pgp
Description: PGP signature


Re: [Qemu-devel] [patch] use socklen_t with getsockopt()

2007-04-06 Thread Paul Brook
On Friday 06 April 2007 22:51, Mike Frysinger wrote:
 On Thursday 05 April 2007, Jamie Lokier wrote:
  Sylvain Petreolle wrote:
   Was incorrect before too, since it was sizeof(int) in the first place ?
 
  The old type of val was int, so it made no different to the size.
  When val is of type socklen_t, it matters.

 val is still of type int which is fine ... socklen_t is for the variable
 which describes the length of val

It's worth noting that socklen_t should be int anyway.
From the accept(2) manpage:

NOTE
   The  third  argument  of accept() was originally declared as an `int *'
   (and is that under libc4 and libc5 and on many other systems  like  4.x
   BSD,  SunOS 4, SGI); a POSIX.1g draft standard wanted to change it into
   a `size_t *', and that is what it is for SunOS 5.  Later  POSIX  drafts
   have `socklen_t *', and so do the Single Unix Specification and glibc2.
   Quoting Linus Torvalds:

   _Any_ sane library _must_ have socklen_t be the same  size  as  int.
   Anything  else  breaks any BSD socket layer stuff.  POSIX initially did
   make it a size_t, and I (and hopefully others, but  obviously  not  too
   many)  complained  to  them  very loudly indeed.  Making it a size_t is
   completely broken, exactly because size_t very seldom is the same  size
   as  int  on  64-bit architectures, for example.  And it has to be the
   same size as int because that's what the  BSD  socket  interface  is.
   Anyway,   the   POSIX   people  eventually  got  a  clue,  and  created
   socklen_t.  They shouldn't have touched it in the  first  place,  but
   once  they  did  they felt it had to have a named type for some unfath-
   omable reason (probably somebody didn't like losing  face  over  having
   done  the  original  stupid  thing, so they silently just renamed their
   blunder).




Re : [Qemu-devel] [patch] use socklen_t with getsockopt()

2007-04-05 Thread Sylvain Petreolle
Was incorrect before too, since it was sizeof(int) in the first place ?

Sylvain
 
- Message d'origine 
De : Thiemo Seufer [EMAIL PROTECTED]
À : Mike Frysinger [EMAIL PROTECTED]
Cc : Qemu-devel@nongnu.org
Envoyé le : Dimanche, 1 Avril 2007, 20h43mn 02s
Objet : Re: [Qemu-devel] [patch] use socklen_t with getsockopt()


Mike Frysinger wrote:
 obvious fixup ... getsockopt() takes a socklen_t, not an int
 -mike

This is incorrect. Its initial value is sizeof(val).


Thiemo




Re: Re : [Qemu-devel] [patch] use socklen_t with getsockopt()

2007-04-05 Thread Jamie Lokier
Sylvain Petreolle wrote:
 Was incorrect before too, since it was sizeof(int) in the first place ?

The old type of val was int, so it made no different to the size.
When val is of type socklen_t, it matters.

-- Jamie




Re: [Qemu-devel] [patch] use socklen_t with getsockopt()

2007-04-01 Thread Thiemo Seufer
Mike Frysinger wrote:
 obvious fixup ... getsockopt() takes a socklen_t, not an int
 -mike

This is incorrect. Its initial value is sizeof(val).


Thiemo




Re: [Qemu-devel] [patch] use socklen_t with getsockopt()

2007-04-01 Thread Mike Frysinger
On Sunday 01 April 2007, Thiemo Seufer wrote:
 Mike Frysinger wrote:
  obvious fixup ... getsockopt() takes a socklen_t, not an int

 This is incorrect. Its initial value is sizeof(val).

attached
-mike


pgpxUDF1iyg7E.pgp
Description: PGP signature
--- linux-user/syscall.c
+++ linux-user/syscall.c
@@ -642,7 +642,8 @@ static long do_setsockopt(int sockfd, in
 static long do_getsockopt(int sockfd, int level, int optname, 
   target_ulong optval, target_ulong optlen)
 {
-int len, lv, val, ret;
+int len, val, ret;
+socklen_t lv;
 
 switch(level) {
 case TARGET_SOL_SOCKET:
@@ -665,7 +666,7 @@ static long do_getsockopt(int sockfd, in
 len = tget32(optlen);
 if (len  0)
 return -EINVAL;
-lv = sizeof(int);
+lv = sizeof(val);
 ret = get_errno(getsockopt(sockfd, level, optname, val, lv));
 if (ret  0)
 return ret;
@@ -698,7 +699,7 @@ static long do_getsockopt(int sockfd, in
 len = tget32(optlen);
 if (len  0)
 return -EINVAL;
-lv = sizeof(int);
+lv = sizeof(val);
 ret = get_errno(getsockopt(sockfd, level, optname, val, lv));
 if (ret  0)
 return ret;


[Qemu-devel] [patch] use socklen_t with getsockopt()

2007-03-31 Thread Mike Frysinger
obvious fixup ... getsockopt() takes a socklen_t, not an int
-mike


pgpmFlADRziAp.pgp
Description: PGP signature
--- linux-user/syscall.c
+++ linux-user/syscall.c
@@ -642,7 +642,8 @@ static long do_setsockopt(int sockfd, in
 static long do_getsockopt(int sockfd, int level, int optname, 
   target_ulong optval, target_ulong optlen)
 {
-int len, lv, val, ret;
+int len, val, ret;
+socklen_t lv;
 
 switch(level) {
 case TARGET_SOL_SOCKET:
@@ -665,7 +666,7 @@ static long do_getsockopt(int sockfd, in
 len = tget32(optlen);
 if (len  0)
 return -EINVAL;
-lv = sizeof(int);
+lv = sizeof(lv);
 ret = get_errno(getsockopt(sockfd, level, optname, val, lv));
 if (ret  0)
 return ret;
@@ -698,7 +699,7 @@ static long do_getsockopt(int sockfd, in
 len = tget32(optlen);
 if (len  0)
 return -EINVAL;
-lv = sizeof(int);
+lv = sizeof(lv);
 ret = get_errno(getsockopt(sockfd, level, optname, val, lv));
 if (ret  0)
 return ret;