Commit be09ac4194bd0a61c0d9412c32431fbe2273cba1
1 parent
607175e0
linux-user: removed unnecessary MAX_SOCK_ADDR checks for socket syscalls
- This check is not needed because kernel will check whether given buffer is too small and there is no upper limit for size of the buffer. From: Mika Westerberg <mika.westerberg@iki.fi> Signed-off-by: Riku Voipio <riku.voipio@iki.fi> Signed-off-by: Aurelien Jarno <aurelien@aurel32.net> git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@7117 c046a42c-6fe2-441c-8c8c-71466251a162
Showing
1 changed file
with
7 additions
and
10 deletions
linux-user/syscall.c
... | ... | @@ -1208,16 +1208,13 @@ static abi_long do_socket(int domain, int type, int protocol) |
1208 | 1208 | return get_errno(socket(domain, type, protocol)); |
1209 | 1209 | } |
1210 | 1210 | |
1211 | -/* MAX_SOCK_ADDR from linux/net/socket.c */ | |
1212 | -#define MAX_SOCK_ADDR 128 | |
1213 | - | |
1214 | 1211 | /* do_bind() Must return target values and target errnos. */ |
1215 | 1212 | static abi_long do_bind(int sockfd, abi_ulong target_addr, |
1216 | 1213 | socklen_t addrlen) |
1217 | 1214 | { |
1218 | 1215 | void *addr; |
1219 | 1216 | |
1220 | - if (addrlen < 0 || addrlen > MAX_SOCK_ADDR) | |
1217 | + if (addrlen < 0) | |
1221 | 1218 | return -TARGET_EINVAL; |
1222 | 1219 | |
1223 | 1220 | addr = alloca(addrlen+1); |
... | ... | @@ -1232,7 +1229,7 @@ static abi_long do_connect(int sockfd, abi_ulong target_addr, |
1232 | 1229 | { |
1233 | 1230 | void *addr; |
1234 | 1231 | |
1235 | - if (addrlen < 0 || addrlen > MAX_SOCK_ADDR) | |
1232 | + if (addrlen < 0) | |
1236 | 1233 | return -TARGET_EINVAL; |
1237 | 1234 | |
1238 | 1235 | addr = alloca(addrlen); |
... | ... | @@ -1307,7 +1304,7 @@ static abi_long do_accept(int fd, abi_ulong target_addr, |
1307 | 1304 | if (get_user_u32(addrlen, target_addrlen_addr)) |
1308 | 1305 | return -TARGET_EFAULT; |
1309 | 1306 | |
1310 | - if (addrlen < 0 || addrlen > MAX_SOCK_ADDR) | |
1307 | + if (addrlen < 0) | |
1311 | 1308 | return -TARGET_EINVAL; |
1312 | 1309 | |
1313 | 1310 | addr = alloca(addrlen); |
... | ... | @@ -1332,7 +1329,7 @@ static abi_long do_getpeername(int fd, abi_ulong target_addr, |
1332 | 1329 | if (get_user_u32(addrlen, target_addrlen_addr)) |
1333 | 1330 | return -TARGET_EFAULT; |
1334 | 1331 | |
1335 | - if (addrlen < 0 || addrlen > MAX_SOCK_ADDR) | |
1332 | + if (addrlen < 0) | |
1336 | 1333 | return -TARGET_EINVAL; |
1337 | 1334 | |
1338 | 1335 | addr = alloca(addrlen); |
... | ... | @@ -1360,7 +1357,7 @@ static abi_long do_getsockname(int fd, abi_ulong target_addr, |
1360 | 1357 | if (get_user_u32(addrlen, target_addrlen_addr)) |
1361 | 1358 | return -TARGET_EFAULT; |
1362 | 1359 | |
1363 | - if (addrlen < 0 || addrlen > MAX_SOCK_ADDR) | |
1360 | + if (addrlen < 0) | |
1364 | 1361 | return -TARGET_EINVAL; |
1365 | 1362 | |
1366 | 1363 | addr = alloca(addrlen); |
... | ... | @@ -1398,7 +1395,7 @@ static abi_long do_sendto(int fd, abi_ulong msg, size_t len, int flags, |
1398 | 1395 | void *host_msg; |
1399 | 1396 | abi_long ret; |
1400 | 1397 | |
1401 | - if (addrlen < 0 || addrlen > MAX_SOCK_ADDR) | |
1398 | + if (addrlen < 0) | |
1402 | 1399 | return -TARGET_EINVAL; |
1403 | 1400 | |
1404 | 1401 | host_msg = lock_user(VERIFY_READ, msg, len, 1); |
... | ... | @@ -1433,7 +1430,7 @@ static abi_long do_recvfrom(int fd, abi_ulong msg, size_t len, int flags, |
1433 | 1430 | ret = -TARGET_EFAULT; |
1434 | 1431 | goto fail; |
1435 | 1432 | } |
1436 | - if (addrlen < 0 || addrlen > MAX_SOCK_ADDR) { | |
1433 | + if (addrlen < 0) { | |
1437 | 1434 | ret = -TARGET_EINVAL; |
1438 | 1435 | goto fail; |
1439 | 1436 | } | ... | ... |