Revision be09ac41 linux-user/syscall.c
b/linux-user/syscall.c | ||
---|---|---|
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 | 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 | 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 | 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 | 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 | 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 | 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 |
} |
Also available in: Unified diff