Deleted Added
full compact
bindresvport.c (181110) bindresvport.c (181111)
1/* This file has be substantially modified from the original OpenBSD source */
2
1/* This file has be substantially modified from the original OpenBSD source */
2
3/* $OpenBSD: bindresvport.c,v 1.16 2005/04/01 07:44:03 otto Exp $ */
3/* $OpenBSD: bindresvport.c,v 1.17 2005/12/21 01:40:22 millert Exp $ */
4
5/*
6 * Copyright 1996, Jason Downs. All rights reserved.
7 * Copyright 1998, Theo de Raadt. All rights reserved.
8 * Copyright 2000, Damien Miller. All rights reserved.
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions

--- 37 unchanged lines hidden (view full) ---

49/*
50 * Bind a socket to a privileged IP port
51 */
52int
53bindresvport_sa(int sd, struct sockaddr *sa)
54{
55 int error, af;
56 struct sockaddr_storage myaddr;
4
5/*
6 * Copyright 1996, Jason Downs. All rights reserved.
7 * Copyright 1998, Theo de Raadt. All rights reserved.
8 * Copyright 2000, Damien Miller. All rights reserved.
9 *
10 * Redistribution and use in source and binary forms, with or without
11 * modification, are permitted provided that the following conditions

--- 37 unchanged lines hidden (view full) ---

49/*
50 * Bind a socket to a privileged IP port
51 */
52int
53bindresvport_sa(int sd, struct sockaddr *sa)
54{
55 int error, af;
56 struct sockaddr_storage myaddr;
57 struct sockaddr_in *sin;
58 struct sockaddr_in6 *sin6;
57 struct sockaddr_in *in;
58 struct sockaddr_in6 *in6;
59 u_int16_t *portp;
60 u_int16_t port;
61 socklen_t salen;
62 int i;
63
64 if (sa == NULL) {
65 memset(&myaddr, 0, sizeof(myaddr));
66 sa = (struct sockaddr *)&myaddr;
67
68 if (getsockname(sd, sa, &salen) == -1)
69 return -1; /* errno is correctly set */
70
71 af = sa->sa_family;
72 memset(&myaddr, 0, salen);
73 } else
74 af = sa->sa_family;
75
76 if (af == AF_INET) {
59 u_int16_t *portp;
60 u_int16_t port;
61 socklen_t salen;
62 int i;
63
64 if (sa == NULL) {
65 memset(&myaddr, 0, sizeof(myaddr));
66 sa = (struct sockaddr *)&myaddr;
67
68 if (getsockname(sd, sa, &salen) == -1)
69 return -1; /* errno is correctly set */
70
71 af = sa->sa_family;
72 memset(&myaddr, 0, salen);
73 } else
74 af = sa->sa_family;
75
76 if (af == AF_INET) {
77 sin = (struct sockaddr_in *)sa;
77 in = (struct sockaddr_in *)sa;
78 salen = sizeof(struct sockaddr_in);
78 salen = sizeof(struct sockaddr_in);
79 portp = &sin->sin_port;
79 portp = &in->sin_port;
80 } else if (af == AF_INET6) {
80 } else if (af == AF_INET6) {
81 sin6 = (struct sockaddr_in6 *)sa;
81 in6 = (struct sockaddr_in6 *)sa;
82 salen = sizeof(struct sockaddr_in6);
82 salen = sizeof(struct sockaddr_in6);
83 portp = &sin6->sin6_port;
83 portp = &in6->sin6_port;
84 } else {
85 errno = EPFNOSUPPORT;
86 return (-1);
87 }
88 sa->sa_family = af;
89
90 port = ntohs(*portp);
91 if (port == 0)

--- 27 unchanged lines hidden ---
84 } else {
85 errno = EPFNOSUPPORT;
86 return (-1);
87 }
88 sa->sa_family = af;
89
90 port = ntohs(*portp);
91 if (port == 0)

--- 27 unchanged lines hidden ---