* getsockname1() - Get socket name. */
| 1349 | * getsockname1() - Get socket name. |
| 1350 | */ |
| 1351 | static int |
| 1352 | getsockname1(struct thread *td, struct getsockname_args *uap, int compat) |
| 1353 | { |
| 1354 | struct sockaddr *sa; |
| 1355 | socklen_t len; |
| 1356 | int error; |
| 1357 | |
| 1358 | error = copyin(uap->alen, &len, sizeof(len)); |
| 1359 | if (error != 0) |
| 1360 | return (error); |
| 1361 | |
| 1362 | error = kern_getsockname(td, uap->fdes, &sa, &len); |
| 1363 | if (error != 0) |
| 1364 | return (error); |
| 1365 | |
| 1366 | if (len != 0) { |
| 1367 | #ifdef COMPAT_OLDSOCK |
| 1368 | if (compat && SV_PROC_FLAG(td->td_proc, SV_AOUT)) |
| 1369 | ((struct osockaddr *)sa)->sa_family = sa->sa_family; |
| 1370 | #endif |
| 1371 | error = copyout(sa, uap->asa, (u_int)len); |
| 1372 | } |
| 1373 | free(sa, M_SONAME); |
| 1374 | if (error == 0) |
| 1375 | error = copyout(&len, uap->alen, sizeof(len)); |
| 1376 | return (error); |
| 1377 | } |
| 1378 | |
| 1379 | int |
| 1380 | kern_getsockname(struct thread *td, int fd, struct sockaddr **sa, |
no test coverage detected