Commit 01d2bc6d authored by Michal 'vorner' Vaner's avatar Michal 'vorner' Vaner
Browse files

[805] Misc fixes

* Close the socket after sending from the creator, so it doesn't leak
  (but it doesn't seem to help :-().
* Correct range for the token numbers, so they are harder to guess
* Set the socket as reuse address
parent ef021f77
......@@ -35,6 +35,10 @@ get_sock(const int type, struct sockaddr *bind_addr, const socklen_t addr_len)
if (sock == -1) {
return -1;
}
const int on(1);
if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on)) == -1) {
return -2; // This is part of the binding process, so it's a bind error
}
if (bind(sock, bind_addr, addr_len) == -1) {
return -2;
}
......@@ -124,6 +128,8 @@ run(const int input_fd, const int output_fd, const get_sock_t get_sock,
WRITE("S", 1);
// FIXME: Check the output and write a test for it
send_fd(output_fd, result);
// Don't leak the socket
close(result);
} else {
WRITE("E", 1);
switch (result) {
......
......@@ -205,9 +205,9 @@ class Cache:
raise ShareError("Cached socket not compatible with mode " +
share_mode + " and name " + share_name)
# Grab yet unused token
token = 't' + str(random.randint(0, 2^32-1))
token = 't' + str(random.randint(0, 2 ** 32-1))
while token in self._live_tokens:
token = 't' + str(random.randint(0, 2^32-1))
token = 't' + str(random.randint(0, 2 ** 32-1))
self._waiting_tokens[token] = socket
self._live_tokens.add(token)
socket.shares[token] = (share_mode, share_name)
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment