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;