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

Attachment: 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;

Reply via email to