projects
/
swifty.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
7742a59
)
raw: Add "is bound" check to sw_socket and sw_bind.
author
Razvan Deaconescu
<razvan.deaconescu@cs.pub.ro>
Sat, 21 May 2011 10:26:03 +0000
(13:26 +0300)
committer
Razvan Deaconescu
<razvan.deaconescu@cs.pub.ro>
Sat, 21 May 2011 10:28:20 +0000
(13:28 +0300)
src/raw/swift_raw.c
patch
|
blob
|
history
diff --git
a/src/raw/swift_raw.c
b/src/raw/swift_raw.c
index
2761b21
..
2bb0b51
100644
(file)
--- a/
src/raw/swift_raw.c
+++ b/
src/raw/swift_raw.c
@@
-199,6
+199,9
@@
int sw_socket(int __domain, int __type, int __protocol)
/* Socket is fully open. */
list->rw_state = STATE_NO_SHUT;
/* Socket is fully open. */
list->rw_state = STATE_NO_SHUT;
+ /* Socket is not bound. */
+ list->bind_state = STATE_NOTBOUND;
+
return s;
list_add_err:
return s;
list_add_err:
@@
-215,6
+218,13
@@
sock_err:
int sw_bind(int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len)
{
struct sock_list *list;
int sw_bind(int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len)
{
struct sock_list *list;
+ int rc;
+
+ rc = list_socket_is_bound(__fd);
+ if (rc == 1) {
+ errno = EINVAL;
+ goto socket_bound_err;
+ }
/* Check whether address is already in use. */
list = list_elem_from_address(__addr);
/* Check whether address is already in use. */
list = list_elem_from_address(__addr);
@@
-232,6
+242,7
@@
int sw_bind(int __fd, __CONST_SOCKADDR_ARG __addr, socklen_t __len)
return 0;
return 0;
+socket_bound_err:
list_update_err:
list_elem_err:
return -1;
list_update_err:
list_elem_err:
return -1;